93 extensions.push_back(it->second);
109 if(it->first == ext_id) {
151 ERR_POST(
"CExtensionRegistry::AddExtensionPoint() - point \"" << ext_point_id
152 <<
"\" already registered.");
172 if(point_ref->GetLabel().empty()) {
177 the_point->
SetLabel(ext_point_label);
180 ERR_POST(
"CExtensionRegistry::AddExtensionPoint() - point \"" << ext_point_id
181 <<
"\" already registered.");
198 return point->AddExtension(extension);
204 const string& ext_point_label)
206 _ASSERT( ! ext_point_id.empty());
234 const string& extension_id)
241 extension = point->GetExtension(extension_id);
270 point->GetExtensions(extensions);
282 ext_points.push_back(it->second);
311 return point->RemoveExtension(extension);
321 return point->RemoveExtension(ext_id);
332 if(it->second.GetPointer() == &ext_point) {
346 reg->AddExtensionPoint(
id,
label);
352 reg->AddExtensionPoint(ext_point);
361 reg->AddExtension(ext_point_id, *extension);
CExtensionPoint - standard implementation of IExtensionPoint.
T & Get(void)
Create the variable if not created yet, return the reference.
IExtension IExtension interface represents an abstract pluggable component.
container_type::iterator iterator
const_iterator end() const
const_iterator find(const key_type &key) const
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
#define ERR_POST(message)
Error posting with file, line number information but without error codes.
virtual string GetIdentifier() const =0
virtual bool RemoveExtension(IExtension &extension)
removes the given Extension from all Extension Points in the Registry returns false if the Extension ...
virtual TExtRef GetExtension(const string &ext_id)
virtual TExtRef GetExtension(const string &extension_id)
finds and returns a reference to an Extension with the specified Id, search is performed across all P...
TIdToPointMap m_IdToPoint
CExtensionDeclaration(const string &ext_point_id, IExtension *extension)
CExtensionDeclaration.
virtual bool RemoveExtensionPoint(IExtensionPoint &ext_point)
removes the specified Extension Point from the Registry.
static CIRef< IExtensionRegistry > GetInstance()
provides access to the Singleton
virtual string GetExtensionIdentifier() const =0
returns the unique human-readable identifier for the extension the id should use lowercase letters se...
static CSafeStaticRef< CExtensionRegistry > sm_Instance
CExtensionRegistry.
CRef< CExtensionPoint > x_CreateExtensionPoint(const string &ext_point_id, const string &ext_point_label)
virtual void GetExtensions(TExtVec &extensions)
virtual bool AddExtension(IExtension &extension)
virtual TExtRef GetExtension(const string &ext_id)=0
virtual void SetLabel(const string &label)
virtual bool GetExtensions(const string &ext_point_id, TExtVec &extensions)
finds an Extension Point with the given Id and fills the given container with references to all Exten...
virtual void GetExtensionPoints(TExtPointVec &ext_points)
fills the given container with all Extension Points registered
vector< TExtRef > TExtVec
CIRef< IExtension > TExtRef
vector< TExtPointRef > TExtPointVec
virtual TExtPointRef GetExtensionPoint(const string &ext_point_id)
returns a reference to an Extension Point with the given identifier, returns null if there the Id is ...
virtual bool AddExtensionPoint(IExtensionPoint &ext_point)
adds a new Extension Point, returns true if successful
virtual string GetIdentifier() const
CExtensionPointDeclaration(const string &id, const string &label)
CExtensionPointDeclaration.
CExtensionPoint(const string &id, const string &label)
CExtensionPoint - default implementation of IExtensionPoint.
vector< TExtRef > TExtVec
virtual bool AddExtension(const string &ext_point_id, IExtension &extension)
adds a new Extension to an Extension Point, if the Point does not exists creates a new one,...
virtual bool RemoveExtension(IExtension &extension)
virtual bool RemoveExtension(IExtension &extension)=0
virtual string GetLabel() const
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static const char label[]