class InheritanceThe SCATMECH library makes heavy use of class inheritance. In order to aid run-time creation of instances of these classes, it is helpful to have a database of all the child classes for any parent class. The class Inheritance enables such a database of the inheritance structure of a class. Thus, each class which is part of an inheritance structure has a static data member static Inheritance inheritance; and a virtual member function virtual Model* clone() const; This static member contains pointers to all of the class' children. A macro Get_Model(_Model) creates a menu, from which a user can chose a child class of Model, and returns a pointer to a _Model. Another macro Get_Named_Model(_Model,name) returns a _Model named name. Include file:#include "inherit.h" Source code:inherit.cpp See also:SCATMECH Home, BRDF_Model, SphericalScatterer, PSD_Function, Slope_Distribution_Function, Shadow_Function, Phase_Function Definition of public elements:
class Inheritance {
Inheritance(const string& name,const string& description);
string get_name();
string get_description();
Model* get_model();
Model* get_named_model(const string& name);
bool is_virtual() const;
bool is_instantiable() const;
const Inheritance* get_named_inheritance(const std::string& model) const;
const InheritanceList& get_children() const;
const Inheritance* get_parent_inheritance() const;
void get_parameters(ModelParameterList& result,bool top=true) const;
const ModelParameterBase* get_modelparameter(const std::string& param) const;
Model* make() const;
Model* clone(const Model& m) const;
void Register_Model();
};
#define Get_Model(_Model) _Model::inheritance.Get_Model()
#define Get_Named_Model(_Model,name) _Model::inheritance.Get_Named_Model(name)
#define Register_Model(_Model) _Model::inheritance.Register_Model()
void Register_SCATMECH_Models();
Inheritance(const string& name,const string& description)
string get_name()
|