X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Fsrc%2Fsynfig%2Fvaluenode.h;h=e118c95c73a01b5610b5d69316f0996800fb7a5a;hb=c3a2303f1f90cd98d333d05bda3256e6d9111d53;hp=38e5c56d0e39f50083ad8494410f5a3881a22f2e;hpb=a095981e18cc37a8ecc7cd237cc22b9c10329264;p=synfig.git diff --git a/synfig-core/src/synfig/valuenode.h b/synfig-core/src/synfig/valuenode.h index 38e5c56..e118c95 100644 --- a/synfig-core/src/synfig/valuenode.h +++ b/synfig-core/src/synfig/valuenode.h @@ -38,10 +38,7 @@ #include #include #include "guid.h" - -#ifndef SYNFIG_NO_ANGLE #include -#endif #include "node.h" @@ -49,18 +46,6 @@ /* === M A C R O S ========================================================= */ -// This is a hack for GCC 3.0.4... which has a broken dynamic_cast<> -// It is deprecated, and will be removed soon. -#if ( __GNUC__ == 3 ) && ( __GNUC__MINOR__ == 0 ) -# define DCAST_HACK_BASECLASS() int cast__ -# define DCAST_HACK_ID(x) static const int my_cast__(void) { return x; } -# define DCAST_HACK_ENABLE() cast__=my_cast__() -#else -# define DCAST_HACK_BASECLASS() -# define DCAST_HACK_ID(x) -# define DCAST_HACK_ENABLE() -#endif - #define CHECK_TYPE_AND_SET_VALUE(variable, type) \ /* I don't think this ever happens - maybe remove this code? */ \ if (get_type() == ValueBase::TYPE_NIL) { \ @@ -249,10 +234,6 @@ protected: void set_type(ValueBase::Type t) { type=t; } virtual void on_changed(); - -public: - DCAST_HACK_BASECLASS(); - DCAST_HACK_ID(0); }; // END of class ValueNode /*! \class PlaceholderValueNode @@ -305,8 +286,15 @@ public: //! Type that represents a pointer to a ValueNode's constructor + /*! As a pointer to the constructor, it represents a "factory" of + ** objects of this class. + */ typedef LinkableValueNode* (*Factory)(const ValueBase&); + //! This represents a pointer to a Type check member fucntion + /*! As a pointer to the member, it represents a fucntion that checks + ** the type of the provided ValueBase + */ typedef bool (*CheckType)(ValueBase::Type); struct BookEntry @@ -317,6 +305,13 @@ public: ReleaseVersion release_version; // which version of synfig introduced this valuenode type }; + //! Book of types of linkable value nodes indexed by type name. + /*! While the sifz file is read, each time a new LinkableValueNode entry + ** is found, the factory constructor that the "factory" pointer member + ** of the "BookEntry" struct points to, is called, and a new object of + ** that type is created. + ** \sa LinkableValueNode::Factory + */ typedef std::map Book; static Book& book();