#define SQUID_NOTES_H
#include "acl/forward.h"
-#include "base/CbDataList.h"
#include "base/RefCount.h"
#include "format/Format.h"
#include "MemPool.h"
#include "acl/Acl.h"
#include "acl/Data.h"
-#include "base/CbDataList.h"
#include "ssl/support.h"
#include <list>
virtual SBufList dump() const;
void parse();
bool empty() const;
- virtual ACLAtStepData *clone() const;
+ virtual ACLAtStepData *clone() const;
std::list<Ssl::BumpStep> values;
};
#include "acl/Acl.h"
#include "acl/Data.h"
-#include "base/CbDataList.h"
#include "hier_code.h"
-/// \ingroup ACLAPI
class ACLHierCodeData : public ACLData<hier_code>
{
MEMPROXY_CLASS(ACLHierCodeData);
bool empty() const;
virtual ACLData<hier_code> *clone() const;
- // mask of codes this ACL might match.
+ /// mask of codes this ACL might match.
bool values[HIER_MAX];
};
#include "Debug.h"
#include "Parsing.h"
-/* explicit instantiation required for some systems */
-/** \cond AUTODOCS_IGNORE */
-template cbdata_type CbDataList< Range<int> >::CBDATA_CbDataList;
-/** \endcond */
-
void
ACLIntRange::parse()
{
port2 = port1;
if (port2 >= port1) {
- RangeType temp (0,0);
- temp.start = port1;
- temp.end = port2+1;
+ RangeType temp(port1, port2+1);
ranges.push_back(temp);
} else {
debugs(28, DBG_CRITICAL, "ACLIntRange::parse: Invalid port value");
bool
ACLIntRange::match(int i)
{
- RangeType const toFind (i, i+1);
- CbDataListIterator<RangeType> iter(ranges);
-
- while (!iter.end()) {
- const RangeType & element = iter.next();
- RangeType result = element.intersection (toFind);
+ RangeType const toFind(i, i+1);
+ for (std::list<RangeType>::const_iterator iter = ranges.begin(); iter != ranges.end(); ++iter) {
+ const RangeType & element = *iter;
+ RangeType result = element.intersection(toFind);
if (result.size())
return true;
if (!ranges.empty())
fatal("ACLIntRange::clone: attempt to clone used ACL");
- return new ACLIntRange (*this);
+ return new ACLIntRange(*this);
}
ACLIntRange::~ACLIntRange()
ACLIntRange::dump() const
{
SBufList sl;
- CbDataListIterator<RangeType> iter(ranges);
-
- while (!iter.end()) {
+ for (std::list<RangeType>::const_iterator iter = ranges.begin(); iter != ranges.end(); ++iter) {
SBuf sb;
- const RangeType & element = iter.next();
+ const RangeType & element = *iter;
if (element.size() == 1)
sb.Printf("%d", element.start);
return sl;
}
-
#define SQUID_ACLINTRANGE_H
#include "acl/Data.h"
-#include "base/CbDataList.h"
#include "Range.h"
-/// \ingroup ACLAPI
+#include <list>
+
class ACLIntRange : public ACLData<int>
{
public:
- ACLIntRange() {};
+ ACLIntRange() {}
virtual ~ACLIntRange();
virtual bool match(int);
private:
typedef Range<int> RangeType;
- CbDataListContainer <RangeType> ranges;
+ std::list<RangeType> ranges;
};
#endif /* SQUID_ACLINTRANGE_H */
int ACLMethodData::ThePurgeCount = 0;
-ACLMethodData::ACLMethodData() : values (NULL)
-{}
-
-ACLMethodData::ACLMethodData(ACLMethodData const &old) : values (NULL)
+ACLMethodData::ACLMethodData(ACLMethodData const &old)
{
- assert (!old.values);
+ assert(old.values.empty());
}
ACLMethodData::~ACLMethodData()
{
- if (values)
- delete values;
+ values.clear();
}
-/// todo make this a pass-by-reference now that HTTPRequestMethods a full class?
bool
ACLMethodData::match(HttpRequestMethod toFind)
{
- return values->findAndTune(toFind);
+ for (std::list<HttpRequestMethod>::const_iterator i = values.begin(); i != values.end(); ++i) {
+ if (*i == toFind) {
+ // tune the list for LRU ordering
+ values.erase(i);
+ values.push_front(toFind);
+ return true;
+ }
+ }
+ return false;
}
-/* explicit instantiation required for some systems */
-
-/// \cond AUTODOCS_IGNORE
-template cbdata_type CbDataList<HttpRequestMethod>::CBDATA_CbDataList;
-/// \endcond
-
SBufList
ACLMethodData::dump() const
{
SBufList sl;
- CbDataList<HttpRequestMethod> *data = values;
-
- while (data != NULL) {
- sl.push_back(data->element.image());
- data = data->next;
+ for (std::list<HttpRequestMethod>::const_iterator i = values.begin(); i != values.end(); ++i) {
+ sl.push_back((*i).image());
}
return sl;
void
ACLMethodData::parse()
{
- CbDataList<HttpRequestMethod> **Tail;
- char *t = NULL;
-
- for (Tail = &values; *Tail; Tail = &((*Tail)->next));
- while ((t = strtokFile())) {
+ while (char *t = strtokFile()) {
HttpRequestMethod m;
m.HttpRequestMethodXXX(t);
- CbDataList<HttpRequestMethod> *q = new CbDataList<HttpRequestMethod>(m);
- if (q->element == Http::METHOD_PURGE)
+ values.push_back(m);
+ if (values.back() == Http::METHOD_PURGE)
++ThePurgeCount; // configuration code wants to know
- *(Tail) = q;
- Tail = &q->next;
}
}
-bool
-ACLMethodData::empty() const
-{
- return values == NULL;
-}
-
ACLData<HttpRequestMethod> *
ACLMethodData::clone() const
{
- assert (!values);
+ assert(values.empty());
return new ACLMethodData(*this);
}
#include "acl/Acl.h"
#include "acl/Data.h"
-#include "base/CbDataList.h"
#include "http/RequestMethod.h"
+#include <list>
+
class ACLMethodData : public ACLData<HttpRequestMethod>
{
MEMPROXY_CLASS(ACLMethodData);
public:
- ACLMethodData();
+ ACLMethodData() {}
ACLMethodData(ACLMethodData const &);
ACLMethodData &operator= (ACLMethodData const &);
virtual ~ACLMethodData();
bool match(HttpRequestMethod);
virtual SBufList dump() const;
void parse();
- bool empty() const;
+ bool empty() const {return values.empty();}
virtual ACLData<HttpRequestMethod> *clone() const;
- CbDataList<HttpRequestMethod> *values;
+ std::list<HttpRequestMethod> values;
static int ThePurgeCount; ///< PURGE methods seen by parse()
};
#include "Debug.h"
#include "wordlist.h"
-ACLProtocolData::ACLProtocolData() : values (NULL)
-{}
-
-ACLProtocolData::ACLProtocolData(ACLProtocolData const &old) : values (NULL)
+ACLProtocolData::ACLProtocolData(ACLProtocolData const &old)
{
- assert (!old.values);
+ assert(old.values.empty());
}
ACLProtocolData::~ACLProtocolData()
{
- if (values)
- delete values;
+ values.clear();
}
bool
ACLProtocolData::match(AnyP::ProtocolType toFind)
{
- return values->findAndTune (toFind);
+ for (std::list<AnyP::ProtocolType>::const_iterator itr = values.begin(); itr != values.end(); ++itr) {
+ if (*itr == toFind) {
+ // tune the list for LRU ordering
+ values.erase(itr);
+ values.push_front(toFind);
+ return true;
+ }
+ }
+ return false;
}
-/* explicit instantiation required for some systems */
-
-/// \cond AUTODOCS_IGNORE
-template cbdata_type CbDataList<AnyP::ProtocolType>::CBDATA_CbDataList;
-/// \endcond
-
SBufList
ACLProtocolData::dump() const
{
SBufList sl;
- CbDataList<AnyP::ProtocolType> *data = values;
-
- while (data != NULL) {
- sl.push_back(SBuf(AnyP::ProtocolType_str[data->element]));
- data = data->next;
+ for (std::list<AnyP::ProtocolType>::const_iterator itr = values.begin(); itr != values.end(); ++itr) {
+ sl.push_back(SBuf(AnyP::ProtocolType_str[*itr]));
}
return sl;
void
ACLProtocolData::parse()
{
- CbDataList<AnyP::ProtocolType> **Tail;
- char *t = NULL;
-
- for (Tail = &values; *Tail; Tail = &((*Tail)->next));
- while ((t = strtokFile())) {
+ while (char *t = strtokFile()) {
int p = AnyP::PROTO_NONE;
for (; p < AnyP::PROTO_UNKNOWN; ++p) {
if (strcasecmp(t, AnyP::ProtocolType_str[p]) == 0) {
- CbDataList<AnyP::ProtocolType> *q = new CbDataList<AnyP::ProtocolType>(static_cast<AnyP::ProtocolType>(p));
- *(Tail) = q;
- Tail = &q->next;
+ values.push_back(static_cast<AnyP::ProtocolType>(p));
break;
}
}
}
}
-bool
-ACLProtocolData::empty() const
-{
- return values == NULL;
-}
-
ACLData<AnyP::ProtocolType> *
ACLProtocolData::clone() const
{
/* Splay trees don't clone yet. */
- assert (!values);
+ assert(values.empty());
return new ACLProtocolData(*this);
}
#include "acl/Acl.h"
#include "acl/Data.h"
#include "anyp/ProtocolType.h"
-#include "base/CbDataList.h"
+
+#include <list>
class ACLProtocolData : public ACLData<AnyP::ProtocolType>
{
MEMPROXY_CLASS(ACLProtocolData);
public:
- ACLProtocolData();
+ ACLProtocolData() {}
ACLProtocolData(ACLProtocolData const &);
ACLProtocolData &operator= (ACLProtocolData const &);
virtual ~ACLProtocolData();
bool match(AnyP::ProtocolType);
virtual SBufList dump() const;
void parse();
- bool empty() const;
+ bool empty() const {return values.empty();}
virtual ACLData<AnyP::ProtocolType> *clone() const;
- CbDataList<AnyP::ProtocolType> *values;
+ std::list<AnyP::ProtocolType> values;
};
#endif /* SQUID_ACLPROTOCOLDATA_H */
#ifndef SQUID_SRC_AUTH_QUEUENODE_H
#define SQUID_SRC_AUTH_QUEUENODE_H
+#include "cbdata.h"
+
namespace Auth
{