m_Parents.push_back(parent);
}
-Dictionary::Ptr ConfigItem::CalculateProperties(void) const
+void ConfigItem::CalculateProperties(Dictionary::Ptr dictionary) const
{
- Dictionary::Ptr result = make_shared<Dictionary>();
-
vector<string>::const_iterator it;
for (it = m_Parents.begin(); it != m_Parents.end(); it++) {
ConfigItem::Ptr parent = ConfigItem::GetObject(GetType(), *it);
throw domain_error(message.str());
}
- parent->GetExpressionList()->Execute(result);
+ parent->CalculateProperties(dictionary);
}
- m_ExpressionList->Execute(result);
-
- return result;
+ m_ExpressionList->Execute(dictionary);
}
ObjectSet<ConfigItem::Ptr>::Ptr ConfigItem::GetAllObjects(void)
m_DynamicObject = dobj;
}
- dobj->SetConfig(CalculateProperties());
+ Dictionary::Ptr properties = make_shared<Dictionary>();
+ CalculateProperties(properties);
+ dobj->SetConfig(properties);
dobj->Commit();
ConfigItem::Ptr ci = GetObject(GetType(), GetName());
ExpressionList::Ptr GetExpressionList(void) const;
void SetExpressionList(const ExpressionList::Ptr& exprl);
- Dictionary::Ptr CalculateProperties(void) const;
+ void CalculateProperties(Dictionary::Ptr dictionary) const;
void Commit(void);
void Unregister(void);
return 1;
}
- for (int i = 0; i < 10; i++) {
+ for (int i = 0; i < 10000; i++) {
vector<ConfigItem::Ptr> objects = ConfigCompiler::CompileFile(string(argv[1]));
ConfigVM::ExecuteItems(objects);