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