]> git.saurik.com Git - apple/security.git/blob - cdsa/mds/MDSSchema.h
Security-29.tar.gz
[apple/security.git] / cdsa / mds / MDSSchema.h
1 /*
2 * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved.
3 *
4 * The contents of this file constitute Original Code as defined in and are
5 * subject to the Apple Public Source License Version 1.2 (the 'License').
6 * You may not use this file except in compliance with the License. Please obtain
7 * a copy of the License at http://www.apple.com/publicsource and read it before
8 * using this file.
9 *
10 * This Original Code and all software distributed under the License are
11 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
12 * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
13 * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14 * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
15 * specific language governing rights and limitations under the License.
16 */
17
18
19 //
20 // MDSSchema.h
21 //
22 // Declarations of structures which define the schema, including attributes
23 // and indexes, for the standard tables that are part of the MDS database.
24 //
25
26 #ifndef _MDSSCHEMA_H
27 #define _MDSSCHEMA_H
28
29 #include <Security/cssmtype.h>
30
31 // Structure used to store information which is needed to create
32 // a relation with indexes.
33
34 struct RelationInfo {
35 CSSM_DB_RECORDTYPE relationId;
36 const char *relationName;
37 uint32 numAttributes;
38 const CSSM_DB_SCHEMA_ATTRIBUTE_INFO *attributes;
39 uint32 numIndexes;
40 const CSSM_DB_SCHEMA_INDEX_INFO *indexes;
41 };
42
43 // Macros used to simplify declarations of attributes and indexes.
44
45 #define SCHEMA_ATTRIBUTE(id, name, type) \
46 { id, #name, { 0, NULL }, CSSM_DB_ATTRIBUTE_FORMAT_ ## type }
47
48 #define UNIQUE_INDEX_ATTRIBUTE(attributeId) \
49 { attributeId, 0, CSSM_DB_INDEX_UNIQUE, CSSM_DB_INDEX_ON_ATTRIBUTE }
50
51 #define RELATION_INFO(relationId, attributes, indexes) \
52 { relationId, \
53 #relationId, \
54 sizeof(attributes) / sizeof(CSSM_DB_SCHEMA_ATTRIBUTE_INFO), \
55 attributes, \
56 sizeof(indexes) / sizeof(CSSM_DB_SCHEMA_INDEX_INFO), \
57 indexes }
58
59 // Declarations of schema for MDS relations.
60
61 extern const RelationInfo kObjectRelation;
62 extern const RelationInfo kCSSMRelation;
63 extern const RelationInfo kKRMMRelation;
64 extern const RelationInfo kCommonRelation;
65
66 #endif // _MDSSCHEMA_H