37 template <
typename GUM_SCALAR >
43 template <
typename GUM_SCALAR >
50 template <
typename GUM_SCALAR >
52 for (Idx i = Size(m_imports.size()); i > 0; i--)
53 delete m_imports[i - 1];
55 for (Size i = Size(m_sessions.size()); i > 0; i--)
56 delete m_sessions[i - 1];
59 template <
typename GUM_SCALAR >
64 template <
typename GUM_SCALAR >
69 template <
typename GUM_SCALAR >
74 template <
typename GUM_SCALAR >
77 for (Idx i = Size(m_imports.size()); i > 0; i--)
78 if (m_imports[i - 1]->alias == alias)
return m_imports[i - 1]->value;
83 template <
typename GUM_SCALAR >
88 template <
typename GUM_SCALAR >
90 const std::string& import,
91 const std::string& alias) {
92 m_imports.push_back(
new ImportCommand(line, import, alias));
94 if (alias ==
"default") m_mainImport = m_imports.back();
97 template <
typename GUM_SCALAR >
99 const std::string& import,
101 m_imports.push_back(
new ImportCommand(line, import, import));
103 if (ismain) m_mainImport = m_imports.back();
106 template <
typename GUM_SCALAR >
112 template <
typename GUM_SCALAR >
115 m_sessions.push_back(
new O3prmrSession< GUM_SCALAR >(session));
118 template <
typename GUM_SCALAR >
122 if (!m_package.empty()) {
123 output +=
"package " +
m_package +
";\n";
127 for (
auto i = m_imports.begin(); i < m_imports.end(); i++)
128 output += (*i)->toString() +
"\n";
132 for (
auto i = m_sessions.begin(); i < m_sessions.end(); i++)
133 output += (*i)->toString() +
"\n";
138 template <
typename GUM_SCALAR >
141 const std::vector< ImportCommand* >& imports = c.imports();
143 for (std::vector< ImportCommand* >::const_iterator i = imports.begin();
148 const std::vector< O3prmrSession< GUM_SCALAR >* >& sessions = c.sessions();
150 if (sessions.size() == 1 && sessions.back()->name() ==
"default") {
151 *(
this->m_sessions.back()) += *(sessions.back());
153 for (
auto i = sessions.begin(); i != sessions.end(); i++)
161 template <
typename GUM_SCALAR >
166 template <
typename GUM_SCALAR >
173 template <
typename GUM_SCALAR >
175 for (Idx i = Size(m_commands.size()); i >= 1; i--)
176 delete m_commands[i - 1];
181 template <
typename GUM_SCALAR >
186 template <
typename GUM_SCALAR >
191 template <
typename GUM_SCALAR >
193 m_commands.push_back(command);
196 template <
typename GUM_SCALAR >
198 const std::string& leftValue,
199 const std::string& rightValue) {
200 addCommand(
new ObserveCommand< GUM_SCALAR >(line, leftValue, rightValue));
203 template <
typename GUM_SCALAR >
205 const std::string& value) {
209 template <
typename GUM_SCALAR >
211 const std::string& value) {
212 addCommand(
new QueryCommand< GUM_SCALAR >(line, value));
215 template <
typename GUM_SCALAR >
217 const std::string& value) {
221 template <
typename GUM_SCALAR >
223 const std::string& value) {
227 template <
typename GUM_SCALAR >
230 case O3prmrCommand::RequestType::SetEngine:
231 m_commands.push_back(
232 new SetEngineCommand(*(SetEngineCommand*)command));
235 case O3prmrCommand::RequestType::SetGndEngine:
236 m_commands.push_back(
237 new SetGndEngineCommand(*(SetGndEngineCommand*)command));
240 case O3prmrCommand::RequestType::Observe:
241 m_commands.push_back(
new ObserveCommand< GUM_SCALAR >(
242 *(ObserveCommand< GUM_SCALAR >*)command));
245 case O3prmrCommand::RequestType::Unobserve:
246 m_commands.push_back(
new UnobserveCommand< GUM_SCALAR >(
247 *(UnobserveCommand< GUM_SCALAR >*)command));
250 case O3prmrCommand::RequestType::Query:
251 m_commands.push_back(
new QueryCommand< GUM_SCALAR >(
252 *(QueryCommand< GUM_SCALAR >*)command));
257 template <
typename GUM_SCALAR >
261 output +=
"request " +
m_name +
" {\n";
263 for (std::vector< O3prmrCommand* >::const_iterator i = m_commands.begin();
264 i < m_commands.end();
266 output +=
"\t" + (*i)->toString() +
"\n";
273 template <
typename GUM_SCALAR >
276 for (std::vector< O3prmrCommand* >::const_iterator i
277 = c.m_commands.begin();
278 i < c.m_commands.end();
void addObserve(int line, const std::string &leftValue, const std::string &rightValue)
std::map< const PRMSystem< GUM_SCALAR > *, PRMInference< GUM_SCALAR > *> m_infEngineMap
void addSession(const O3prmrSession< GUM_SCALAR > &session)
virtual std::string toString() const
INLINE void emplace(Args &&... args)
void addImport(int line, const std::string &import, bool ismain)
PRMInference< GUM_SCALAR >::Chain chain
void addCommand(O3prmrCommand *command)
std::vector< ImportCommand *> imports() const
std::vector< O3prmrCommand *> commands() const
std::string filename() const
std::string aliasToImport(const std::string &alias)
void addImport(int line, const std::string &import, const std::string &alias)
SetGndEngineCommand(int line, const std::string &value)
O3prmrSession(const std::string &name=std::string())
void addUnobserve(int line, const std::string &value)
O3prmrSession(const O3prmrSession &s)
SetEngineCommand(int line, const std::string &value)
O3prmrContext(const std::string &filename=std::string())
O3prmrContext & operator+=(const O3prmrContext &c)
ParamScopeData(const std::string &s, const PRMReferenceSlot< GUM_SCALAR > &ref, Idx d)
PRMInference< GUM_SCALAR >::Chain chain
O3prmrContext(const O3prmrContext &s)
void setPackage(const std::string &package)
This is an abstract class.
Represent a o3prmr context, with an import, and some sequencials commands.
std::vector< O3prmrSession< GUM_SCALAR > *> sessions() const
ImportCommand * m_mainImport
void addQuery(int line, const std::string &value)
void addSetGndEngine(int line, const std::string &value)
virtual std::string toString() const
std::string package() const
PRMInference< GUM_SCALAR >::Chain chain
void addSetEngine(int line, const std::string &value)
virtual RequestType type() const =0
std::string m_name
The session name;.
void addCommand(const O3prmrCommand *command)
O3prmrSession & operator+=(const O3prmrSession &c)