Remove dynamic cast hack
[synfig.git] / synfig-core / src / synfig / valuenode.h
index 38e5c56..a7a8f30 100644 (file)
 
 /* === 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<String,BookEntry> Book;
 
        static Book& book();