/* === 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) { \
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
//! 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);
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();