Commit 85b06e8c authored by Michal 'vorner' Vaner's avatar Michal 'vorner' Vaner
Browse files

[trac978] Pass the loader to creator

parent 70af8c7c
...@@ -190,9 +190,12 @@ public: ...@@ -190,9 +190,12 @@ public:
* parameters might look like, they are not checked in any way. * parameters might look like, they are not checked in any way.
* Therefore it's up to the creator (or the check being created) * Therefore it's up to the creator (or the check being created)
* to validate the data and throw if it is bad. * to validate the data and throw if it is bad.
* \param Current loader calling this creator. This can be used
* to load subexpressions in case of compound check.
*/ */
virtual boost::shared_ptr<Check<Context> > create( virtual boost::shared_ptr<Check<Context> > create(
const std::string& name, data::ConstElementPtr definition) = 0; const std::string& name, data::ConstElementPtr definition,
const Loader<Context, Action>& loader) = 0;
/** /**
* \brief Is list or-abbreviation allowed? * \brief Is list or-abbreviation allowed?
* *
...@@ -369,7 +372,8 @@ private: ...@@ -369,7 +372,8 @@ private:
checkDesc->second); checkDesc->second);
} }
// Create the check and return it // Create the check and return it
return (creatorIt->second->create(name, checkDesc->second)); return (creatorIt->second->create(name, checkDesc->second,
*this));
} }
default: default:
isc_throw_1(LoaderError, isc_throw_1(LoaderError,
......
...@@ -89,8 +89,8 @@ public: ...@@ -89,8 +89,8 @@ public:
vector<string> names() const { vector<string> names() const {
return (names_); return (names_);
} }
shared_ptr<Check<Log> > create(const string& name, shared_ptr<Check<Log> > create(const string& name, ConstElementPtr data,
ConstElementPtr data) const Loader<Log>&)
{ {
bool found(false); bool found(false);
for (vector<string>::const_iterator i(names_.begin()); for (vector<string>::const_iterator i(names_.begin());
...@@ -123,7 +123,9 @@ public: ...@@ -123,7 +123,9 @@ public:
result.push_back("throw"); result.push_back("throw");
return (result); return (result);
} }
shared_ptr<Check<Log> > create(const string&, ConstElementPtr) { shared_ptr<Check<Log> > create(const string&, ConstElementPtr,
const Loader<Log>&)
{
throw TestCreatorError(); throw TestCreatorError();
} }
}; };
...@@ -144,7 +146,9 @@ public: ...@@ -144,7 +146,9 @@ public:
result.push_back("throwcheck"); result.push_back("throwcheck");
return (result); return (result);
} }
shared_ptr<Check<Log> > create(const string&, ConstElementPtr) { shared_ptr<Check<Log> > create(const string&, ConstElementPtr,
const Loader<Log>&)
{
return (shared_ptr<Check<Log> >(new ThrowCheck())); return (shared_ptr<Check<Log> >(new ThrowCheck()));
} }
}; };
...@@ -161,8 +165,8 @@ public: ...@@ -161,8 +165,8 @@ public:
* logging cell used, the second is result of the check. No error checking * logging cell used, the second is result of the check. No error checking
* is done, if there's bug in the test, it will throw TypeError for us. * is done, if there's bug in the test, it will throw TypeError for us.
*/ */
shared_ptr<Check<Log> > create(const string&, shared_ptr<Check<Log> > create(const string&, ConstElementPtr definition,
ConstElementPtr definition) const Loader<Log>&)
{ {
vector<ConstElementPtr> list(definition->listValue()); vector<ConstElementPtr> list(definition->listValue());
int logpos(list[0]->intValue()); int logpos(list[0]->intValue());
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment