Public Member Functions | Protected Attributes | List of all members
a2dWalkerIOHandler Class Reference

Io handler to iterate through a a2dDocument. More...

#include <gen.h>

Inheritance diagram for a2dWalkerIOHandler:
Inheritance graph
Collaboration diagram for a2dWalkerIOHandler:
Collaboration graph

Public Member Functions

 a2dWalkerIOHandler ()
 ~a2dWalkerIOHandler ()
virtual void Initialize ()
 to initialize a walker class, default does nothing.
wxString GetErrorString ()
 get this when an error occured.
void SetStopWalking (bool stopWalking)
 to further recursion, e.g. in a2dObject::Walker()
bool GetStopWalking ()
 check for stop
void IncCurrentDepth ()
 Increment recursion depth.
void DecCurrentDepth ()
 Decrement recursion depth.
int GetCurrentDepth ()
 What is the current recursion depth.
void SetDepthFirst (bool depthFirst)
 set if walker needs to go into recursive objects first.
bool GetDepthFirst ()
 What is the current recursion depth.
void SetUseCheck (bool useCheck)
 set if walker needs to check objects for a2dObject::m_check set, before walking into it
bool GetUseCheck ()
 see SetUseCheck
void Register (const wxString &classname, a2dObjectIOFn *IOfunc)
 to register a function to handle a class
void Unregister (const wxString &classname)
 to Un-register a function to handle a class
virtual bool WalkTask (wxObject *parent, wxObject *object, a2dWalkEvent event)
 called from within a2dObject's and derived classes More...
wxObject * GetParent ()
bool GetSkipNotRenderedInDrawing () const
void SetSkipNotRenderedInDrawing (bool skipNotRenderedInDrawing)
bool GetResult ()
 depending upon derived class implementation.
- Public Member Functions inherited from a2dIOHandler
 a2dIOHandler ()
 ~a2dIOHandler ()
virtual wxObject * CreateObject (const wxString &symbolicName)
 Creates an specific object by name. More...
- Public Member Functions inherited from a2dRefMap
 a2dRefMap ()
 ~a2dRefMap ()
a2dHashMapIntToObject & GetObjectHashMap ()
 This is used to find multiple referenced objects by id.
a2dHashMapCreateObject & GetObjectCreateHashMap ()
 has to map symbolic names to real classnames.
a2dResolveIdList & GetResolveIdList ()
 list of not resolved objects
bool ResolveOrAdd (a2dSmrtPtr< a2dObject > *storedHere, const wxString &id=wxT(""))
 try to resolve the object that is in storedHere when it is a reference. More...
bool ResolveOrAdd (a2dAutoZeroPtr< a2dObject > *storedHere, const wxString &id=wxT(""))
 try to resolve the object that is in storedHere when it is a reference.
bool ResolveOrAddLink (a2dObject *obj, const wxString &id=wxT(""))
 try to resolve an object referenced by obj using the LinkReference function
void ResolveInform (a2dObject *obj)
 call the objects LinkReference function (ptr=0) to inform it that links are done
void SetLastObjectLoadedId (const wxString &lastid)
 set by RefObject when finding a reference id during loading.
virtual bool LinkReferences (bool ignoreNonResolved=false)
 link references to their destination More...
bool RemoveReference (const wxString &idToRemove)
 remove given reference if from reference map.
a2dError GetLastError () const
 get last error encountered
void SetLastError (a2dError error)
 set last error encountered
- Public Member Functions inherited from a2dObject
virtual bool ProcessEvent (wxEvent &event)
bool SearchDynamicEventTable (wxEvent &event)
void Connect (int winid, int lastId, int eventType, wxObjectEventFunction func, wxObject *userData=(wxObject *) NULL, wxEvtHandler *eventSink=(wxEvtHandler *) NULL)
bool Disconnect (int winid, int lastId, wxEventType eventType, wxObjectEventFunction func=NULL, wxObject *userData=(wxObject *) NULL, wxEvtHandler *eventSink=(wxEvtHandler *) NULL)
void ProcessConnectedEvent (wxEvent &event)
 wxCHECK_VERSION(2,9,0) More...
void ConnectEvent (wxEventType type, wxEvtHandler *eventSink)
bool DisconnectEvent (wxEventType type, wxEvtHandler *eventSink)
bool DisconnectEventAll (wxEvtHandler *eventSink)
 Remove all dynamic events in classA, going to classB (eventSink) More...
 a2dObject ()
virtual ~a2dObject ()
void operator= (const a2dObject &other)
 assignment operator
int GetOwnedBy ()
 like it to be protected, but this does not work with wxList macros More...
