X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Fsrc%2Fsynfig%2Fvaluenode.h;h=a7a8f30d339f2a26afccf09bf50d3b71ebd75e8b;hb=077db16bb2200d3f6e936c9da3d8fe2950317eae;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..a7a8f30 100644 --- a/synfig-core/src/synfig/valuenode.h +++ b/synfig-core/src/synfig/valuenode.h @@ -49,18 +49,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 +237,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,6 +289,9 @@ 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&); typedef bool (*CheckType)(ValueBase::Type); @@ -317,6 +304,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();