X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fmodule.h;h=26638cd6866b2ff694a160410c4a0d91ecce4d56;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=31d3baebd8efc30331decd61ab04b03e72e61897;hpb=e3acc0b267b14fda5db3c7bbb2f218b993ef84b3;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/module.h b/synfig-core/trunk/src/synfig/module.h index 31d3bae..26638cd 100644 --- a/synfig-core/trunk/src/synfig/module.h +++ b/synfig-core/trunk/src/synfig/module.h @@ -1,28 +1,30 @@ -/* === S I N F G =========================================================== */ -/*! \file module.h +/* === S Y N F I G ========================================================= */ +/*! \file synfig/module.h ** \brief writeme ** -** $Id: module.h,v 1.1.1.1 2005/01/04 01:23:14 darco Exp $ +** $Id$ ** ** \legal -** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2007, 2008 Chris Moore ** -** This software and associated documentation -** are CONFIDENTIAL and PROPRIETARY property of -** the above-mentioned copyright holder. +** This package is free software; you can redistribute it and/or +** modify it under the terms of the GNU General Public License as +** published by the Free Software Foundation; either version 2 of +** the License, or (at your option) any later version. ** -** You may not copy, print, publish, or in any -** other way distribute this software without -** a prior written agreement with -** the copyright holder. +** This package is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** General Public License for more details. ** \endlegal */ /* ========================================================================= */ /* === S T A R T =========================================================== */ -#ifndef __SINFG_MODULE_H -#define __SINFG_MODULE_H +#ifndef __SYNFIG_MODULE_H +#define __SYNFIG_MODULE_H /* === H E A D E R S ======================================================= */ @@ -30,6 +32,7 @@ #include #include #include "string.h" +#include "releases.h" #include #include "vector.h" #include "color.h" @@ -41,7 +44,7 @@ /* === M A C R O S ========================================================= */ //! Marks the start of a module description -#define MODULE_DESC_BEGIN(x) struct x##_modclass : public sinfg::Module { x##_modclass(sinfg::ProgressCallback *callback=NULL); +#define MODULE_DESC_BEGIN(x) struct x##_modclass : public synfig::Module { x##_modclass(synfig::ProgressCallback *callback=NULL); //! Sets the localized name of the module #define MODULE_NAME(x) virtual const char * Name() { return x; } @@ -59,7 +62,7 @@ #define MODULE_COPYRIGHT(x) virtual const char * Copyright() { return x; } //! Describes the module's construction function -#define MODULE_CONSTRUCTOR(x) bool constructor_(sinfg::ProgressCallback *cb) { return x(cb); } +#define MODULE_CONSTRUCTOR(x) bool constructor_(synfig::ProgressCallback *cb) { return x(cb); } //! Describes the module's destruction function #define MODULE_DESTRUCTOR(x) virtual void destructor_() { return x(); } @@ -71,26 +74,40 @@ #ifdef __APPLE__ //! Marks the start of a module's inventory #define MODULE_INVENTORY_BEGIN(x) extern "C" { \ - sinfg::Module* _##x##_LTX_new_instance(sinfg::ProgressCallback *cb) \ - { if(SINFG_CHECK_VERSION()){x##_modclass *mod=new x##_modclass(cb); mod->constructor_(cb); return mod; }\ + synfig::Module* _##x##_LTX_new_instance(synfig::ProgressCallback *cb) \ + { if(SYNFIG_CHECK_VERSION()){x##_modclass *mod=new x##_modclass(cb); mod->constructor_(cb); return mod; }\ if(cb)cb->error(#x": Unable to load module due to version mismatch."); return NULL; } \ - }; x##_modclass::x##_modclass(sinfg::ProgressCallback *cb) { + }; x##_modclass::x##_modclass(synfig::ProgressCallback */*cb*/) { #else //! Marks the start of a module's inventory #define MODULE_INVENTORY_BEGIN(x) extern "C" { \ - sinfg::Module* x##_LTX_new_instance(sinfg::ProgressCallback *cb) \ - { if(SINFG_CHECK_VERSION()){x##_modclass *mod=new x##_modclass(cb); mod->constructor_(cb); return mod; }\ + synfig::Module* x##_LTX_new_instance(synfig::ProgressCallback *cb) \ + { if(SYNFIG_CHECK_VERSION()){x##_modclass *mod=new x##_modclass(cb); mod->constructor_(cb); return mod; }\ if(cb)cb->error(#x": Unable to load module due to version mismatch."); return NULL; } \ - }; x##_modclass::x##_modclass(sinfg::ProgressCallback *cb) { + }; x##_modclass::x##_modclass(synfig::ProgressCallback */*cb*/) { #endif //! Marks the start of the layers in the module's inventory #define BEGIN_LAYERS { -//! DEPRECATED - use @INCLUDE_LAYER() -//#define LAYER(x) sinfg::Layer::book()[sinfg::String(x::name__)]=x::create; -#define LAYER(class) sinfg::Layer::register_in_book(sinfg::Layer::BookEntry(class::create,class::name__,class::local_name__,class::category__,class::cvs_id__,class::version__)); -#define LAYER_ALIAS(class,alias) sinfg::Layer::register_in_book(sinfg::Layer::BookEntry(class::create,alias,alias,_("Do Not Use"),class::cvs_id__,class::version__)); +//! DEPRECATED - use #INCLUDE_LAYER(class) +#define LAYER(class) \ + synfig::Layer::register_in_book( \ + synfig::Layer::BookEntry(class::create, \ + class::name__, \ + dgettext("synfig", class::local_name__), \ + class::category__, \ + class::cvs_id__, \ + class::version__)); + +#define LAYER_ALIAS(class,alias) \ + synfig::Layer::register_in_book( \ + synfig::Layer::BookEntry(class::create, \ + alias, \ + alias, \ + CATEGORY_DO_NOT_USE, \ + class::cvs_id__, \ + class::version__)); //! Marks the end of the layers in the module's inventory #define END_LAYERS } @@ -98,9 +115,13 @@ //! Marks the start of the targets in the module's inventory #define BEGIN_TARGETS { -#define TARGET(x) sinfg::Target::book()[sinfg::String(x::name__)]=std::pair(x::create,sinfg::String(x::ext__));sinfg::Target::ext_book()[sinfg::String(x::ext__)]=x::name__; +#define TARGET(x) \ + synfig::Target::book()[synfig::String(x::name__)]= \ + std::pair \ + (x::create,synfig::String(x::ext__)); \ + synfig::Target::ext_book()[synfig::String(x::ext__)]=x::name__; -#define TARGET_EXT(x,y) sinfg::Target::ext_book()[sinfg::String(y)]=x::name__; +#define TARGET_EXT(x,y) synfig::Target::ext_book()[synfig::String(y)]=x::name__; //! Marks the end of the targets in the module's inventory #define END_TARGETS } @@ -108,13 +129,25 @@ //! Marks the start of the importers in the module's inventory #define BEGIN_IMPORTERS { -#define IMPORTER(x) sinfg::Importer::book()[sinfg::String(x::ext__)]=x::create; +#define IMPORTER(x) synfig::Importer::book()[synfig::String(x::ext__)]=x::create; -#define IMPORTER_EXT(x,y) sinfg::Importer::book()[sinfg::String(y)]=x::create; +#define IMPORTER_EXT(x,y) synfig::Importer::book()[synfig::String(y)]=x::create; //! Marks the end of the importers in the module's inventory #define END_IMPORTERS } +//! Marks the start of the valuenodes in the module's inventory +#define BEGIN_VALUENODES { synfig::LinkableValueNode::Book &book(synfig::LinkableValueNode::book()); + +#define VALUENODE(class,name,local,version) \ + book[name].factory=reinterpret_cast(&class::create); \ + book[name].check_type=&class::check_type; \ + book[name].local_name=local; \ + book[name].release_version=version; + +//! Marks the end of the valuenodes in the module's inventory +#define END_VALUENODES } + //! Marks the end of a module's inventory #define MODULE_INVENTORY_END } @@ -122,7 +155,7 @@ /* === C L A S S E S & S T R U C T S ======================================= */ -namespace sinfg { +namespace synfig { class ProgressCallback; @@ -132,13 +165,13 @@ class ProgressCallback; class Module : public etl::shared_object { public: - bool constructor_(sinfg::ProgressCallback *cb) { return true; } + bool constructor_(synfig::ProgressCallback */*cb*/) { return true; } virtual void destructor_() { } - + typedef etl::handle Handle; typedef etl::loose_handle LooseHandle; typedef etl::handle ConstHandle; - + public: typedef Module*(*constructor_type)(ProgressCallback *); typedef std::map Book; @@ -149,22 +182,22 @@ public: static bool subsys_init(const String &prefix); static bool subsys_stop(); - static bool register_default_modules(); + static void register_default_modules(ProgressCallback *cb=NULL); static void Register(Handle mod); static bool Register(const String &module_name, ProgressCallback *cb=NULL); static inline void Register(Module *mod) { Register(Handle(mod)); } - + virtual const char * Name() { return " "; } virtual const char * Desc() { return " "; } virtual const char * Author() { return " "; } virtual const char * Version() { return " "; } - virtual const char * Copyright() { return SINFG_COPYRIGHT; } + virtual const char * Copyright() { return SYNFIG_COPYRIGHT; } virtual ~Module() { destructor_(); } }; -}; // END of namespace sinfg +}; // END of namespace synfig /* === E N D =============================================================== */