<div dir="ltr"><span class="Apple-style-span" style="border-collapse: collapse; ">John, thanks a lot, those sources answered most of my questions and I see a correlation with eclgui sample that was a source for my study until now. The last problem I have to complete <div>
the embedding is to provide automatic proxy to methods of all the engine objects supporting  a general script interface. There is a very nice feature of the engine that allows to make it without wrapping each method for each class as I found in Entity.cpp - in Tcl support it implemented using overload of the "unknown" procedure of tcl (that called if some undefined</div>
<div>command was called) - it checks first if the command related to current instance(cwd in engine tree) and if yes calls it else calls the original "unknown" Tcl implementation.</div><div>Is there in LISP such command that I can overload  ? </div>
</span><br><div class="gmail_quote">On Wed, May 6, 2009 at 5:34 PM, John Connors <span dir="ltr"><<a href="mailto:johnc@yagc.ndo.co.uk">johnc@yagc.ndo.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
I did something like this as proof-of-concept for the G3D engine some time ago. My experiments are here: <a href="http://repo.or.cz/w/Procustean.git" target="_blank">http://repo.or.cz/w/Procustean.git</a>. I ran into a lot of the problems you have, I hope you find the source educational.<br>

<br>
Ilya Kliot wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,  I started some 3d engine community <a href="http://code.google.com/p/m-nebula/" target="_blank">http://code.google.com/p/m-nebula/</a> based on well polished, stable and robust scriptable 3d engine.  Currently it supports TCL, Lua and Python, I want to add LISP (already many  years I want, but only now got a little time for it). And I very motivated after I  found this project <a href="http://impromptu.moso.com.au/" target="_blank">http://impromptu.moso.com.au/</a>. <<a href="http://impromptu.moso.com.au/" target="_blank">http://impromptu.moso.com.au/</a>> I understand well the power of LISP and LISP dialects like Scheme and I think people will get a very nice environment with LISP powered by 3d engine that supports 3d, audio and video. The engine is also cross-platform - some small effort (mostly make cleanup/order in pakfiles and makefiles) needs to finish Mac & Linux ports.   I've decide to use ECL for this project because it seems to be most suitable small and portable and it's a Common LISP.   I've started well after i founjd sample of usage cl_boot, cl_shutdown and si_safe_eval  in the mail list I also found the cl_def_c_function  and then I stuck, I can't get when I shiuld use make_simple_base_string and when c_string_to_object, what to do with errors and how to provide proxy to exported for script commands, in Tcl the commands of engine objects called by replacing "unknown" command of Tcl. In Python new python object type defined for same purpose. I don't know how to make it currently for Ecl. Actually I'll be glad to help to extend the documentation for 7.2 of reference  and for externals.h and to provide a samples, but I need a help and directions of how to start. Here is an example that supposed to be near to final result:  extern cl_object eclcmd_New  nEclServer::nEclServer() : refFileServer(kernelServer, this) { <br>
<div class="im">
    //...      cl_boot(argc, argv);     //...     cl_def_c_function(cl_intern(1, make_simple_base_string("new")),<br>
    (void*)eclcmd_New, 2);     //... <br>
}   //------------------------------------------------------------------------------ /**  eclcmd_New  (C) May-3-2009 + by plushy */ cl_object eclcmd_New(cl_object class_name, cl_object name) {  <br>
    if (ecl_stringp(class_name) && ecl_stringp(name))     { <br>
        nRoot* o =<br>
        nEclServer::kernelServer->NewNoFail(ecl_base_string_pointer_safe(class_name),<br>
        ecl_base_string_pointer_safe(name));                  if (o)         {  <br>
            return make_simple_base_string(o->GetFullName().c_str());<br>
            /// can I return object in some way ? <br>
        }          else         { <br>
            //@# return cl_cerror() ? what should I return ? <br>
        } <br>
    }     //@# return cl_cerror() ? what should I return ?     return Cnil; //@# ? what should I return ? <br></div>
}  Ilya ------------------------------------------------------------------------<br>
<br>
------------------------------------------------------------------------------<br>
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your<br>
production scanning environment may not be a perfect world - but thanks to<br>
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700<br>
Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. <a href="http://p.sf.net/sfu/kodak-com" target="_blank">http://p.sf.net/sfu/kodak-com</a><br>
------------------------------------------------------------------------<br>
<br>
_______________________________________________<br>
Ecls-list mailing list<br>
<a href="mailto:Ecls-list@lists.sourceforge.net" target="_blank">Ecls-list@lists.sourceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/ecls-list" target="_blank">https://lists.sourceforge.net/lists/listinfo/ecls-list</a><br>
  <br>
</blockquote>
<br>
<br>
</blockquote></div><br></div>