]> git.saurik.com Git - apple/securityd.git/blob - src/flippers.h
securityd-26674.tar.gz
[apple/securityd.git] / src / flippers.h
1 /*
2 * Copyright (c) 2003-2004 Apple Computer, Inc. All Rights Reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24
25 //
26 // process - track a single client process and its belongings
27 //
28 #ifndef _H_FLIPPERS
29 #define _H_FLIPPERS
30
31 #include <security_utilities/endian.h>
32 #include <security_utilities/debugging.h>
33
34 // various types we make flippers for
35 #include <Security/Authorization.h>
36 #include <security_cdsa_utilities/cssmlist.h>
37 #include <security_cdsa_utilities/cssmcred.h>
38 #include <security_cdsa_utilities/cssmacl.h>
39 #include <security_cdsa_utilities/cssmaclpod.h>
40 #include <security_cdsa_utilities/context.h>
41 #include <security_cdsa_utilities/cssmdb.h>
42
43
44 namespace Flippers {
45
46
47 //
48 // The default flipper does nothing
49 //
50 template <class T>
51 inline void flip(T &obj)
52 { }
53
54
55 //
56 // It's a bad idea to try to flip a const, so flag that
57 //
58 template <class T>
59 inline void flip(const T &);
60
61
62 //
63 // Basic flippers
64 //
65 void flip(uint32 &obj);
66 void flip(uint16 &obj);
67 void flip(sint32 &obj);
68 void flip(sint16 &obj);
69
70 template <class Base>
71 inline void flip(Base * &obj) { flip(&obj, sizeof(obj)); }
72
73
74 //
75 // The raw byte reversal flipper
76 //
77 void flip(void *addr, size_t size);
78
79
80 //
81 // Include automatically generated flipper declarations
82 //
83 #include "flip_gen.h"
84
85
86 } // end namespace flippers
87
88
89 #endif //_H_FLIPPERS