#include <registry.hh>
| Classes | |
| struct | RegistryType | 
| Public Types | |
| enum | DumpMode { NameOnly = 0, AllType = 1, WithSourceId = 2, RecursiveTypeDump = 4 } | 
| typedef RegistryIterator | Iterator | 
| Public Member Functions | |
| void | add (Type *type, std::string const &source_id="") | 
| void | add (Type *type, bool persistent, std::string const &source_id) | 
| void | alias (std::string const &base, std::string const &alias, bool persistent, std::string const &source_id="") | 
| void | alias (std::string const &base, std::string const &alias, std::string const &source_id="") | 
| RegistryIterator | begin () const | 
| RegistryIterator | begin (std::string const &prefix) const | 
| Type const * | build (const std::string &name) | 
| void | clear () | 
| void | clearAliases () | 
| void | copySourceIDs (Registry const ®istry) | 
| void | dump (std::ostream &stream, int dumpmode=AllType, const std::string &source_filter="*") const | 
| RegistryIterator | end () const | 
| RegistryIterator | end (std::string const &prefix) const | 
| RegistryIterator | find (std::string const &name) const | 
| Type const * | get (const std::string &name) const | 
| Type * | get_ (const std::string &name) | 
| Type & | get_ (Type const &type) | 
| std::set< std::string > | getAliasesOf (Type const &type) const | 
| std::string | getDefaultNamespace () const | 
| std::string | getFullName (const std::string &name) const | 
| bool | has (const std::string &name, bool build=true) const | 
| void | importNamespace (const std::string &name, bool erase_existing=false) | 
| bool | isIncluded (Type const &type) const | 
| bool | isSame (Registry const &other) const | 
| void | merge (Registry const ®istry) | 
| Registry * | minimal (std::string const &name, bool with_aliases=true) const | 
| Registry * | minimal (Registry const &auto_types) const | 
| Registry () | |
| std::set< Type * > | remove (Type const &type) | 
| void | resize (std::map< std::string, size_t > const &new_sizes) | 
| std::set< Type const * > | reverseDepends (Type const &type) const | 
| bool | setDefaultNamespace (const std::string &name) | 
| void | setSourceID (Type const &type, std::string const &source_id) | 
| size_t | size () const | 
| std::string | source (Type const *type) const | 
| ~Registry () | |
| Static Public Member Functions | |
| static Type const & | null () | 
| Private Types | |
| typedef std::map< const std::string, RegistryType > | NameMap | 
| typedef std::map< const std::string, RegistryType, bool(*)(const std::string &, const std::string &) | TypeMap ) | 
| Private Member Functions | |
| void | add (std::string const &name, Type *new_type, bool persistent, std::string const &source_id) | 
| std::set< Type * > | reverseDepends (Type const &type) | 
| void | updateCurrentNameMap () | 
| Static Private Member Functions | |
| static bool | isPersistent (std::string const &name, Type const &type, std::string const &source_id) | 
| Private Attributes | |
| NameMap | m_current | 
| TypeMap | m_global | 
| std::string | m_namespace | 
| Friends | |
| class | RegistryIterator | 
Manipulation of a set of types Any complex type in a Registry object can only reference types in the same registry. No duplicates are allowed.
Registry objects provide the following services:
using namespace in C++) Definition at line 86 of file registry.hh.
Definition at line 122 of file registry.hh.
| typedef std::map<const std::string, RegistryType> Typelib::Registry::NameMap  [private] | 
Definition at line 103 of file registry.hh.
| typedef std::map< const std::string , RegistryType , bool (*) (const std::string&, const std::string&)  Typelib::Registry::TypeMap)  [private] | 
Definition at line 101 of file registry.hh.
Definition at line 303 of file registry.hh.
Definition at line 66 of file typelib/registry.cc.
Definition at line 73 of file typelib/registry.cc.
| void Typelib::Registry::add | ( | std::string const & | name, | 
| Type * | new_type, | ||
| bool | persistent, | ||
| std::string const & | source_id | ||
| ) |  [private] | 
Definition at line 319 of file typelib/registry.cc.
| void Typelib::Registry::add | ( | Type * | type, | 
| std::string const & | source_id = "" | ||
| ) | 
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 363 of file typelib/registry.cc.
| void Typelib::Registry::add | ( | Type * | type, | 
| bool | persistent, | ||
| std::string const & | source_id | ||
| ) | 
Adds a new type
Definition at line 368 of file typelib/registry.cc.
| void Typelib::Registry::alias | ( | std::string const & | base, | 
| std::string const & | alias, | ||
| bool | persistent, | ||
| std::string const & | source_id = "" | ||
| ) | 
Creates an alias While base can be a derived type, all aliases are considered persistent since they can be referenced by their name in other types
Definition at line 395 of file typelib/registry.cc.
| void Typelib::Registry::alias | ( | std::string const & | base, | 
| std::string const & | alias, | ||
| std::string const & | source_id = "" | ||
| ) | 
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 386 of file typelib/registry.cc.
| RegistryIterator Typelib::Registry::begin | ( | ) | const | 
Iterator pointing on the first type of the registry
Definition at line 512 of file typelib/registry.cc.
| RegistryIterator Typelib::Registry::begin | ( | std::string const & | prefix | ) | const | 
Returns an iterator on the first type whose name starts with +prefix+. If +prefix+ is a namespace name, it will be the first type in that namespace
Definition at line 514 of file typelib/registry.cc.
| const Type * Typelib::Registry::build | ( | const std::string & | name | ) | 
Build a derived type from its canonical name
Definition at line 269 of file typelib/registry.cc.
| void Typelib::Registry::clear | ( | ) | 
Remove all types
Definition at line 444 of file typelib/registry.cc.
| void Typelib::Registry::clearAliases | ( | ) | 
Removes all defined aliases
Definition at line 428 of file typelib/registry.cc.
| void Typelib::Registry::copySourceIDs | ( | Registry const & | registry | ) | 
Get from the provided all registry all source IDs from types in +this+ which have no source ID yet
Definition at line 181 of file typelib/registry.cc.
| void Typelib::Registry::dump | ( | std::ostream & | stream, | 
| int | dumpmode = AllType, | ||
| const std::string & | source_filter = "*" | ||
| ) | const | 
Definition at line 471 of file typelib/registry.cc.
| RegistryIterator Typelib::Registry::end | ( | ) | const | 
Past-the-end iterator on the registry
Definition at line 513 of file typelib/registry.cc.
| RegistryIterator Typelib::Registry::end | ( | std::string const & | prefix | ) | const | 
Returns an iterator on the first type whose name does not start with +prefix+ and which is preceded by a type whose name starts with +prefix
If +prefix+ is a namespace name, it will be the past-the-end iterator allowing you to iterate on the namespace types:
 RegistryIterator const end = registry.end("/A"); for (RegistryIterator it = registry.begin("/A"); it != end; ++it) { // iterates on all types in namespace A }  
Definition at line 522 of file typelib/registry.cc.
| RegistryIterator Typelib::Registry::find | ( | std::string const & | name | ) | const | 
Gets a RegistryIterator on a given type
Definition at line 297 of file typelib/registry.cc.
| const Type * Typelib::Registry::get | ( | const std::string & | name | ) | const | 
Gets a Type object
Definition at line 289 of file typelib/registry.cc.
| Type * Typelib::Registry::get_ | ( | const std::string & | name | ) | 
Definition at line 278 of file typelib/registry.cc.
| Type & Typelib::Registry::get_ | ( | Type const & | type | ) | 
Definition at line 286 of file typelib/registry.cc.
| std::set< std::string > Typelib::Registry::getAliasesOf | ( | Type const & | type | ) | const | 
Returns the set of aliases that exist for +type+
Definition at line 629 of file typelib/registry.cc.
| std::string Typelib::Registry::getDefaultNamespace | ( | ) | const | 
Get the default namespace (if any). Returns '/' (i.e. the root) if no default namespace have been set
Definition at line 93 of file typelib/registry.cc.
| std::string Typelib::Registry::getFullName | ( | const std::string & | name | ) | const | 
Get the absolute type name of name, taking the default namespace into account 
Definition at line 121 of file typelib/registry.cc.
| bool Typelib::Registry::has | ( | const std::string & | name, | 
| bool | build = true | ||
| ) | const | 
Checks for the availability of a particular type
name is a derived version (pointer or array) of a known typeDefinition at line 257 of file typelib/registry.cc.
| void Typelib::Registry::importNamespace | ( | const std::string & | name, | 
| bool | erase_existing = false | ||
| ) | 
Import the name namespace into the current namespace. 
Definition at line 104 of file typelib/registry.cc.
| bool Typelib::Registry::isIncluded | ( | Type const & | type | ) | const | 
Returns true if +type+ is a type included in this registry
Definition at line 140 of file typelib/registry.cc.
| bool Typelib::Registry::isPersistent | ( | std::string const & | name, | 
| Type const & | type, | ||
| std::string const & | source_id | ||
| ) |  [static, private] | 
Definition at line 304 of file typelib/registry.cc.
| bool Typelib::Registry::isSame | ( | Registry const & | other | ) | const | 
Compares the two registries. Returns true if they contain the same set of types, referenced under the same name
Note that for now, if this contains a type 'A' aliased to 'B' and other contains the same type but named 'B' and aliased to 'A', the method will return false. 
Definition at line 532 of file typelib/registry.cc.
| void Typelib::Registry::merge | ( | Registry const & | registry | ) | 
Merges the content of registry into this object 
Definition at line 146 of file typelib/registry.cc.
| Registry * Typelib::Registry::minimal | ( | std::string const & | name, | 
| bool | with_aliases = true | ||
| ) | const | 
Returns a registry containing the minimal set of types needed to define name 
Definition at line 195 of file typelib/registry.cc.
| Registry * Typelib::Registry::minimal | ( | Registry const & | auto_types | ) | const | 
Returns a registry containing the minimal set of types needed to define the types that are in this and not in auto_types 
Definition at line 219 of file typelib/registry.cc.
| Type const & Typelib::Registry::null | ( | ) |  [static] | 
Returns a null type
Definition at line 61 of file typelib/registry.cc.
| std::set< Type * > Typelib::Registry::remove | ( | Type const & | type | ) | 
Removes the given type from the registry, along with all the types that depend on it.
Definition at line 606 of file typelib/registry.cc.
| void Typelib::Registry::resize | ( | std::map< std::string, size_t > const & | new_sizes | ) | 
Modifies the size of a subset of the types, and propagate this size change to the other types
Definition at line 551 of file typelib/registry.cc.
| std::set< Type * > Typelib::Registry::reverseDepends | ( | Type const & | type | ) |  [private] | 
Returns the set of types that depend on type 
Definition at line 593 of file typelib/registry.cc.
| std::set< Type const * > Typelib::Registry::reverseDepends | ( | Type const & | type | ) | const | 
Returns the set of types that depend on type 
Definition at line 574 of file typelib/registry.cc.
| bool Typelib::Registry::setDefaultNamespace | ( | const std::string & | name | ) | 
Sets the default namespace. This removes all namespace import and imports name in the current namespace 
Definition at line 94 of file typelib/registry.cc.
| void Typelib::Registry::setSourceID | ( | Type const & | type, | 
| std::string const & | source_id | ||
| ) | 
Changes the source ID of a particular type
Definition at line 641 of file typelib/registry.cc.
| size_t Typelib::Registry::size | ( | ) | const | 
Returns the count of types defined in this registry, including non-persistent and aliases
Definition at line 443 of file typelib/registry.cc.
| std::string Typelib::Registry::source | ( | Type const * | type | ) | const | 
Get the source ID of type. Throws Undefined if type is not a registered type 
| void Typelib::Registry::updateCurrentNameMap | ( | ) |  [private] | 
Updates +m_current+ based on +m_global+ and the current default namespace
Definition at line 75 of file typelib/registry.cc.
| friend class RegistryIterator  [friend] | 
Definition at line 88 of file registry.hh.
| NameMap Typelib::Registry::m_current  [private] | 
Definition at line 106 of file registry.hh.
| TypeMap Typelib::Registry::m_global  [private] | 
Definition at line 105 of file registry.hh.
| std::string Typelib::Registry::m_namespace  [private] | 
Definition at line 107 of file registry.hh.