00001
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00033
00034 #ifndef GROOVX_VISX_BLOCK_CC_UTC20050626084016_DEFINED
00035 #define GROOVX_VISX_BLOCK_CC_UTC20050626084016_DEFINED
00036
00037 #include "visx/block.h"
00038
00039 #include "io/ioproxy.h"
00040 #include "io/reader.h"
00041 #include "io/readutils.h"
00042 #include "io/writer.h"
00043 #include "io/writeutils.h"
00044
00045 #include "nub/log.h"
00046 #include "nub/ref.h"
00047
00048 #include "rutz/fstring.h"
00049
00050 #define GVX_DYNAMIC_TRACE_EXPR Block::tracer.status()
00051 #include "rutz/trace.h"
00052 #include "rutz/debug.h"
00053 GVX_DBG_REGISTER
00054
00056
00057
00058
00060
00061 rutz::tracer Block::tracer;
00062
00063 namespace
00064 {
00065 io::version_id BLOCK_SVID = 3;
00066 }
00067
00069
00070
00071
00073
00074 Block* Block::make()
00075 {
00076 GVX_TRACE("Block::make");
00077 return new Block;
00078 }
00079
00080 Block::Block() :
00081 itsParent( 0 )
00082 {
00083 GVX_TRACE("Block::Block");
00084 }
00085
00086 Block::~Block() throw()
00087 {}
00088
00089 io::version_id Block::class_version_id() const
00090 {
00091 GVX_TRACE("Block::class_version_id");
00092 return BLOCK_SVID;
00093 }
00094
00095 void Block::read_from(io::reader& reader)
00096 {
00097 GVX_TRACE("Block::read_from");
00098
00099 reader.ensure_version_id("Block", 3,
00100 "Try cvs tag xml_conversion_20040526",
00101 SRC_POS);
00102
00103 reader.read_base_class("ElementContainer",
00104 io::make_proxy<ElementContainer>(this));
00105 }
00106
00107 void Block::write_to(io::writer& writer) const
00108 {
00109 GVX_TRACE("Block::write_to");
00110
00111 writer.ensure_output_version_id("Block", BLOCK_SVID, 3,
00112 "Try groovx0.8a7", SRC_POS);
00113
00114 writer.write_base_class("ElementContainer",
00115 io::make_const_proxy<ElementContainer>(this));
00116 }
00117
00119
00120
00121
00123
00124 const nub::soft_ref<Toglet>& Block::getWidget() const
00125 {
00126 GVX_TRACE("Block::getWidget");
00127 GVX_PRECONDITION( itsParent != 0 );
00128 return itsParent->getWidget();
00129 }
00130
00131 void Block::vxRun(Element& e)
00132 {
00133 GVX_TRACE("Block::vxRun");
00134
00135 if ( isComplete() ) return;
00136
00137 GVX_PRECONDITION( &e != 0 );
00138
00139 nub::log( vxInfo() );
00140
00141 itsParent = &e;
00142
00143 currentElement()->vxRun(*this);
00144 }
00145
00146 void Block::vxEndTrialHook()
00147 {
00148 GVX_TRACE("Block::vxEndTrialHook");
00149
00150 if (itsParent != 0)
00151 itsParent->vxEndTrialHook();
00152 }
00153
00154 void Block::vxAllChildrenFinished()
00155 {
00156 GVX_TRACE("Block::vxAllChildrenFinished");
00157
00158
00159 Element* p = itsParent;
00160 itsParent = 0;
00161 GVX_ASSERT( p != 0 );
00162 p->vxReturn(CHILD_OK);
00163 }
00164
00165 static const char __attribute__((used)) vcid_groovx_visx_block_cc_utc20050626084016[] = "$Id: block.cc 10065 2007-04-12 05:54:56Z rjpeters $ $HeadURL: file:
00166 #endif // !GROOVX_VISX_BLOCK_CC_UTC20050626084016_DEFINED