コード例 #1
0
ファイル: PatchRegistry.cpp プロジェクト: simu/OwlSim
StringArray PatchRegistry::getNames(){
  Creators::iterator iterator = getCreators().begin();
  Creators::iterator last = getCreators().end();
  StringArray result;
  for(; iterator != last; ++iterator){
    result.add((const char*)(iterator->first).c_str());
  }
  return result;
}
コード例 #2
0
ファイル: KiwiEngine_Factory.hpp プロジェクト: Musicoll/Kiwi
 static void add(std::string const& name)
 {
     static_assert(!std::is_abstract<TEngine>::value,
                   "The engine object must not be abstract.");
 
     static_assert(std::is_constructible<TEngine,
                   model::Object const&, Patcher&, std::vector<Atom> const&>::value,
                   "The engine object must have a valid constructor.");
     
     assert(!name.empty());
     assert(modelHasObject(name) && "The model counterpart does not exist");
     
     auto& creators = getCreators();
     assert(creators.count(name) == 0 && "The object already exists");
     
     creators[name] = [](model::Object const& model,
                         Patcher& patcher,
                         std::vector<Atom> const& args) -> TEngine*
     {
         return new TEngine(model, patcher, args);
     };
 }
コード例 #3
0
ファイル: PatchRegistry.cpp プロジェクト: simu/OwlSim
void PatchRegistry::registerPatch(const std::string& name, PatchCreator creator){
  getCreators()[name] = creator;
}
コード例 #4
0
ファイル: PatchRegistry.cpp プロジェクト: simu/OwlSim
Patch* PatchRegistry::create(const std::string& name) {
  // creates an object from a string
  const Creators::const_iterator iter = getCreators().find(name);
  return iter == getCreators().end() ? NULL : (*iter->second)();
  // if found, execute the creator function pointer
}