Hi there,<br>
<br>
Yes, please do send me the new release as soon as you are done fixing the bug.<br>
Very glad to hear about your extensive regression testing. Yes, I will definitely do my own testing too.<br><br>
Regards,<br>
Taral<br>
<br><div><span class="gmail_quote">On 9/8/05, <b class="gmail_sendername">Gustaf Neumann</b> &lt;<a href="mailto:neumann@wu-wien.ac.at">neumann@wu-wien.ac.at</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Taral schrieb:<br><br>&gt; Well, I will be in touch with you guys on further development on my side.<br><br>good. i'll send you soon a version of xotcl with the &quot;...foward ...<br>expr...&quot; problem resolved, if you
<br>are interested.<br>
</blockquote><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">&gt; By the way, I can not resist myself asking you guys about testing done
<br>&gt; for XOTcl. I'm planning to use it for implantable Medical Device<br>&gt; hard-real time firmware system where bugs are not allowed at all.<br>&gt; Reading you note about the bug in expr method, do you mind giving me a
<br>&gt; small update on what type of testing is done on this library and how<br>&gt; much stable is it from your experience?<br><br>we have a constantly growing regression test suite. in general i think<br>it is generally
<br>perceived that xotcl has a very high stability. there is at least on<br>company that depends<br>on xotcl&nbsp;&nbsp;in their multi threaded mission critical product; we use xotcl<br>in our e-learning<br>environment, which is (based on publications) the most intensely used
<br>e-learning<br>system on universities world wide (up to more than 4 mio requests from<br>registered<br>users per day). The OACS community has recentlyTIPed that xotcl should<br>become<br>part of every standard OACS installation.
<br><br>before every release, we run all the regression test and complex systems<br>around and we<br>send pre-releases to core users. If you look at the changelog you will<br>see that most bugs<br>are either in &quot;new features&quot; or show up in &quot;erroneous xotcl code&quot;. In
<br>your situation i would<br>certainly do my own testing with my code and xotcl before burning the<br>code into proms.<br>The community will help you with problems, if you are interested in<br>commercial support,<br>we have founded recently a small company for providing support for
<br>various of our<br>research products.<br><br>&gt; Are there any plans to provide more of object relation management<br>&gt; functionality in the library itself? When are you planning the next<br>&gt; release?<br><br>in the next weeks.
<br><br>&gt; I was wondering about whom I'm talking to. You guys are obviously from<br>&gt; Germany/Austria based on my guess from your email address. It would be<br>&gt; nice to know you guys little more to help the communication. Do you
<br>&gt; guys have any personal webpage? I don't have one myself :(&nbsp;&nbsp; But now I<br>&gt; feel like I should have one. So I will try to put up one sometime soon.<br><br>you will find my face (and uwe's) easily via google<br>
<br>best regards<br>-gustaf neumann<br><br>&gt;<br>&gt; On 9/5/05, *Gustaf Neumann* &lt;<a href="mailto:neumann@wu-wien.ac.at">neumann@wu-wien.ac.at</a><br>&gt; &lt;mailto:<a href="mailto:neumann@wu-wien.ac.at">neumann@wu-wien.ac.at
</a>&gt;&gt; wrote:<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Taral schrieb:<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Hello,<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; I recently came across XOTcl and found it very very useful. I am<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; working on optimizing some legacy compiler code which is written in
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; TCL. I would like to make it object-oritented and so I started<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; using<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; XOTcl. So far I have found aouut 90% reduction in execution time.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Overall I'm getting great performance by using XOTcl.
<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; wow, this is an impressive number; good to hear that.<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; I would like to Thank You guys for writing such a great library.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Of course I have couple of questions for you. I will really
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; appreciate<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; it if you can help me here.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; (1) Is there any way to all the objects or instances based on<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; parameter value? For example, I would like to request object
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; names of<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; all objects where given parameter's value is equal to 5.<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; There is no built-in support for this. a straigthforward approach<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; is the<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; following which might
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; be sufficient in many situations:<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; ===========<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; # define method expr for all Objects, the operands are taken from<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; # the instance variables<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Object instforward expr -objscope
<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; # define method select with some abitrary tcl expression. All objects,<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; # for which the expression returns 1 are returned<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Class instproc select {expr} {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set result_list [list]
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach o [my allinstances] {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if {![catch {$o expr $expr} result]} {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts &quot;$o expr {$expr} -&gt; $result&quot;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if {$result} {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lappend result_list $o
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $result_list<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; ===========<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; so, now we define a view classes and objects with some instance<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; variables
<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class C -parameter {{x 10}}<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class D -superclass C<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C c1<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C c2 -x 11<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D d1 -x 100<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D d2<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D d3<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d3 unset x
<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; finally, we try it out with some demo queries<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach q {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{$x &gt; 10}<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{$x &gt;= 10}<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{$x &lt; 1}<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{[string match *00* $x]}
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts &quot;C select $q --&gt; {[lsort [C select $q]]}\n&quot;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Note that in this example, all instances of C are checked for the<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; expression, if
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; you use &quot;... [Object select {$x &gt; 10}]&quot;, all objects will be checked.<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; This approach might be good enough for small examples and medium<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; speed requirements. If you have larger number of objects, and you
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; cant<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; restrict the query to smaller classes, you should try to build an<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; index<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; based on associative arrays, which could replace the &quot;allinstances&quot;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; in the code above.
<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; (2) Do you have more example code pieces? I would like to see more<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; sample implementation to help me with the syntax. I'm also learning<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; TCL language at the same time using XOTcl :)
<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; i am sure, you have seen the tutorial and the examples in xotcl*/apps<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; and xotcl*/library. There are a few more on:<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://mini.net/tcl/XOTcl">http://mini.net/tcl/XOTcl
</a><br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://wiki.tcl.tk/references/10971">http://wiki.tcl.tk/references/10971</a>!<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; (3) Is there any way to represent relationship across two<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; classes? For<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; example, Class A is related to Class B with one-to-many
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; relationship.<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a few class/class relations and object/class relations are<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; maintained<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; by xotcl (e.g. superclass,<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class, mixins).&nbsp;&nbsp;A start point might be ::xotcl::Relations,
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; which&nbsp;&nbsp;is<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; used to implement a<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uniform interface to mixins (and instmixins ...), which allows to<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; specify &quot;... mixin add ...&quot;,&nbsp;&nbsp;#<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;... mixin delete ...&quot;, &quot;... mixin set ...&quot;, etc. In principle, the
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; same interface could be used<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for application level relations as well...<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; In current applications, the classes use and maintain a list of<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; related<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; object/classes.
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Often, it is conveniant to use aggregations to express 1:1 or 1:n<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; relationships.<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; (4) If there is a way to define relationship, is it possible to<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; query<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; objects of classes in the relationship? For example, I would like to
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; get all the objects of Class B related to given object of Class A<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; (like a1) across given one-to-many relationship. In this case result<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; would be list of object handles of Class B that matches based on
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; given<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; primary key (identifier) value between class A and B.<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; a good key identifier is the object name. see the following snipplet,<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; how such behavior<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; could be obtained. We define class A, which maintains the relationship
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; to some other<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; objects. if an instances exists that relates e.g. to object c1, we<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; could<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; check there some<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; properties with expr like above...<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Class A -parameter {relates_to}
<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; A a1<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; A a2<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; a1 set relates_to {c1 c2}<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; foreach o [A allinstances] {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if {[lsearch -exact [$o relates_to] c2] &gt; -1} {
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts &quot;could check $o&quot;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; hope theses examples help a little.<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; -gustaf<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; PS: when i was writing this mail i saw that the classtack information
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; within methods called via the method &quot;expr&quot; is not correct. It will<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; be fixed in the next release....<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Please provide some guidance to implement above functionality
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; using XOTcl.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Thanks a lot in advance.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; May be in future I would like to contribute to XOTcl. I wish to<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; be in<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; touch with you guys.
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Regards,<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Taral<br>&gt;<br>&gt;<br>&gt;<br><br></blockquote></div><br>