xref: /netbsd-src/external/bsd/openldap/dist/contrib/ldapc++/src/LDAPObjClass.h (revision 549b59ed3ccf0d36d3097190a0db27b770f3a839)
1*549b59edSchristos /*	$NetBSD: LDAPObjClass.h,v 1.3 2021/08/14 16:14:49 christos Exp $	*/
24e6df137Slukem 
3d11b170bStron // $OpenLDAP$
42de962bdSlukem /*
5*549b59edSchristos  * Copyright 2003-2021 The OpenLDAP Foundation, All Rights Reserved.
62de962bdSlukem  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
72de962bdSlukem  */
82de962bdSlukem 
92de962bdSlukem #ifndef LDAP_OBJCLASS_H
102de962bdSlukem #define LDAP_OBJCLASS_H
112de962bdSlukem 
122de962bdSlukem #include <ldap_schema.h>
132de962bdSlukem #include <string>
142de962bdSlukem 
152de962bdSlukem #include "StringList.h"
162de962bdSlukem 
172de962bdSlukem using namespace std;
182de962bdSlukem 
192de962bdSlukem /**
202de962bdSlukem  * Represents the Object Class (from LDAP schema)
212de962bdSlukem  */
222de962bdSlukem class LDAPObjClass{
232de962bdSlukem     private :
242de962bdSlukem 	StringList names, must, may, sup;
252de962bdSlukem 	string desc, oid;
262de962bdSlukem 	int kind;
272de962bdSlukem 
282de962bdSlukem     public :
292de962bdSlukem 
302de962bdSlukem         /**
312de962bdSlukem          * Constructs an empty object.
322de962bdSlukem          */
332de962bdSlukem         LDAPObjClass();
342de962bdSlukem 
352de962bdSlukem         /**
362de962bdSlukem          * Copy constructor
372de962bdSlukem 	 */
382de962bdSlukem 	LDAPObjClass( const LDAPObjClass& oc );
392de962bdSlukem 
402de962bdSlukem         /**
412de962bdSlukem 	 * Constructs new object and fills the data structure by parsing the
422de962bdSlukem 	 * argument.
432de962bdSlukem 	 * @param oc_item description of object class is string returned
442de962bdSlukem 	 * by the search command. It is in the form:
452de962bdSlukem 	 * "( SuSE.YaST.OC:5 NAME 'userTemplate' SUP objectTemplate STRUCTURAL
462de962bdSlukem 	 *    DESC 'User object template' MUST ( cn ) MAY ( secondaryGroup ))"
472de962bdSlukem          */
484e6df137Slukem         LDAPObjClass (string oc_item, int flags = LDAP_SCHEMA_ALLOW_NO_OID |
494e6df137Slukem                       LDAP_SCHEMA_ALLOW_QUOTED);
502de962bdSlukem 
512de962bdSlukem         /**
522de962bdSlukem          * Destructor
532de962bdSlukem          */
542de962bdSlukem         virtual ~LDAPObjClass();
552de962bdSlukem 
562de962bdSlukem 	/**
572de962bdSlukem 	 * Returns object class description
582de962bdSlukem 	 */
592de962bdSlukem 	string getDesc() const;
602de962bdSlukem 
612de962bdSlukem 	/**
622de962bdSlukem 	 * Returns object class oid
632de962bdSlukem 	 */
642de962bdSlukem 	string getOid() const;
652de962bdSlukem 
662de962bdSlukem 	/**
672de962bdSlukem 	 * Returns object class name (first one if there are more of them)
682de962bdSlukem 	 */
692de962bdSlukem 	string getName() const;
702de962bdSlukem 
712de962bdSlukem 	/**
722de962bdSlukem 	 * Returns object class kind: 0=ABSTRACT, 1=STRUCTURAL, 2=AUXILIARY
732de962bdSlukem 	 */
742de962bdSlukem 	int getKind() const;
752de962bdSlukem 
762de962bdSlukem 	/**
772de962bdSlukem 	 * Returns all object class names
782de962bdSlukem 	 */
792de962bdSlukem 	StringList getNames() const;
802de962bdSlukem 
812de962bdSlukem 	/**
822de962bdSlukem 	 * Returns list of required attributes
832de962bdSlukem 	 */
842de962bdSlukem 	StringList getMust() const;
852de962bdSlukem 
862de962bdSlukem 	/**
872de962bdSlukem 	 * Returns list of allowed (and not required) attributes
882de962bdSlukem 	 */
892de962bdSlukem 	StringList getMay() const;
902de962bdSlukem 
912de962bdSlukem         /**
922de962bdSlukem 	 * Returns list of the OIDs of the superior ObjectClasses
932de962bdSlukem 	 */
942de962bdSlukem 	StringList getSup() const;
952de962bdSlukem 
962de962bdSlukem 	void setNames (char **oc_names);
972de962bdSlukem 	void setMay (char **oc_may);
982de962bdSlukem 	void setMust (char **oc_must);
992de962bdSlukem 	void setDesc (char *oc_desc);
1002de962bdSlukem 	void setOid (char *oc_oid);
1012de962bdSlukem 	void setKind (int oc_kind);
1022de962bdSlukem 	void setSup (char **oc_sup);
1032de962bdSlukem 
1042de962bdSlukem };
1052de962bdSlukem 
1062de962bdSlukem #endif // LDAP_OBJCLASS_H
107