1// $OpenLDAP$ 2/* 3 * Copyright 2000-2011 The OpenLDAP Foundation, All Rights Reserved. 4 * COPYING RESTRICTIONS APPLY, see COPYRIGHT file 5 */ 6 7 8#ifndef LDAP_ATTRIBUTE_LIST_H 9#define LDAP_ATTRIBUTE_LIST_H 10 11#include <ldap.h> 12#include <list> 13#include <string> 14 15class LDAPAttribute; 16class LDAPAsynConnection; 17class LDAPMsg; 18 19/** 20 * This container class is used to store multiple LDAPAttribute-objects. 21 */ 22class LDAPAttributeList{ 23 typedef std::list<LDAPAttribute> ListType; 24 25 private : 26 ListType m_attrs; 27 28 public : 29 typedef ListType::const_iterator const_iterator; 30 typedef ListType::iterator iterator; 31 32 33 /** 34 * Copy-constructor 35 */ 36 LDAPAttributeList(const LDAPAttributeList& al); 37 38 /** 39 * For internal use only 40 * 41 * This constructor is used by the library internally to create a 42 * list of attributes from a LDAPMessage-struct that was return by 43 * the C-API 44 */ 45 LDAPAttributeList(const LDAPAsynConnection *ld, LDAPMessage *msg); 46 47 /** 48 * Constructs an empty list. 49 */ 50 LDAPAttributeList(); 51 52 /** 53 * Destructor 54 */ 55 virtual ~LDAPAttributeList(); 56 57 /** 58 * @return The number of LDAPAttribute-objects that are currently 59 * stored in this list. 60 */ 61 size_t size() const; 62 63 /** 64 * @return true if there are zero LDAPAttribute-objects currently 65 * stored in this list. 66 */ 67 bool empty() const; 68 69 /** 70 * @return A iterator that points to the first element of the list. 71 */ 72 const_iterator begin() const; 73 74 /** 75 * @return A iterator that points to the element after the last 76 * element of the list. 77 */ 78 const_iterator end() const; 79 80 /** 81 * Get an Attribute by its AttributeType 82 * @param name The name of the Attribute to look for 83 * @return a pointer to the LDAPAttribute with the AttributeType 84 * "name" or 0, if there is no Attribute of that Type 85 */ 86 const LDAPAttribute* getAttributeByName(const std::string& name) const; 87 88 /** 89 * Adds one element to the end of the list. 90 * @param attr The attribute to add to the list. 91 */ 92 void addAttribute(const LDAPAttribute& attr); 93 94 /** 95 * Deletes all values of an Attribute for the list 96 * @param type The attribute type to be deleted. 97 */ 98 void delAttribute(const std::string& type); 99 100 /** 101 * Replace an Attribute in the List 102 * @param attr The attribute to add to the list. 103 */ 104 void replaceAttribute(const LDAPAttribute& attr); 105 106 /** 107 * Translates the list of Attributes to a 0-terminated array of 108 * LDAPMod-structures as needed by the C-API 109 */ 110 LDAPMod** toLDAPModArray() const; 111 112 /** 113 * This method can be used to dump the data of a LDAPResult-Object. 114 * It is only useful for debugging purposes at the moment 115 */ 116 friend std::ostream& operator << (std::ostream& s, 117 const LDAPAttributeList& al); 118}; 119 120#endif // LDAP_ATTRIBUTE_LIST_H 121 122