ModulePtr default_constructible_type(const std::string &type, ModulePtr m = ModulePtr(new Module())) { m->add(constructor<Type ()>(), type); return m; }
void Slice::ObjCGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) { ModulePtr m = ModulePtr::dynamicCast(cont); if(m) { bool error = false; bool foundPrefix = false; StringList meta = getMetaData(m); for(StringList::iterator p = meta.begin(); p != meta.end();) { string s = *p++; const string prefix = "objc:prefix:"; string name; if(s.find(prefix) == 0) { foundPrefix = true; name = trim(s.substr(prefix.size())); if(name.empty()) { m->definitionContext()->warning(InvalidMetaData, m->definitionContext()->filename(), m->line(), _msg + " `" + s + "'"); meta.remove(s); error = true; } else { if(!addModule(m, name)) { modulePrefixError(m, s); } } } else { m->definitionContext()->warning(InvalidMetaData, m->definitionContext()->filename(), m->line(), _msg + " `" + s + "'"); meta.remove(s); error = true; } } setMetaData(m, meta); if(!error && !foundPrefix) { StringList names = splitScopedName(m->scoped()); string name; for(StringList::const_iterator i = names.begin(); i != names.end(); ++i) { name += *i; } if(!addModule(m, name)) { modulePrefixError(m, ""); } } } EnumPtr en = EnumPtr::dynamicCast(cont); if(en) { StringList meta = getMetaData(en); for(StringList::iterator p = meta.begin(); p != meta.end();) { string s = *p; if(s != "objc:scoped") { en->definitionContext()->warning(InvalidMetaData, en->definitionContext()->filename(), en->line(), _msg + " `" + s + "'"); meta.erase(p++); } else { ++p; } } setMetaData(en, meta); } }
void ModuleManager::ensureModuleLoaded(const std::string& moduleName) { ModulePtr module = g_modules.getModule(moduleName); if(!module || !module->load()) g_logger.fatal(stdext::format("Unable to load '%s' module", moduleName)); }