#include "Base_HostGroups_Manager.h" template using TypeSrvC = typename std::conditional< std::is_same_v, MySrvC, PgSQL_SrvC >::type; template BaseSrvList::BaseSrvList(MyHGC*); template BaseSrvList::~BaseSrvList(); template void BaseSrvList::add(MySrvC*); template BaseSrvList::BaseSrvList(PgSQL_HGC*); template BaseSrvList::~BaseSrvList(); template void BaseSrvList::add(PgSQL_SrvC*); template BaseSrvList::BaseSrvList(HGC *_myhgc) { myhgc=_myhgc; servers=new PtrArray(); } template void BaseSrvList::add(TypeSrvC *s) { if (s->myhgc==NULL) { s->myhgc=myhgc; } servers->add(s); if constexpr (std::is_same_v) { myhgc->refresh_online_server_count(); } else if constexpr (std::is_same_v) { //myhgc->refresh_online_server_count(); FIXME: not implemented } else { assert(0); } } template int BaseSrvList::find_idx(TypeSrvC *s) { for (unsigned int i=0; ilen; i++) { TypeSrvC *mysrv=(TypeSrvC *)servers->index(i); if (mysrv==s) { return (unsigned int)i; } } return -1; } template void BaseSrvList::remove(TypeSrvC *s) { int i=find_idx(s); assert(i>=0); servers->remove_index_fast((unsigned int)i); if constexpr (std::is_same_v) { myhgc->refresh_online_server_count(); } else if constexpr (std::is_same_v) { //myhgc->refresh_online_server_count(); FIXME: not implemented } else { assert(0); } } template BaseSrvList::~BaseSrvList() { myhgc=NULL; while (servers->len) { TypeSrvC *mysrvc=(TypeSrvC *)servers->remove_index_fast(0); delete mysrvc; } delete servers; }