g++ complaining about function templates, switched to functors
authorcantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Mon, 30 Jan 2006 02:10:41 +0000 (02:10 +0000)
committercantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Mon, 30 Jan 2006 02:10:41 +0000 (02:10 +0000)
git-svn-id: https://svn.middleware.georgetown.edu/cpp-sp/trunk@1969 cb58f699-b61c-0410-a6fe-9272a202ed29

shib-target/XMLRequestMapper.cpp
shib-target/internal.h
shib-target/shib-ccache.cpp
shib-target/shib-ini.cpp

index 1bc95d1..849f445 100644 (file)
@@ -242,7 +242,7 @@ Override::Override(const DOMElement* e, Category& log, const Override* base) : m
 Override::~Override()
 {
     delete m_acl;
-    for_each(m_map.begin(),m_map.end(),cleanup<string,Override>);
+    for_each(m_map.begin(),m_map.end(),cleanup_pair<string,Override>());
 }
 
 pair<bool,bool> Override::getBool(const char* name, const char* ns) const
index 0111f14..014d978 100644 (file)
@@ -157,9 +157,16 @@ namespace shibtarget {
         static IConfig* ShibTargetConfigFactory(const DOMElement* e);
     };
 
-    // Template cleanup functions for use with for_each algorithm
-    template<class T> void cleanup(T* ptr) { delete ptr; }
-    template<class A,class B> void cleanup(std::pair<A,B*> p) { delete p.second; }
+    // Template cleanup functors for use with for_each algorithm
+    template<class T> struct cleanup
+    {
+        void operator()(T* ptr) {delete ptr;}
+    };
+
+    template<class A,class B> struct cleanup_pair
+    {
+        void operator()(std::pair<A,B*> p) {delete p.second;}
+    };
 }
 
 #endif
index 1b1b3a7..8713a68 100644 (file)
@@ -1088,7 +1088,7 @@ MemorySessionCache::~MemorySessionCache()
         listener->unregListener("SessionCache::remove",this,restoreRemove);
     }
 
-    for_each(m_hashtable.begin(),m_hashtable.end(),shibtarget::cleanup<string,MemorySessionCacheEntry>);
+    for_each(m_hashtable.begin(),m_hashtable.end(),shibtarget::cleanup_pair<string,MemorySessionCacheEntry>());
     delete m_lock;
     delete shutdown_wait;
 }
index 7e7bc5d..d538358 100644 (file)
@@ -210,7 +210,7 @@ XMLPropertySet::~XMLPropertySet()
 {
     for (map<string,pair<char*,const XMLCh*> >::iterator i=m_map.begin(); i!=m_map.end(); i++)
         XMLString::release(&(i->second.first));
-    for_each(m_nested.begin(),m_nested.end(),cleanup<string,IPropertySet>);
+    for_each(m_nested.begin(),m_nested.end(),shibtarget::cleanup_pair<string,IPropertySet>());
 }
 
 void XMLPropertySet::load(
@@ -699,18 +699,18 @@ void XMLApplication::cleanup()
     delete m_bindingHook;
     delete m_binding;
     delete m_profile;
-    for_each(m_handlers.begin(),m_handlers.end(),shibtarget::cleanup<IHandler>);
+    for_each(m_handlers.begin(),m_handlers.end(),shibtarget::cleanup<IHandler>());
         
     delete m_credDefault;
 #ifdef HAVE_GOOD_STL
-    for_each(m_credMap.begin(),m_credMap.end(),shibtarget::cleanup<xstring,XMLPropertySet>);
+    for_each(m_credMap.begin(),m_credMap.end(),shibtarget::cleanup_pair<xstring,XMLPropertySet>());
 #else
-    for_each(m_credMap.begin(),m_credMap.end(),shibtarget::cleanup<const XMLCh*,XMLPropertySet>);
+    for_each(m_credMap.begin(),m_credMap.end(),shibtarget::cleanup_pair<const XMLCh*,XMLPropertySet>());
 #endif
-    for_each(m_designators.begin(),m_designators.end(),shibtarget::cleanup<SAMLAttributeDesignator>);
-    for_each(m_aaps.begin(),m_aaps.end(),shibtarget::cleanup<IAAP>);
-    for_each(m_metadatas.begin(),m_metadatas.end(),shibtarget::cleanup<IMetadata>);
-    for_each(m_trusts.begin(),m_trusts.end(),shibtarget::cleanup<ITrust>);
+    for_each(m_designators.begin(),m_designators.end(),shibtarget::cleanup<SAMLAttributeDesignator>());
+    for_each(m_aaps.begin(),m_aaps.end(),shibtarget::cleanup<IAAP>());
+    for_each(m_metadatas.begin(),m_metadatas.end(),shibtarget::cleanup<IMetadata>());
+    for_each(m_trusts.begin(),m_trusts.end(),shibtarget::cleanup<ITrust>());
 }
 
 short XMLApplication::acceptNode(const DOMNode* node) const
@@ -1336,8 +1336,8 @@ void XMLConfigImpl::init(bool first)
 XMLConfigImpl::~XMLConfigImpl()
 {
     delete m_requestMapper;
-    for_each(m_appmap.begin(),m_appmap.end(),cleanup<string,IApplication>);
-    for_each(m_creds.begin(),m_creds.end(),cleanup<ICredentials>);
+    for_each(m_appmap.begin(),m_appmap.end(),cleanup_pair<string,IApplication>());
+    for_each(m_creds.begin(),m_creds.end(),cleanup<ICredentials>());
     ShibConfig::getConfig().clearAttributeMappings();
-    for_each(m_attrFactories.begin(),m_attrFactories.end(),cleanup<IAttributeFactory>);
+    for_each(m_attrFactories.begin(),m_attrFactories.end(),cleanup<IAttributeFactory>());
 }