virtual a2dObjectSetNonDynamic ()
 Call to mark this object as non-dynamic (static/local/auto) More...
void CheckReferences ()
 Check zero reference count and delete if count is 0. More...
a2dObjectClone (CloneOptions options, a2dRefMap *refs=NULL) const
 create an exact copy of this property
 a2dObject (const a2dObject &other, CloneOptions options, a2dRefMap *refs)
virtual wxString GetName () const
 Returns the name of this object, if no name is given the internal id will be returned. More...
virtual void SetName (const wxString &name)
 Creates the a2dStringProperty PROPID_Name. More...
virtual bool IsTemporary_DontSave () const
 Check if this is a temporary object, which should not be saved.
void SaveAsDocument (a2dIOHandlerXmlSerOut &out)
 Save this object and all below as an XML document. More...
virtual void Save (wxObject *parent, a2dIOHandlerXmlSerOut &out, a2dObjectList *towrite)
 write all needed to an XML type of file called the CVG format More...
void LoadFromDocument (a2dIOHandlerXmlSerIn &parser)
 Load this object and all below from an XML document. More...
virtual void Load (wxObject *parent, a2dIOHandlerXmlSerIn &parser)
 load object from CVG file More...
wxInt64 GetUniqueSerializationId () const
 return a unique id for this object More...
virtual bool AlwaysWriteSerializationId () const
 If true, always write an id. More...
virtual bool LinkReference (a2dObject *other)
 link a reference in the object to the given value More...
virtual void ResolveInform ()
 inform an object that reference resolution was done More...
void Walker (wxObject *parent, a2dWalkerIOHandler &handler)
 This is used to recursively walk through an object tree.
void SetCheck (bool check)
 general flag use at will. More...
bool GetCheck () const
 general flag use at will.
void SetRelease (bool value)
 set release flag More...
bool GetRelease () const
 get release flag More...
a2dAutoZeroPtr< a2dObject > ** GetAutoZeroPtrList ()
 return the list head pointer for autozero pointers to this object More...
a2dNamedPropertyGetProperty (const a2dPropertyId *propertyId, a2dPropertyId::Flags flags=a2dPropertyId::flag_none) const
 get property on this object More...
void SetProperty (a2dNamedProperty *propertyHolder, a2dPropertyId::SetFlags flags=a2dPropertyId::set_none)
 Set the property to the this object. More...
void SetProperty (const a2dNamedProperty &propertyHolder, a2dPropertyId::SetFlags flags=a2dPropertyId::set_none)
 Set the property to the this object and if enabled, to all childs and object members. More...
virtual a2dNamedPropertyFindProperty (const a2dPropertyId *id, a2dPropertyId::Flags flags=a2dPropertyId::flag_none)
 Find a dynamic property with given id in the property list. More...
virtual const a2dNamedPropertyFindProperty (const a2dPropertyId *id, a2dPropertyId::Flags flags=a2dPropertyId::flag_none) const
 Find a dynamic property with given id in the property list. More...
virtual bool HasProperty (const a2dPropertyId *id, const wxString &stringvalue=wxEmptyString) const
 Check if the object has a property with given id and string representation. More...
virtual void OnPropertyChanged (const a2dPropertyId *id)
 This function is called after a property changed. More...
virtual bool EditProperties (const a2dPropertyId *id, bool withUndo=true)
 edit properties of the object More...
void TakeOverProperties (a2dObject *from, a2dPropertyIdList *listOfIds)
 Properties in the id list are taken from the given object, en set to this. More...
wxURI GetURI () const
 quick way to get to PROPID_URI property More...
void SetURI (const wxURI &url)
 quickly set a property PROPID_URI More...
const a2dNamedPropertyListGetPropertyList () const
 Get the Property List. More...
bool HasDynamicProperties () const
 test if there are dynamic properties in the m_propertylist
virtual bool RemoveProperty (const a2dPropertyId *id, bool all=true)
 This function is called by a2dPropertyId to remove a property from the list. More...
void RemoveTemporaryProperties ()
 remove all temporary properties
virtual bool AddProperty (a2dNamedProperty *property)
 This function is called by a2dPropertyId to add a property to the list. More...

Protected Attributes

bool m_result
 result of walk, set false at start, use at will.
wxObject * m_currentParent
 parent object of current object
wxString m_error
 to store errors
bool m_stopWalking
 quit the iteration
int m_currentDepth
 contour to be used by algorithm, to decide on how deep recursing is to be.
bool m_depthFirst
bool m_useCheck
 if set a2dObject are only walked if not m_check is set
