![]() |
This class is used to facilitate file loading. More...
#include <SurgSim/Framework/Asset.h>
Public Member Functions | |
Asset () | |
Constructor. More... | |
Asset (const Asset &rhs) | |
Copy Constructor. More... | |
virtual | ~Asset () |
Destructor. More... | |
void | load (const std::string &fileName, const SurgSim::Framework::ApplicationData &data) |
Load a file with given name using 'data' as look up path(s). More... | |
void | load (const std::string &fileName) |
Overloaded function using SurgSim::Framework::Runtime::getApplicationData() as look up path(s). More... | |
std::string | getFileName () const |
Return the name of file loaded by this class. More... | |
virtual std::string | getClassName () const =0 |
Support serialization with a classname. More... | |
![]() | |
Accessible () | |
Default Constructor. More... | |
~Accessible () | |
Destructor. More... | |
template<class T > | |
T | getValue (const std::string &name) const |
Retrieves the value with the name by executing the getter if it is found and tries to convert it to the given type. More... | |
boost::any | getValue (const std::string &name) const |
Retrieves the value with the name by executing the getter if it is found. More... | |
template<class T > | |
bool | getValue (const std::string &name, T *value) const |
Retrieves the value with the name by executing the getter if it is found, and converts it to the type of the output parameter. More... | |
void | setValue (const std::string &name, const boost::any &value) |
Sets a value of a property that has setter. More... | |
bool | isReadable (const std::string &name) const |
Check whether a property is readable. More... | |
bool | isWriteable (const std::string &name) const |
Check whether a property is writable. More... | |
void | setGetter (const std::string &name, GetterType func) |
Sets a getter for a given property. More... | |
void | setSetter (const std::string &name, SetterType func) |
Sets a setter for a given property. More... | |
void | setAccessors (const std::string &name, GetterType getter, SetterType setter) |
Sets the accessors getter and setter in one function. More... | |
void | removeAccessors (const std::string &name) |
Removes all the accessors (getter and setter) for a given property. More... | |
void | forwardProperty (const std::string &name, const Accessible &target, const std::string &targetProperty) |
Adds a property with the given name that uses the targets accessors, in effect forwarding the value to the target. More... | |
void | setSerializable (const std::string &name, EncoderType encoder, DecoderType decoder) |
Sets the functions used to convert data from and to a YAML::Node. More... | |
void | setDecoder (const std::string &name, DecoderType decoder) |
Sets the functions used to convert data from a YAML::Node. More... | |
YAML::Node | encode () const |
Encode this Accessible to a YAML::Node. More... | |
void | decode (const YAML::Node &node, const std::vector< std::string > &ignoredProperties=std::vector< std::string >()) |
Decode this Accessible from a YAML::Node, will throw an exception if the data type cannot be converted. More... | |
template<> | |
boost::any | getValue (const std::string &name) const |
Protected Member Functions | |
virtual bool | doLoad (const std::string &filePath)=0 |
Derived classes will overwrite this method to do actual loading. More... | |
Private Member Functions | |
void | serializeFileName (SurgSim::Framework::Accessible *accessible) |
Wrap the registration calls for the filename property, which is more complicated due to the overloaded function call load() More... | |
Private Attributes | |
friend | AssetTest |
std::string | m_fileName |
Name of the file to be loaded. More... | |
Additional Inherited Members | |
![]() | |
typedef std::function< boost::any(void)> | GetterType |
typedef std::function< void(boost::any)> | SetterType |
typedef std::function< YAML::Node(void)> | EncoderType |
typedef std::function< void(const YAML::Node *)> | DecoderType |
![]() | |
typedef ObjectFactory< Asset > | FactoryType |
![]() | |
static FactoryType & | getFactory () |
This class is used to facilitate file loading.
It uses the static ApplicationData in SurgSim::Framework::Runtime to load file. Classes not in SurgSim::Framework::Component hierarchy should inherit this class in order to load a file. Components that take assets as parameters should, in addition to their general set<Asset>()
and get<Asset>()
functions, implement a helper function load<Asset>()
, that creates and loads the specified asset. Additionally, a special YAML parameter (<Asset>FileName
) should be implemented, that can be used to specify the asset, without having to specify the whole asset in serialized form.
SurgSim::Framework::Asset::Asset | ( | ) |
Constructor.
SurgSim::Framework::Asset::Asset | ( | const Asset & | rhs | ) |
Copy Constructor.
|
virtual |
Destructor.
|
protectedpure virtual |
Derived classes will overwrite this method to do actual loading.
filePath | Absolute path to the file. |
Implemented in SurgSim::DataStructures::OctreeNode< Data >, SurgSim::DataStructures::TriangleMesh< VertexData, EdgeData, TriangleData >, SurgSim::DataStructures::TriangleMesh< VertexData, SurgSim::DataStructures::EmptyData, SurgSim::DataStructures::EmptyData >, SurgSim::DataStructures::TriangleMesh< SurgSim::DataStructures::EmptyData, SurgSim::DataStructures::EmptyData, SurgSim::DataStructures::NormalData >, SurgSim::DataStructures::TriangleMesh< VertexData, EdgeData, SegmentEmptyData >, SurgSim::Graphics::Mesh, SurgSim::Math::MeshShape, SurgSim::Math::SegmentMeshShape, SurgSim::Graphics::OsgModel, SurgSim::Graphics::OsgFont, SurgSim::Physics::Fem3D, SurgSim::Physics::Fem2D, and SurgSim::Physics::Fem1D.
|
pure virtual |
Support serialization with a classname.
Implemented in SurgSim::DataStructures::OctreeNode< Data >, SurgSim::DataStructures::TriangleMesh< VertexData, EdgeData, TriangleData >, SurgSim::DataStructures::TriangleMesh< VertexData, SurgSim::DataStructures::EmptyData, SurgSim::DataStructures::EmptyData >, SurgSim::DataStructures::TriangleMesh< SurgSim::DataStructures::EmptyData, SurgSim::DataStructures::EmptyData, SurgSim::DataStructures::NormalData >, and SurgSim::DataStructures::TriangleMesh< VertexData, EdgeData, SegmentEmptyData >.
std::string SurgSim::Framework::Asset::getFileName | ( | ) | const |
Return the name of file loaded by this class.
void SurgSim::Framework::Asset::load | ( | const std::string & | fileName, |
const SurgSim::Framework::ApplicationData & | data | ||
) |
Load a file with given name using 'data' as look up path(s).
If 'fileName' is not empty and the file is found, this method calls 'doLoad()' to load the file. Assertions will fail if 'fileName' is empty or file is not found or file loading is unsuccessful.
fileName | Name of the file to be loaded. |
data | ApplicationData which provides the runtime look up path(s). |
void SurgSim::Framework::Asset::load | ( | const std::string & | fileName | ) |
Overloaded function using SurgSim::Framework::Runtime::getApplicationData() as look up path(s).
fileName | Name of the file to be loaded. |
|
private |
Wrap the registration calls for the filename property, which is more complicated due to the overloaded function call load()
accessible | 'this' pointer of derived class. |
|
private |
|
private |
Name of the file to be loaded.