//! Marks the start of the targets in the module's inventory
#define BEGIN_TARGETS {
-#define TARGET(x) \
- synfig::Target::book()[synfig::String(x::name__)]= \
- std::pair<synfig::Target::Factory,synfig::String> \
- (x::create,synfig::String(x::ext__)); \
+#define TARGET(x) \
+ synfig::Target::book()[synfig::String(x::name__)].factory = \
+ reinterpret_cast<synfig::Target::Factory> (x::create); \
+ synfig::Target::book()[synfig::String(x::name__)].filename = \
+ synfig::String(x::ext__); \
synfig::Target::ext_book()[synfig::String(x::ext__)]=x::name__;
#define TARGET_EXT(x,y) synfig::Target::ext_book()[synfig::String(y)]=x::name__;
//default_gamma_->set_black_level(0.05); // Default to 5% black level.
// At least one target must be available.
- book()["null"]=std::pair<synfig::Target::Factory,String>(Target_Null::create,"null");
+ book()["null"].factory =
+ reinterpret_cast<synfig::Target::Factory>(&Target_Null::create);
+ book()["null"].filename = "null";
ext_book()["null"]="null";
- book()["null-tile"]=std::pair<synfig::Target::Factory,String>(Target_Null_Tile::create,"null-tile");
+
+ book()["null-tile"].factory =
+ reinterpret_cast<synfig::Target::Factory>(&Target_Null_Tile::create);
+ book()["null-tile"].filename = "null-tile";
ext_book()["null-tile"]="null-tile";
return true;
if(!book().count(name))
return handle<Target>();
- return Target::Handle(book()[name].first(filename.c_str()));
+ return Target::Handle(book()[name].factory(filename.c_str()));
}
** Receives the output filename (including path).
*/
typedef Target* (*Factory)(const char *filename);
+
+ struct BookEntry
+ {
+ Factory factory;
+ String filename; ///< Output filename including path
+ };
//! Book of types of targets indexed by the name of the Target.
- /*! Each entry contains the Target constructor pointer and the output
- ** filename string (including path).
- */
- typedef std::map<String,std::pair<Factory,String> > Book;
+ typedef std::map<String,BookEntry> Book;
typedef std::map<String,String> ExtBook;
{
job_list.front().outfilename = filename_sans_extension(job_list.front().filename) + '.';
if(Target::book().count(target_name))
- job_list.front().outfilename+=Target::book()[target_name].second;
+ job_list.front().outfilename+=Target::book()[target_name].filename;
else
job_list.front().outfilename+=target_name;
}