xref: /netbsd-src/external/bsd/openldap/dist/contrib/ldapc++/src/LDAPEntry.h (revision 6dffe8d42bd46273f674d7ab834e7be9b1af990e)
1 // $OpenLDAP: pkg/ldap/contrib/ldapc++/src/LDAPEntry.h,v 1.6.8.6 2008/07/08 19:31:00 quanah Exp $
2 /*
3  * Copyright 2000, OpenLDAP Foundation, All Rights Reserved.
4  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
5  */
6 
7 
8 #ifndef LDAP_ENTRY_H
9 #define LDAP_ENTRY_H
10 #include <ldap.h>
11 
12 #include <LDAPAttributeList.h>
13 
14 class LDAPAsynConnection;
15 
16 /**
17  * This class is used to store every kind of LDAP Entry.
18  */
19 class LDAPEntry{
20 
21     public :
22         /**
23          * Copy-constructor
24          */
25         LDAPEntry(const LDAPEntry& entry);
26 
27         /**
28          * Constructs a new entry (also used as standard constructor).
29          *
30          * @param dn    The Distinguished Name for the new entry.
31          * @param attrs The attributes for the new entry.
32          */
33         LDAPEntry(const std::string& dn=std::string(),
34                 const LDAPAttributeList *attrs=0);
35 
36         /**
37          * Used internally only.
38          *
39          * The constructor is used internally to create a LDAPEntry from
40          * the C-API's data structurs.
41          */
42         LDAPEntry(const LDAPAsynConnection *ld, LDAPMessage *msg);
43 
44         /**
45          * Destructor
46          */
47         ~LDAPEntry();
48 
49         /**
50          * Assignment operator
51          */
52         LDAPEntry& operator=(const LDAPEntry& from);
53 
54         /**
55          * Sets the DN-attribute.
56          * @param dn: The new DN for the entry.
57          */
58         void setDN(const std::string& dn);
59 
60         /**
61          * Sets the attributes of the entry.
62          * @param attr: A pointer to a std::list of the new attributes.
63          */
64         void setAttributes(LDAPAttributeList *attrs);
65 
66 	/**
67 	 * Get an Attribute by its AttributeType (simple wrapper around
68          * LDAPAttributeList::getAttributeByName() )
69 	 * @param name The name of the Attribute to look for
70 	 * @return a pointer to the LDAPAttribute with the AttributeType
71 	 *	"name" or 0, if there is no Attribute of that Type
72 	 */
73 	const LDAPAttribute* getAttributeByName(const std::string& name) const;
74 
75         /**
76          * Adds one Attribute to the List of Attributes (simple wrapper around
77          * LDAPAttributeList::addAttribute() ).
78          * @param attr The attribute to add to the list.
79          */
80         void addAttribute(const LDAPAttribute& attr);
81 
82         /**
83          * Deletes all values of an Attribute from the list of Attributes
84          * (simple wrapper around LDAPAttributeList::delAttribute() ).
85          * @param type The attribute to delete.
86          */
87         void delAttribute(const std::string& type);
88 
89         /**
90          * Replace an Attribute in the List of Attributes (simple wrapper
91          * around LDAPAttributeList::replaceAttribute() ).
92          * @param attr The attribute to add to the list.
93          */
94         void replaceAttribute(const LDAPAttribute& attr);
95 
96         /**
97          * @returns The current DN of the entry.
98          */
99         const std::string& getDN() const ;
100 
101         /**
102          * @returns A const pointer to the attributes of the entry.
103          */
104         const LDAPAttributeList* getAttributes() const;
105 
106         /**
107          * This method can be used to dump the data of a LDAPResult-Object.
108          * It is only useful for debugging purposes at the moment
109          */
110         friend std::ostream& operator << (std::ostream& s, const LDAPEntry& le);
111 
112     private :
113         LDAPAttributeList *m_attrs;
114         std::string m_dn;
115 };
116 #endif  //LDAP_ENTRY_H
117