/*
- * $Id: ACLStrategised.h,v 1.4 2003/07/14 08:21:56 robertc Exp $
+ * $Id$
*
*
* SQUID Web Proxy Cache http://www.squid-cache.org/
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
typedef M MatchType;
void *operator new(size_t);
void operator delete(void *);
- virtual void deleteSelf() const;
~ACLStrategised();
ACLStrategised(ACLData<MatchType> *, ACLStrategy<MatchType> *, char const *);
virtual char const *typeString() const;
virtual bool requiresRequest() const {return matcher->requiresRequest();}
+ virtual bool requiresReply() const {return matcher->requiresReply();}
+
virtual void prepareForUse() { data->prepareForUse();}
virtual void parse();
virtual int match(ACLChecklist *checklist);
virtual int match (M const &);
virtual wordlist *dump() const;
+ virtual bool empty () const;
virtual bool valid () const;
virtual ACL *clone()const;
private:
- static MemPool *Pool;
+ static MemAllocator *Pool;
ACLData<MatchType> *data;
char const *type_;
ACLStrategy<MatchType> *matcher;
/* implementation follows */
template <class MatchType>
-MemPool (*ACLStrategised<MatchType>::Pool)(NULL);
+MemAllocator *ACLStrategised<MatchType>::Pool = NULL;
template <class MatchType>
void *
if (!Pool)
Pool = memPoolCreate("ACLStrategised", sizeof (ACLStrategised<MatchType>));
- return memPoolAlloc(Pool);
+ return Pool->alloc();
}
template <class MatchType>
void
ACLStrategised<MatchType>::operator delete (void *address)
{
- memPoolFree (Pool, address);
-}
-
-template <class MatchType>
-void
-ACLStrategised<MatchType>::deleteSelf() const
-{
- delete this;
+ Pool->free(address);
}
template <class MatchType>
ACLStrategised<MatchType>::~ACLStrategised()
{
- data->deleteSelf();
+ delete data;
}
template <class MatchType>
data->parse();
}
+template <class MatchType>
+bool
+ACLStrategised<MatchType>::empty() const
+{
+ return data->empty();
+}
+
template <class MatchType>
int
ACLStrategised<MatchType>::match(ACLChecklist *checklist)
bool
ACLStrategised<MatchType>::valid () const
{
- return data != NULL;
+ return matcher->valid();
}
template <class MatchType>