InFact
Interpreter and factory for easily creating C++ objects at run-time
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Class Hierarchy
This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 123]
oCinfact::Constructor< T >An interface with a single virtual method that constructs a concrete instance of the abstract type T
oCinfact::Constructor< Animal >
|oCinfact::CowConstructor
|\Cinfact::SheepConstructor
oCinfact::Constructor< Date >
|\Cinfact::DateImplConstructor
oCinfact::Constructor< Person >
|\Cinfact::PersonImplConstructor
oCinfact::Constructor< PetOwner >
|\Cinfact::HumanPetOwnerConstructor
oCinfact::EnvironmentAn interface for an environment in which variables of various types are mapped to their values
|\Cinfact::EnvironmentImplProvides a set of named variables and their types, as well as the values for those variables
oCinfact::FactoryBaseAn interface for all Factory instances, specifying a few pure virtual methods
|\Cinfact::Factory< T >Factory for dynamically created instance of the specified type
oCinfact::FactoryConstructibleAn interface simply to make it easier to implement Factory-constructible types by implementing both required methods to do nothing (use of this interface is completely optional; read more for more information)
|oCinfact::AnimalA very simple class to represent an animal
||oCinfact::CowA class to represent a cow
||\Cinfact::SheepA sheep
|oCinfact::DateAn interface to represent a date
||\Cinfact::DateImplAn implementation of the Date interface that can be constructed by a Factory (because of the REGISTER_DATE(DateImpl) declaration in example.cc)
|oCinfact::PersonAn interface representing a person
||\Cinfact::PersonImplA concrete implementation of the Person interface that can be constructed by a Factory (because of the REGISTER_PERSON(PersonImpl) declaration in example.cc)
|\Cinfact::PetOwnerAn owner of a pet
| \Cinfact::HumanPetOwnerA concrete type of PetOwner that can be constructed by a Factory<PetOwner> instance
oCinfact::FactoryContainerA class to hold all Factory instances that have been created
oCinfact::InitializersA container for all the member initializers for a particular Factory-constructible instance
oCinfact::InterpreterProvides an interpreter for assigning primitives and Factory-constructible objects to named variables, as well as vectors thereof
oCinfact::IStreamBuilderAn interface for classes that can build istreams for named files
|\Cinfact::DefaultIStreamBuilderThe default implementation for the IStreamBuilder interface, returning std::ifstream instances
oCinfact::MemberInitializerAn interface for data member initializers of members of a Factory-constructible object
|\Cinfact::TypedMemberInitializer< T >A concrete, typed implementation of the MemberInitializer base class
oCinfact::StreamInitializerAn interface that allows for a primitive, Factory-constructible object or vector thereof to be initialized based on the next token or tokens from a token stream
|oCinfact::Initializer< T >A class to initialize a Factory-constructible object
|oCinfact::Initializer< bool >A specialization to initialize bool data members
|oCinfact::Initializer< double >A specialization to initialize double data members
|oCinfact::Initializer< int >A specialization to allow Factory-constructible objects to initialize int data members
|\Cinfact::Initializer< string >A specialization to initialize string data members
oCinfact::StreamTokenizerA simple class for tokenizing a stream of tokens for the formally specified language used to construct objects for the InFact framework
oCinfact::StreamTokenizer::TokenInformation about a token read from the underlying stream
oCinfact::TypeName< T >We use the templated class TypeName to be able to take an actual C++ type and get the type name string used by the Interpreter and Environment classes
oCinfact::TypeName< bool >A specialization so that an object of type bool converts to "bool"
oCinfact::TypeName< double >A specialization so that an object of type double converts to "double"
oCinfact::TypeName< int >A specialization so that an object of type int converts to "int"
oCinfact::TypeName< shared_ptr< T > >A partial specialization so that an object of type shared_ptr<T>, where T is some Factory-constructible type, converts to the string produced by TypeName<T>
oCinfact::TypeName< string >A specialization so that an object of type string converts to "string"
oCinfact::TypeName< vector< T > >A partial specialization so that an object of type vector<T> gets converted to the type name of T followed by the string "[]", equivalent to the result of executing the following expression:
oCinfact::ValueString< T >A template class that helps print out values with ostream& operator support and vectors of those values
oCinfact::ValueString< bool >A specialization of the ValueString class to support printing of boolean values
oCinfact::ValueString< shared_ptr< T > >A partial specialization of the ValueString class to support printing of shared_ptr's to objects, where we simply print the typeid name followed by a colon character followed by the pointer address
oCinfact::ValueString< string >A specialization of the ValueString class to support printing of string values
oCinfact::ValueString< vector< T > >A partial specialization of the ValueString class to support printing of vectors of values
\Cinfact::VarMapBaseA base class for a mapping from variables of a specific type to their values
 oCinfact::VarMapImpl< T, Derived >A partial implementation of the VarMapBase interface that is common to both VarMap<T> and the VarMap<vector<T> > partial specialization
 oCinfact::VarMapImpl< T, VarMap< T > >
 |\Cinfact::VarMap< T >A container to hold the mapping between named variables of a specific type and their values
 \Cinfact::VarMapImpl< vector< T >, VarMap< vector< T > > >
  \Cinfact::VarMap< vector< T > >A partial specialization to allow initialization of a vector of values, where the values can either be literals (if T is a primitive type), spec strings for constructing Factory-constructible objects, or variable names (where each variable must be of type T)