anope

- supernets anope source code & configuration
git clone git://git.acid.vegas/anope.git
Log | Files | Refs | Archive | README

base.cpp (1001B)

      1 /*
      2  *
      3  * (C) 2003-2022 Anope Team
      4  * Contact us at team@anope.org
      5  *
      6  * Please read COPYING and README for further details.
      7  */
      8 
      9 #include "services.h"
     10 #include "anope.h"
     11 #include "service.h"
     12 
     13 std::map<Anope::string, std::map<Anope::string, Service *> > Service::Services;
     14 std::map<Anope::string, std::map<Anope::string, Anope::string> > Service::Aliases;
     15 
     16 Base::Base() : references(NULL)
     17 {
     18 }
     19 
     20 Base::~Base()
     21 {
     22 	if (this->references != NULL)
     23 	{
     24 		for (std::set<ReferenceBase *>::iterator it = this->references->begin(), it_end = this->references->end(); it != it_end; ++it)
     25 			(*it)->Invalidate();
     26 		delete this->references;
     27 	}
     28 }
     29 
     30 void Base::AddReference(ReferenceBase *r)
     31 {
     32 	if (this->references == NULL)
     33 		this->references = new std::set<ReferenceBase *>();
     34 	this->references->insert(r);
     35 }
     36 
     37 void Base::DelReference(ReferenceBase *r)
     38 {
     39 	if (this->references != NULL)
     40 	{
     41 		this->references->erase(r);
     42 		if (this->references->empty())
     43 		{
     44 			delete this->references;
     45 			this->references = NULL;
     46 		}
     47 	}
     48 }