- /** Private data store.
- * Holds all extensible metadata for the class.
- */
- ExtensibleStore Extension_Items;
-
-public:
-
- /** Extend an Extensible class.
- *
- * @param key The key parameter is an arbitary string which identifies the extension data
- * @param p This parameter is a pointer to any data you wish to associate with the object
- *
- * You must provide a key to store the data as via the parameter 'key' and store the data
- * in the templated parameter 'p'.
- * The data will be inserted into the map. If the data already exists, you may not insert it
- * twice, Extensible::Extend will return false in this case.
- *
- * @return Returns true on success, false if otherwise
- */
- template<typename T> bool Extend(const std::string &key, T* p)
- {
- /* This will only add an item if it doesnt already exist,
- * the return value is a std::pair of an iterator to the
- * element, and a bool saying if it was actually inserted.
- */
- return this->Extension_Items.insert(std::make_pair(key, (char*)p)).second;
- }
+ public:
+ interfacebase() {}
+ private:
+ interfacebase(const interfacebase&);
+ void operator=(const interfacebase&);
+ void* operator new(size_t);
+ void operator delete(void*);
+};