]> git.saurik.com Git - apple/security.git/blame - cdsa/mds/MDSSchema.h
Security-30.1.tar.gz
[apple/security.git] / cdsa / mds / MDSSchema.h
CommitLineData
bac41a7b
A
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
34struct 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
61extern const RelationInfo kObjectRelation;
62extern const RelationInfo kCSSMRelation;
63extern const RelationInfo kKRMMRelation;
64extern const RelationInfo kCommonRelation;
65
66#endif // _MDSSCHEMA_H