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_ATTRTYPE_H
8#define LDAP_ATTRTYPE_H
9
10#include <ldap_schema.h>
11#include <string>
12
13#include "StringList.h"
14
15using namespace std;
16
17/**
18 * Represents the Attribute Type (from LDAP schema)
19 */
20class LDAPAttrType{
21    private :
22	StringList names;
23	std::string desc, oid, superiorOid, equalityOid;
24        std::string orderingOid, substringOid, syntaxOid;
25	bool single;
26	int usage;
27
28    public :
29
30        /**
31         * Constructor
32         */
33        LDAPAttrType();
34
35        /**
36	 * Constructs new object and fills the data structure by parsing the
37	 * argument.
38	 * @param at_item description of attribute type is string returned
39	 *  by the search command. It is in the form:
40	 * "( SuSE.YaST.Attr:19 NAME ( 'skelDir' ) DESC ''
41	 *    EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )"
42         */
43        LDAPAttrType (string at_item, int flags = LDAP_SCHEMA_ALLOW_NO_OID |
44                      LDAP_SCHEMA_ALLOW_QUOTED );
45
46        /**
47         * Destructor
48         */
49        virtual ~LDAPAttrType();
50
51
52	/**
53	 * Returns attribute description
54	 */
55	string getDesc() const;
56
57	/**
58	 * Returns attribute oid
59	 */
60	string getOid() const;
61
62	/**
63	 * Returns attribute name (first one if there are more of them)
64	 */
65	string getName() const;
66
67	/**
68	 * Returns all attribute names
69	 */
70	StringList getNames() const;
71
72	/**
73	 * Returns true if attribute type allows only single value
74	 */
75	bool isSingle() const;
76
77	/**
78 	 * Return the 'usage' value:
79 	 * (0=userApplications, 1=directoryOperation, 2=distributedOperation,
80	 *  3=dSAOperation)
81 	 */
82 	int getUsage () const;
83        std::string getSuperiorOid() const;
84        std::string getEqualityOid() const;
85        std::string getOrderingOid() const;
86        std::string getSubstringOid() const;
87        std::string getSyntaxOid() const;
88
89	void setNames( char **at_names);
90	void setDesc(const char *at_desc);
91	void setOid(const char *at_oid);
92	void setSingle(int at_single_value);
93	void setUsage(int at_usage );
94        void setSuperiorOid( const char *oid );
95        void setEqualityOid( const char *oid );
96        void setOrderingOid( const char *oid );
97        void setSubstringOid( const char *oid );
98        void setSyntaxOid( const char *oid );
99};
100
101#endif // LDAP_ATTRTYPE_H
102