|
Cortex 6.0.0
|
#include <Object.h>
Inheritance diagram for IECore::Object:Classes | |
| class | AbstractTypeDescription |
| class | CopyContext |
| class | LoadContext |
| The class provided to the load() method implemented by subclasses. More... | |
| class | MemoryAccumulator |
| class | SaveContext |
| The class provided to the save() method implemented by subclasses. More... | |
| class | TypeDescription |
Public Types | |
| typedef ObjectPtr(* | CreatorFn )(void *data) |
Public Member Functions | |
| IE_CORE_DECLARERUNTIMETYPED (Object, RunTimeTyped) | |
Object interface | |
The following functions define the interface to which all Object subclasses must adhere. Note that the IE_CORE_DECLAREOBJECT macro is provided to simplify the declaration of these functions for your own derived classes. Note also that there is additional protected interface which you must implement - this too is declared (but not implemented) by the IE_CORE_DECLAREOBJECT macro. | |
| ObjectPtr | copy () const |
| void | copyFrom (const Object *other) |
| void | save (IndexedIOInterfacePtr ioInterface, const IndexedIO::EntryID &name) const |
| virtual bool | isEqualTo (const Object *other) const =0 |
| virtual bool | isNotEqualTo (const Object *other) const |
| bool | operator== (const Object &other) const |
| Calls isEqualTo() for people who prefer to use the operator syntax. | |
| bool | operator!= (const Object &other) const |
| Calls isNotEqualTo() for people who prefer to use the operator syntax. | |
| size_t | memoryUsage () const |
| Returns the number of bytes this instance occupies in memory. | |
Static Public Member Functions | |
| static void | registerType (TypeId typeId, const std::string &typeName, CreatorFn creator, void *data=0) |
| Register a new Object-derived type with the system. The specified void* data is passed into the creator function. | |
Object factory | |
The following static functions provide the ability to create an Object of a given type or typeId, as well as providing conversions between type names and TypeIds. | |
| static bool | isType (TypeId typeId) |
| Returns true if typeId is a valid registered Object type. | |
| static bool | isType (const std::string &typeName) |
| Returns true if typeName is a valid registered Object type. | |
| static bool | isAbstractType (TypeId typeId) |
| static bool | isAbstractType (const std::string &typeName) |
| As above but taking a type name. | |
| static ObjectPtr | create (TypeId typeId) |
| static ObjectPtr | create (const std::string &typeName) |
| static ObjectPtr | load (IndexedIOInterfacePtr ioInterface, const IndexedIO::EntryID &name) |
Protected Member Functions | |
| virtual void | copyFrom (const Object *other, CopyContext *context)=0 |
| IE_CORE_DECLAREPTR (LoadContext) | |
| virtual void | save (SaveContext *context) const =0 |
| virtual void | load (LoadContextPtr context)=0 |
| virtual void | memoryUsage (MemoryAccumulator &accumulator) const =0 |
A base class defining copying and streaming.
| ObjectPtr IECore::Object::copy | ( | ) | const |
Returns a deep copy of this object. In subclasses an identical function is provided which returns a pointer to the subclass rather than to this base class.
Reimplemented in IECore::TypedData< T >, IECore::TypedData< std::vector< T > >, and IECore::TypedData< std::vector< Imath::Vec3< PointBaseType > > >.
| virtual void IECore::Object::copyFrom | ( | const Object * | other, |
| CopyContext * | context | ||
| ) | [protected, pure virtual] |
Must be implemented in all subclasses to make a deep copy of all member data, after calling BaseClass::copyFrom() to allow the base class to do the same. When making copies of held member data derived from Object, you /must/ use the context object provided, rather than calling copy() or copyFrom() yourself.
Implemented in IECore::TypedData< T >, IECore::TypedData< std::vector< T > >, and IECore::TypedData< std::vector< Imath::Vec3< PointBaseType > > >.
| void IECore::Object::copyFrom | ( | const Object * | other | ) |
Copies from another object. Throws an IECore::InvalidArgumentException if other is not an instance of this object.
| static ObjectPtr IECore::Object::create | ( | TypeId | typeId | ) | [static] |
Creates an instance of an object of the specified type. Throws an Exception if typeId is not a valid type.
| static ObjectPtr IECore::Object::create | ( | const std::string & | typeName | ) | [static] |
Creates an instance of an object of the specified type. Throws an Exception if typeName is not a valid type.
| static bool IECore::Object::isAbstractType | ( | TypeId | typeId | ) | [static] |
| virtual bool IECore::Object::isEqualTo | ( | const Object * | other | ) | const [pure virtual] |
Returns true if this object is equal to the other. Should be reimplemented appropriately in derived classes, first calling your base class isEqualTo() and returning false straight away if that returns false. The Object level implementation checks that the types are identical, so you can safely perform a staticPointerCast<YourClass>( other ) if your base class isEqualTo() doesn't return false.
Implemented in IECore::TypedData< T >, IECore::TypedData< std::vector< T > >, and IECore::TypedData< std::vector< Imath::Vec3< PointBaseType > > >.
| virtual bool IECore::Object::isNotEqualTo | ( | const Object * | other | ) | const [virtual] |
Returns true if this object is not equal to the other. A default implementation for this returns the negation of isEqualTo(), but you may wish to override it if you can provide a faster implementation for a specific subclass.
| static ObjectPtr IECore::Object::load | ( | IndexedIOInterfacePtr | ioInterface, |
| const IndexedIO::EntryID & | name | ||
| ) | [static] |
Loads an object previously saved with the given name in the current directory of ioInterface.
| virtual void IECore::Object::load | ( | LoadContextPtr | context | ) | [protected, pure virtual] |
Must be implemented in all derived classes. Implementations should first call the parent class load() method, then call context->container() before loading their member data from that container. context is a smart pointer to a reference counted object to allow you to keep the context and perform lazy loading at a later date - although this is not yet used by any of the core types. A call to context->container() will throw an Exception if the corresponding save() method did not create a container.
Implemented in IECore::TypedData< T >, IECore::TypedData< std::vector< T > >, and IECore::TypedData< std::vector< Imath::Vec3< PointBaseType > > >.
| virtual void IECore::Object::memoryUsage | ( | MemoryAccumulator & | accumulator | ) | const [protected, pure virtual] |
Must be implemented in all derived classes to specify the amount of memory they are using. An implementation must add it's memory usage to the accumulator before calling memoryUsage() on its base class.
Implemented in IECore::TypedData< T >, IECore::TypedData< std::vector< T > >, and IECore::TypedData< std::vector< Imath::Vec3< PointBaseType > > >.
| void IECore::Object::save | ( | IndexedIOInterfacePtr | ioInterface, |
| const IndexedIO::EntryID & | name | ||
| ) | const |
Saves the object in the current directory of ioInterface, in a subdirectory with the specified name.
| virtual void IECore::Object::save | ( | SaveContext * | context | ) | const [protected, pure virtual] |
Must be implemented in all derived classes. Implementations should first call the parent class save() method, then call context->container() before filling the returned container with their member data. Classes with no member data may omit the call to container(), resulting in smaller file sizes.
Implemented in IECore::TypedData< T >, IECore::TypedData< std::vector< T > >, and IECore::TypedData< std::vector< Imath::Vec3< PointBaseType > > >.
1.7.3