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_TCLPKG_ELEMENTCONTAINER_CC_UTC20050628171008_DEFINED
00035 #define GROOVX_VISX_TCLPKG_ELEMENTCONTAINER_CC_UTC20050628171008_DEFINED
00036
00037 #include "visx/tclpkg-elementcontainer.h"
00038
00039 #include "tcl/itertcl.h"
00040 #include "tcl/objpkg.h"
00041 #include "tcl/list.h"
00042 #include "tcl/pkg.h"
00043
00044 #include "rutz/iter.h"
00045
00046 #include "visx/elementcontainer.h"
00047
00048 #include "rutz/trace.h"
00049
00050 namespace
00051 {
00052 void addElementIds(nub::ref<ElementContainer> container,
00053 tcl::list trial_ids, int repeat)
00054 {
00055 for (tcl::list::iterator<nub::uid>
00056 itr = trial_ids.begin<nub::uid>(),
00057 end = trial_ids.end<nub::uid>();
00058 itr != end;
00059 ++itr)
00060 {
00061 container->addElement(nub::ref<Element>(*itr), repeat);
00062 }
00063 }
00064 }
00065
00066 extern "C"
00067 int Elementcontainer_Init(Tcl_Interp* interp)
00068 {
00069 GVX_TRACE("Elementcontainer_Init");
00070
00071 GVX_PKG_CREATE(pkg, interp, "ElementContainer", "4.$Revision: 10065 $");
00072 pkg->inherit_pkg("Element");
00073 tcl::def_basic_type_cmds<Element>(pkg, SRC_POS);
00074
00075 pkg->def("addElement", "objref element_id",
00076 rutz::bind_last(rutz::mem_func
00077 (&ElementContainer::addElement), 1),
00078 SRC_POS);
00079
00080 pkg->def("addElements", "objref element_id(s)",
00081 rutz::bind_last(&addElementIds, 1), SRC_POS);
00082
00083 pkg->def("addElements", "objref element_id(s) repeat=1",
00084 &addElementIds, SRC_POS);
00085
00086 pkg->def_getter("currentElement", &ElementContainer::currentElement, SRC_POS);
00087 pkg->def_getter("isComplete", &ElementContainer::isComplete, SRC_POS);
00088 pkg->def_getter("numCompleted", &ElementContainer::numCompleted, SRC_POS);
00089 pkg->def_getter("numElements", &ElementContainer::numElements, SRC_POS);
00090 pkg->def_action("clearElements", &ElementContainer::clearElements, SRC_POS);
00091 pkg->def_vec("shuffle", "objref(s) rand_seed", &ElementContainer::shuffle, 1, SRC_POS);
00092 pkg->def_getter("elements", &ElementContainer::getElements, SRC_POS);
00093
00094 GVX_PKG_RETURN(pkg);
00095 }
00096
00097 static const char __attribute__((used)) vcid_groovx_visx_tclpkg_elementcontainer_cc_utc20050628171008[] = "$Id: tclpkg-elementcontainer.cc 10065 2007-04-12 05:54:56Z rjpeters $ $HeadURL: file:
00098 #endif // !GROOVX_VISX_TCLPKG_ELEMENTCONTAINER_CC_UTC20050628171008_DEFINED