1// $OpenLDAP$
2/*
3 * Copyright 2003-2011 The OpenLDAP Foundation, All Rights Reserved.
4 * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
5 */
6
7#ifndef LDAP_OBJCLASS_H
8#define LDAP_OBJCLASS_H
9
10#include <ldap_schema.h>
11#include <string>
12
13#include "StringList.h"
14
15using namespace std;
16
17/**
18 * Represents the Object Class (from LDAP schema)
19 */
20class LDAPObjClass{
21    private :
22	StringList names, must, may, sup;
23	string desc, oid;
24	int kind;
25
26    public :
27
28        /**
29         * Constructs an empty object.
30         */
31        LDAPObjClass();
32
33        /**
34         * Copy constructor
35	 */
36	LDAPObjClass( const LDAPObjClass& oc );
37
38        /**
39	 * Constructs new object and fills the data structure by parsing the
40	 * argument.
41	 * @param oc_item description of object class is string returned
42	 * by the search command. It is in the form:
43	 * "( SuSE.YaST.OC:5 NAME 'userTemplate' SUP objectTemplate STRUCTURAL
44	 *    DESC 'User object template' MUST ( cn ) MAY ( secondaryGroup ))"
45         */
46        LDAPObjClass (string oc_item, int flags = LDAP_SCHEMA_ALLOW_NO_OID |
47                      LDAP_SCHEMA_ALLOW_QUOTED);
48
49        /**
50         * Destructor
51         */
52        virtual ~LDAPObjClass();
53
54	/**
55	 * Returns object class description
56	 */
57	string getDesc() const;
58
59	/**
60	 * Returns object class oid
61	 */
62	string getOid() const;
63
64	/**
65	 * Returns object class name (first one if there are more of them)
66	 */
67	string getName() const;
68
69	/**
70	 * Returns object class kind: 0=ABSTRACT, 1=STRUCTURAL, 2=AUXILIARY
71	 */
72	int getKind() const;
73
74	/**
75	 * Returns all object class names
76	 */
77	StringList getNames() const;
78
79	/**
80	 * Returns list of required attributes
81	 */
82	StringList getMust() const;
83
84	/**
85	 * Returns list of allowed (and not required) attributes
86	 */
87	StringList getMay() const;
88
89        /**
90	 * Returns list of the OIDs of the superior ObjectClasses
91	 */
92	StringList getSup() const;
93
94	void setNames (char **oc_names);
95	void setMay (char **oc_may);
96	void setMust (char **oc_must);
97	void setDesc (char *oc_desc);
98	void setOid (char *oc_oid);
99	void setKind (int oc_kind);
100	void setSup (char **oc_sup);
101
102};
103
104#endif // LDAP_OBJCLASS_H
105