xref: /netbsd-src/external/bsd/openldap/dist/contrib/ldapc++/src/LDAPControlSet.cpp (revision e670fd5c413e99c2f6a37901bb21c537fcd322d2)
1 // $OpenLDAP$
2 /*
3  * Copyright 2000-2021 The OpenLDAP Foundation, All Rights Reserved.
4  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
5  */
6 
7 #include "debug.h"
8 #include "LDAPControlSet.h"
9 
10 using namespace std;
11 
LDAPControlSet()12 LDAPControlSet::LDAPControlSet(){
13 }
14 
LDAPControlSet(const LDAPControlSet & cs)15 LDAPControlSet::LDAPControlSet(const LDAPControlSet& cs){
16     DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPControlSet::LDAPControlSet(&)" << endl);
17     data=cs.data;
18 }
19 
LDAPControlSet(LDAPControl ** controls)20 LDAPControlSet::LDAPControlSet(LDAPControl** controls){
21     DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPControlSet::LDAPControlSet()" << endl);
22     if(controls != 0){
23         LDAPControl** i;
24         for( i=controls; *i!=0;i++) {
25             add(LDAPCtrl(*i));
26         }
27     }
28 }
29 
~LDAPControlSet()30 LDAPControlSet::~LDAPControlSet(){
31     DEBUG(LDAP_DEBUG_DESTROY,"LDAPControlSet::~LDAPControlSet()" << endl);
32 }
33 
size() const34 size_t LDAPControlSet::size() const {
35     DEBUG(LDAP_DEBUG_TRACE,"LDAPControlSet::size()" << endl);
36     return data.size();
37 }
38 
empty() const39 bool LDAPControlSet::empty() const {
40     DEBUG(LDAP_DEBUG_TRACE,"LDAPControlSet::empty()" << endl);
41     return data.empty();
42 }
43 
begin() const44 LDAPControlSet::const_iterator LDAPControlSet::begin() const{
45     DEBUG(LDAP_DEBUG_TRACE,"LDAPControlSet::begin()" << endl);
46     return data.begin();
47 }
48 
49 
end() const50 LDAPControlSet::const_iterator LDAPControlSet::end() const{
51     DEBUG(LDAP_DEBUG_TRACE,"LDAPControlSet::end()" << endl);
52     return data.end ();
53 }
54 
add(const LDAPCtrl & ctrl)55 void LDAPControlSet::add(const LDAPCtrl& ctrl){
56     DEBUG(LDAP_DEBUG_TRACE,"LDAPControlSet::add()" << endl);
57     data.push_back(ctrl);
58 }
59 
toLDAPControlArray() const60 LDAPControl** LDAPControlSet::toLDAPControlArray() const{
61     DEBUG(LDAP_DEBUG_TRACE, "LDAPControlSet::toLDAPControlArray()" << endl);
62     if(data.empty()){
63         return 0;
64     }else{
65         LDAPControl** ret= new LDAPControl*[data.size()+1];
66         CtrlList::const_iterator i;
67         int j=0;
68         for(i=data.begin(); i!=data.end(); i++,j++){
69             ret[j] = i->getControlStruct();
70         }
71         ret[data.size()]=0;
72         return ret;
73     }
74 }
75 
freeLDAPControlArray(LDAPControl ** ctrl)76 void LDAPControlSet::freeLDAPControlArray(LDAPControl **ctrl){
77     DEBUG(LDAP_DEBUG_TRACE, "LDAPControlSet::freeLDAPControlArray()" << endl);
78     if( ctrl ){
79         for( LDAPControl **i = ctrl; *i != 0; ++i ){
80 	    LDAPCtrl::freeLDAPControlStruct(*i);
81 	}
82     }
83     delete[] ctrl;
84 }
85