#ifndef SUIFKERNEL__SUIF_OBJECT_H #define SUIFKERNEL__SUIF_OBJECT_H #include "iokernel/object.h" #include "iokernel/walker.h" #include "suifkernel_forwarders.h" class SuifObject : public Object { friend class SuifEnv; public: virtual SuifObject* deep_clone( SuifEnv* suif_env = 0 ) const; virtual SuifObject* shallow_clone( SuifEnv* suif_env = 0 ) const; virtual SuifObject* get_parent() const; virtual void set_parent( SuifObject* object ); virtual ObjectFactory* get_object_factory() const; virtual SuifEnv* get_suif_env() const; virtual void print_to_default() const; // for debugging virtual void print( ostream& output ) const; virtual String print_to_string() const; virtual int replace( SuifObject* original, SuifObject* new_object, bool fuse_if_possible = false ); virtual void verify_invariants( ErrorSubSystem* message_destination ); virtual void print(FormattedText &x) const; static const LString &get_class_name(); virtual Walker::ApplyStatus walk(Walker &walk); protected: SuifObject(); static void constructorFunction( Address instance ); private: SuifObject* parent; private: SuifObject(const SuifObject &); SuifObject& operator=(const SuifObject &); }; int printobj(SuifObject *obj); // return true if an object with this meta class is a subclass // of SuifObject bool is_kind_of_suif_object_meta_class(const MetaClass *mc); #endif
written by Dimitri van Heesch, © 1997-1999