+ DEFINE_STANDARD_RTTIEXT(_pySegmentLengthAroundVertexHyp,_pyHypothesis)
+};
+DEFINE_STANDARD_HANDLE (_pySegmentLengthAroundVertexHyp, _pyHypothesis);
+
+// -------------------------------------------------------------------------------------
+/*!
+ * \brief SelfEraser erases creation command if no more it's commands invoked
+ */
+// -------------------------------------------------------------------------------------
+class _pySelfEraser: public _pyObject
+{
+ bool myIgnoreOwnCalls; // not to erase only if this obj is used as argument
+public:
+ _pySelfEraser(const Handle(_pyCommand)& theCreationCmd);
+ void IgnoreOwnCalls() { myIgnoreOwnCalls = true; }
+ virtual void Flush();
+ virtual bool CanClear();
+ static bool IsAliveCmd( const Handle(_pyCommand)& theCmd );
+
+ DEFINE_STANDARD_RTTIEXT(_pySelfEraser,_pyObject)
+};
+DEFINE_STANDARD_HANDLE (_pySelfEraser, _pyObject);
+
+// -------------------------------------------------------------------------------------
+/*!
+ * \brief SubMesh creation can be moved to the end of engine commands
+ */
+// -------------------------------------------------------------------------------------
+class _pySubMesh: public _pyObject
+{
+ Handle(_pyObject) myCreator;
+ Handle(_pyMesh) myMesh;
+public:
+ _pySubMesh(const Handle(_pyCommand)& theCreationCmd, bool toKeepAgrCmds=true);
+ virtual void Process( const Handle(_pyCommand)& theCommand);
+ virtual void Flush();
+ virtual Handle(_pyMesh) GetMesh() { return myMesh; }
+ virtual void Free() { myCreator.Nullify(); myMesh.Nullify(); }
+ void SetCreator( const Handle(_pyObject)& theCreator ) { myCreator = theCreator; }
+ static bool CanBeArgOfMethod(const _AString& theMethodName);
+
+ DEFINE_STANDARD_RTTIEXT(_pySubMesh,_pyObject)
+};
+// -------------------------------------------------------------------------------------
+/*!
+ * \brief A filter sets a human readable name to self
+ */
+// -------------------------------------------------------------------------------------
+class _pyFilter: public _pyObject
+{
+ _pyID myNewID, myMesh;
+ //std::list< Handle(_pyObject) > myUsers;
+public:
+ _pyFilter(const Handle(_pyCommand)& theCreationCmd, const _pyID& newID="");
+ //void AddUser( const Handle(_pyObject)& user) { myUsers.push_back( user ); }
+ virtual void Process( const Handle(_pyCommand)& theCommand);
+ virtual void Flush();
+ //virtual bool CanClear();
+ //virtual void Free() { myUsers.clear(); }
+ const _pyID& GetNewID() const { return myNewID; }
+
+ DEFINE_STANDARD_RTTIEXT(_pyFilter,_pyObject)
+};
+DEFINE_STANDARD_HANDLE (_pyFilter, _pyObject);