]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/acl/NoteData.cc
2 * Copyright (C) 1996-2016 The Squid Software Foundation and contributors
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
11 #include "acl/Checklist.h"
12 #include "acl/NoteData.h"
13 #include "acl/StringData.h"
14 #include "ConfigParser.h"
16 #include "sbuf/StringConvert.h"
19 ACLNoteData::ACLNoteData() : values(new ACLStringData
)
22 ACLNoteData::~ACLNoteData()
28 ACLNoteData::match(NotePairs::Entry
*entry
)
30 if (entry
->name
.cmp(name
.termedBuf()) != 0)
31 return false; // name mismatch
33 // a name-only note ACL matches any value; others require a values match
34 return values
->empty() ||
35 values
->match(entry
->value
.termedBuf());
39 ACLNoteData::dump() const
42 sl
.push_back(StringToSBuf(name
));
43 #if __cplusplus >= 201103L
44 sl
.splice(sl
.end(), values
->dump());
46 // temp is needed until c++11 move constructor
47 SBufList temp
= values
->dump();
48 sl
.splice(sl
.end(), temp
);
56 char* t
= ConfigParser::strtokFile();
63 ACLNoteData::empty() const
65 return name
.size() == 0;
68 ACLData
<NotePairs::Entry
*> *
69 ACLNoteData::clone() const
71 ACLNoteData
* result
= new ACLNoteData
;
72 result
->values
= dynamic_cast<ACLStringData
*>(values
->clone());
73 assert(result
->values
);