IMP Reference Guide
develop.36b5e40f34,2024/10/13
The Integrative Modeling Platform
|
Helper macros for implementing IMP
Objects.
More...
#include <IMP/kernel_config.h>
#include "doxygen_macros.h"
#include "ref_counted_macros.h"
#include "Vector.h"
#include "Pointer.h"
#include "WeakPointer.h"
#include "SetLogState.h"
Go to the source code of this file.
Macros | |
#define | IMP_GENERIC_OBJECT(Name, lcname, targument, carguments, cparguments) |
Typedefs a default instantiation for a generic (templated) object. More... | |
#define | IMP_NEW(Typename, varname, args) IMP::Pointer<Typename> varname(new Typename args) |
Declare a ref counted pointer to a new object. More... | |
#define | IMP_OBJECT_METHODS(Name) |
Define the basic things needed by any Object. More... | |
#define | IMP_OBJECT_SERIALIZE_DECL(Name) |
Declare methods needed for serialization of Object pointers. More... | |
#define | IMP_OBJECT_SERIALIZE_IMPL(Name) |
Add machinery needed for serialization of Object pointers. More... | |
#define | IMP_OBJECTS(Name, PluralName) |
Define the types for storing lists of object pointers. More... | |
Helper macros for implementing IMP
Objects.
Copyright 2007-2022 IMP Inventors. All rights reserved.
Definition in file object_macros.h.
#define IMP_GENERIC_OBJECT | ( | Name, | |
lcname, | |||
targument, | |||
carguments, | |||
cparguments | |||
) |
Typedefs a default instantiation for a generic (templated) object.
Define type [Name] to be an instantiation of Generic[Name] with template targument, and a function create_[lcname]() that generates a newly allocated object of type [Name], taking parameters [carguments] and internally paassing [cparguments] to the constructor.
Definition at line 60 of file object_macros.h.
#define IMP_NEW | ( | Typename, | |
varname, | |||
args | |||
) | IMP::Pointer<Typename> varname(new Typename args) |
Declare a ref counted pointer to a new object.
[in] | Typename | The namespace qualified type being declared |
[in] | varname | The name for the ref counted pointer |
[in] | args | The arguments to the constructor, or () if there are none. Please read the documentation for IMP::Pointer before using. |
Definition at line 74 of file object_macros.h.
#define IMP_OBJECT_METHODS | ( | Name | ) |
Define the basic things needed by any Object.
This defines
Definition at line 25 of file object_macros.h.
#define IMP_OBJECT_SERIALIZE_DECL | ( | Name | ) |
Declare methods needed for serialization of Object pointers.
When an Object subclass is serialized via an IMP::Pointer, the serialization subsystem needs to know the most derived type so that the full information is saved/loaded. This macro ensures that the necessary machinery is added, and should be placed in the header file inside the declaration of the Object subclass. It is similar to cereal's CEREAL_REGISTER_TYPE macro, but stores the type information in precisely one place (the IMP::Object class) rather than relying on the linker to keep this information unique, as cereal attempts to do.
This macro needs to be paired with IMP_OBJECT_SERIALIZE_IMPL, which is usually placed in the corresponding .cpp file for the class.
[in] | Name | The name of the class. |
Definition at line 95 of file object_macros.h.
#define IMP_OBJECT_SERIALIZE_IMPL | ( | Name | ) |
Add machinery needed for serialization of Object pointers.
[in] | Name | The fully-qualified name of the class. |
Definition at line 114 of file object_macros.h.
#define IMP_OBJECTS | ( | Name, | |
PluralName | |||
) |
Define the types for storing lists of object pointers.
The macro defines the types PluralName and PluralNameTemp, which are vectors of either reference-counting or non reference-counting pointers to Name objects, respectively. PluralName should be Names unless the English spelling is different.
Definition at line 44 of file object_macros.h.