bool m_skipNotRenderedInDrawing
a2dIOHandlerCoupleHash m_register
 coupling function to event and classname
- Protected Attributes inherited from a2dRefMap
a2dHashMapIntToObject m_objecthashmap
 This is used to find multiple referenced objects by id.
a2dHashMapCreateObject m_objectCreate
 This is used to find a classname using a symbolic name.
a2dResolveIdList m_toResolve
 refernces to object which have not bin resolved yet ( e.g not read yet, but already referenced )
wxString m_lastObjectId
a2dError m_lastError
 set to last error found when parsing
- Protected Attributes inherited from a2dObject
a2dNamedPropertyList m_propertylist
int m_refcount
 how many references to this object do exist
bool m_check: 1
 used for linking multiple referenced objects when serializing
bool m_release: 1
 when set object is treated as being deleted, and wil be deleted in idle time.
bool m_recursion_active: 1
 this is used as a recursion stopper
bool m_pendingDisconnects: 1
unsigned int m_iteratorCount
a2dAutoZeroPtr< a2dObject > * m_autozeroptrlist
 this is a list of all a2dAutoZeroPtr object pointing to this object

Additional Inherited Members

- Public Types inherited from a2dObject
enum  CloneOptions {
  clone_members = 0x00000001, clone_properties = 0x00000002, clone_childs = 0x00000004, clone_unused = 0x00000008,
  clone_setoriginal = 0x00000010, clone_seteditcopy = 0x00000020, clone_noReference = 0x00000040, clone_noCameleonRef = 0x00000080,
  clone_toDrag = 0x00000100, clone_flat = 0x00000000, clone_deep = clone_members | clone_properties | clone_childs
 options for cloning More...
typedef a2dAutoZeroPtr< a2dObjectTAutoZeroPtrListClass
 this is needed inside the smart pointer template code
- Static Public Attributes inherited from a2dObject
static a2dPropertyIdBoolPROPID_Check = NULL
 used for linking multiple referenced objects when serializing
static a2dPropertyIdUriPROPID_URI = NULL
 attach an URL to the object
static a2dPropertyIdStringPROPID_Name = NULL
 Name property, to return name of this object.
static a2dPropertyIdVoidPtrPROPID_autozeroptrlist = NULL
static const a2dSignal sm_Edit_properties = wxNewId()
 edit properties event, see EditProperties()
- Protected Types inherited from a2dObject
enum  { refcount_nondynamic = 0x76543210 }
 special refcount value for non-dynamic objects
- Protected Member Functions inherited from a2dObject
virtual bool DoIgnoreIfNotMember (const a2dPropertyId *id) const
 used to decide if a property shall be ignored, if it is not a member More...
virtual void DoWalker (wxObject *parent, a2dWalkerIOHandler &handler)
 iterate over this object and its children More...

Detailed Description

Io handler to iterate through a a2dDocument.

It can be used in combination with a file for reading or writing.

Calling a2dObject::Walker( a2dWalkerIOHandler& handler ), will have the a2dObject start calling the function WalkTask() at predifined moments. The a2dCanvasObject will also recursively go into its children. While a2dObject goes into its properties. In a derived class you can define what needs to happen in each WalkTask().

This makes it possible to write algorithm on a a2dDocument, without extending the a2dObject derived classes itself. For instance calculating the area occupied by all a2dCanvasObject, can be implemented with this class.

The default WalkTask() function, checks if a function is registrated for the specific class, and if so calls that function.

Definition at line 3911 of file gen.h.

Member Function Documentation

wxObject* a2dWalkerIOHandler::GetParent ( )

if set by walker in WalkTask(), it can be used in child object to get to the parent via the a2dWalkerIOHandler, which is the argument to a child member function.

Definition at line 3972 of file gen.h.

bool a2dWalkerIOHandler::WalkTask ( wxObject *  parent,
wxObject *  object,
a2dWalkEvent  event 

Member Data Documentation

bool a2dWalkerIOHandler::m_depthFirst

if true objects with nested objects should be walked first. it is the object to test this flag and if set, search for nested objects to walk first.

Definition at line 4000 of file gen.h.

bool a2dWalkerIOHandler::m_skipNotRenderedInDrawing

if a drawing contains references to objects in other drawings, which shuld not be included in the walk. this flag can be used to check it inside that kind of objects to stop walking.

Definition at line 4007 of file gen.h.

The documentation for this class was generated from the following files:
a2dWalkerIOHandler Class Reference -- Sun Oct 12 2014 17:04:55 -- Sun Oct 12 2014 -- 1.8.5 -- wxArt2D -- . -- Main Page Reference Documentation