Remove .gitignore do nothing is ignored.
[synfig.git] / synfig-core / trunk / src / synfig / module.h
index 31d3bae..26638cd 100644 (file)
@@ -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 <ETL/handle>
 #include <map>
 #include "string.h"
+#include "releases.h"
 #include <utility>
 #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(); }
 #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 }
 //! 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<sinfg::Target::Factory,sinfg::String>(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<synfig::Target::Factory,synfig::String>                                                                               \
+                       (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 }
 //! 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<synfig::LinkableValueNode::Factory>(&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   }
 
 
 /* === 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<Module> Handle;
        typedef etl::loose_handle<Module> LooseHandle;
        typedef etl::handle<const Module> ConstHandle;
-       
+
 public:
        typedef Module*(*constructor_type)(ProgressCallback *);
        typedef std::map<String, Handle > 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 =============================================================== */