]> git.saurik.com Git - apple/securityd.git/blob - src/flippers.h
securityd-27887.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 { tryingToFlipAConstWontWork(); }
61
62
63 //
64 // Basic flippers
65 //
66 void flip(uint32 &obj);
67 void flip(uint16 &obj);
68 void flip(sint32 &obj);
69 void flip(sint16 &obj);
70
71 template <class Base>
72 inline void flip(Base * &obj) { flip(&obj, sizeof(obj)); }
73
74
75 //
76 // The raw byte reversal flipper
77 //
78 void flip(void *addr, size_t size);
79
80
81 //
82 // Include automatically generated flipper declarations
83 //
84 #include "flip_gen.h"
85
86
87 } // end namespace flippers
88
89
90 #endif //_H_FLIPPERS