#include <typemodel.hh>

| Classes | |
| struct | DeleteIfPredicate | 
| struct | PredicateWrapper | 
| Public Types | |
| typedef std::map< std::string, ContainerFactory > | AvailableContainers | 
| typedef Container const &(* | ContainerFactory )(Registry &r, std::list< Type const * > const &base_type) | 
| typedef std::vector< size_t > | MarshalOps | 
| Public Member Functions | |
| virtual void | clear (void *ptr) const =0 | 
| virtual bool | compare (void *ptr, void *other) const =0 | 
| Container (std::string const &kind, std::string const &name, size_t size, Type const &of) | |
| virtual void | copy (void *dst, void *src) const =0 | 
| template<typename Pred > | |
| void | delete_if (void *ptr, Pred pred) const | 
| virtual void | destroy (void *ptr) const =0 | 
| virtual MarshalOps::const_iterator | dump (void const *container_ptr, size_t element_count, OutputStream &stream, MarshalOps::const_iterator const begin, MarshalOps::const_iterator const end) const =0 | 
| virtual bool | erase (void *ptr, Value v) const =0 | 
| virtual Typelib::Value | getElement (void *ptr, int idx) const | 
| virtual size_t | getElementCount (void const *ptr) const =0 | 
| virtual long | getNaturalSize () const =0 | 
| virtual void | init (void *ptr) const =0 | 
| virtual bool | isRandomAccess () const | 
| std::string | kind () const | 
| virtual MarshalOps::const_iterator | load (void *container_ptr, size_t element_count, InputStream &stream, MarshalOps::const_iterator const begin, MarshalOps::const_iterator const end) const =0 | 
| virtual void | push (void *ptr, Value v) const =0 | 
| virtual void | setElement (void *ptr, int idx, Typelib::Value value) const | 
| virtual bool | visit (void *ptr, ValueVisitor &visitor) const =0 | 
| Static Public Member Functions | |
| static AvailableContainers | availableContainers () | 
| static Container const & | createContainer (Registry &r, std::string const &name, Type const &on) | 
| static Container const & | createContainer (Registry &r, std::string const &name, std::list< Type const * > const &on) | 
| static void | registerContainer (std::string const &name, ContainerFactory factory) | 
| Protected Member Functions | |
| virtual void | delete_if_impl (void *ptr, DeleteIfPredicate &pred) const =0 | 
| virtual bool | do_compare (Type const &other, bool equality, RecursionStack &stack) const | 
| Type * | do_merge (Registry ®istry, RecursionStack &stack) const | 
| virtual ContainerFactory | getFactory () const =0 | 
| Private Attributes | |
| std::string | m_kind | 
| Static Private Attributes | |
| static AvailableContainers * | s_available_containers | 
Base type for variable-length sets
Definition at line 423 of file typemodel.hh.
| typedef std::map<std::string, ContainerFactory> Typelib::Container::AvailableContainers | 
Definition at line 574 of file typemodel.hh.
| typedef Container const&(* Typelib::Container::ContainerFactory)(Registry &r, std::list< Type const * > const &base_type) | 
Definition at line 573 of file typemodel.hh.
| typedef std::vector<size_t> Typelib::Container::MarshalOps | 
Definition at line 453 of file typemodel.hh.
| Typelib::Container::Container | ( | std::string const & | kind, | 
| std::string const & | name, | ||
| size_t | size, | ||
| Type const & | of | ||
| ) | 
Definition at line 465 of file typemodel.cc.
Definition at line 472 of file typemodel.cc.
| virtual void Typelib::Container::clear | ( | void * | ptr | ) | const  [pure virtual] | 
| virtual bool Typelib::Container::compare | ( | void * | ptr, | 
| void * | other | ||
| ) | const  [pure virtual] | 
| virtual void Typelib::Container::copy | ( | void * | dst, | 
| void * | src | ||
| ) | const  [pure virtual] | 
| Container const & Typelib::Container::createContainer | ( | Registry & | r, | 
| std::string const & | name, | ||
| Type const & | on | ||
| ) |  [static] | 
Definition at line 485 of file typemodel.cc.
| Container const & Typelib::Container::createContainer | ( | Registry & | r, | 
| std::string const & | name, | ||
| std::list< Type const * > const & | on | ||
| ) |  [static] | 
Definition at line 491 of file typemodel.cc.
| void Typelib::Container::delete_if | ( | void * | ptr, | 
| Pred | pred | ||
| ) | const  [inline] | 
Definition at line 522 of file typemodel.hh.
| virtual void Typelib::Container::delete_if_impl | ( | void * | ptr, | 
| DeleteIfPredicate & | pred | ||
| ) | const  [protected, pure virtual] | 
| virtual void Typelib::Container::destroy | ( | void * | ptr | ) | const  [pure virtual] | 
| bool Typelib::Container::do_compare | ( | Type const & | other, | 
| bool | equality, | ||
| RecursionStack & | stack | ||
| ) | const  [protected, virtual] | 
Reimplemented from Typelib::Indirect.
Definition at line 499 of file typemodel.cc.
| Type * Typelib::Container::do_merge | ( | Registry & | registry, | 
| RecursionStack & | stack | ||
| ) | const  [protected, virtual] | 
Called by Type::merge when the type does not exist in registry already. This method has to create a new type in registry that matches the type definition of *this.
All types referenced by *this must be moved to their equivalent in registry. 
Implements Typelib::Type.
Definition at line 508 of file typemodel.cc.
| virtual MarshalOps::const_iterator Typelib::Container::dump | ( | void const * | container_ptr, | 
| size_t | element_count, | ||
| OutputStream & | stream, | ||
| MarshalOps::const_iterator const | begin, | ||
| MarshalOps::const_iterator const | end | ||
| ) | const  [pure virtual] | 
The marshalling process calls this method so that the contents of the container are dumped into the provided buffer.
In the marshalled stream, all containers are dumped as <element-count [64 bits]> <elements>
| virtual bool Typelib::Container::erase | ( | void * | ptr, | 
| Value | v | ||
| ) | const  [pure virtual] | 
| Typelib::Value Typelib::Container::getElement | ( | void * | ptr, | 
| int | idx | ||
| ) | const  [virtual] | 
On random access containers, allows to access elements by their index
Random access containers are containers for which isRandomAccess() returns true.
Throws std::logic_error on containers that are not random access
Reimplemented in Vector.
Definition at line 523 of file typemodel.cc.
| virtual size_t Typelib::Container::getElementCount | ( | void const * | ptr | ) | const  [pure virtual] | 
| virtual ContainerFactory Typelib::Container::getFactory | ( | ) | const  [protected, pure virtual] | 
| virtual long Typelib::Container::getNaturalSize | ( | ) | const  [pure virtual] | 
| virtual void Typelib::Container::init | ( | void * | ptr | ) | const  [pure virtual] | 
| bool Typelib::Container::isRandomAccess | ( | ) | const  [virtual] | 
If true, this is a random access container and both the getElement(int) and setElement(int) methods can be used
Containers are not random-access by default
Reimplemented in Vector.
Definition at line 520 of file typemodel.cc.
| std::string Typelib::Container::kind | ( | ) | const | 
Definition at line 469 of file typemodel.cc.
| virtual MarshalOps::const_iterator Typelib::Container::load | ( | void * | container_ptr, | 
| size_t | element_count, | ||
| InputStream & | stream, | ||
| MarshalOps::const_iterator const | begin, | ||
| MarshalOps::const_iterator const | end | ||
| ) | const  [pure virtual] | 
The marshalling process calls this method so that the contents of the container are loaded from the provided buffer.
In the marshalled stream, all containers are dumped as <element-count [64 bits]> <elements>
buffer of the first element of the container in_offset | virtual void Typelib::Container::push | ( | void * | ptr, | 
| Value | v | ||
| ) | const  [pure virtual] | 
| void Typelib::Container::registerContainer | ( | std::string const & | name, | 
| ContainerFactory | factory | ||
| ) |  [static] | 
Definition at line 478 of file typemodel.cc.
| void Typelib::Container::setElement | ( | void * | ptr, | 
| int | idx, | ||
| Typelib::Value | value | ||
| ) | const  [virtual] | 
On random access containers, allows to set an element's value by its index
Random access containers are containers for which isRandomAccess() returns true.
Throws std::logic_error on containers that are not random access
Reimplemented in Vector.
Definition at line 521 of file typemodel.cc.
| virtual bool Typelib::Container::visit | ( | void * | ptr, | 
| ValueVisitor & | visitor | ||
| ) | const  [pure virtual] | 
| std::string Typelib::Container::m_kind  [private] | 
Definition at line 425 of file typemodel.hh.
| Container::AvailableContainers * Typelib::Container::s_available_containers  [static, private] | 
Definition at line 587 of file typemodel.hh.