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