xref: /netbsd-src/external/bsd/openldap/dist/contrib/ldapc++/src/LDAPSchema.h (revision 1ca06f9c9235889e2ff6dc77279d01d151d70a9a)
1 // $OpenLDAP: pkg/ldap/contrib/ldapc++/src/LDAPSchema.h,v 1.1.8.2 2008/04/14 23:09:26 quanah Exp $
2 /*
3  * Copyright 2003, OpenLDAP Foundation, All Rights Reserved.
4  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
5  */
6 
7 #ifndef LDAP_SCHEMA_H
8 #define LDAP_SCHEMA_H
9 
10 #include <string>
11 #include <map>
12 
13 #include "LDAPObjClass.h"
14 #include "LDAPAttrType.h"
15 
16 /**
17  * Represents the LDAP schema
18  */
19 class LDAPSchema{
20     private :
21 	/**
22 	 * map of object classes: index is name, value is LDAPObjClass object
23 	 */
24 	map <string, LDAPObjClass> object_classes;
25 
26 	/**
27 	 * map of attribute types: index is name, value is LDAPAttrType object
28 	 */
29 	map <string, LDAPAttrType> attr_types;
30 
31     public :
32 
33         /**
34          * Constructs an empty object
35          */
36         LDAPSchema();
37 
38         /**
39          * Destructor
40          */
41         virtual ~LDAPSchema();
42 
43         /**
44          * Fill the object_classes map
45 	 * @param oc description of one objectclass (string returned by search
46 	 * command), in form:
47 	 * "( 1.2.3.4.5 NAME '<name>' SUP <supname> STRUCTURAL
48 	 *    DESC '<description>' MUST ( <attrtype> ) MAY ( <attrtype> ))"
49          */
50 	void setObjectClasses (const StringList &oc);
51 
52 	 /**
53          * Fill the attr_types map
54 	 * @param at description of one attribute type
55 	 *  (string returned by search command), in form:
56 	 * "( 1.2.3.4.6 NAME ( '<name>' ) DESC '<desc>'
57 	 *    EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )"
58          */
59 	void setAttributeTypes (const StringList &at);
60 
61 	/**
62 	 * Returns object class object with given name
63 	 */
64 	LDAPObjClass getObjectClassByName (std::string name);
65 
66 	/**
67 	 * Returns attribute type object with given name
68 	 */
69 	LDAPAttrType getAttributeTypeByName (string name);
70 
71 };
72 
73 #endif // LDAP_SCHEMA_H
74