|
From: David B. <dav...@us...> - 2004-12-20 03:31:12
|
Update of /cvsroot/frontierkernel/Frontier/Common/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32623 Modified Files: Tag: sidewinder-branch langvalue.c langpython.c langevaluate.c oplangtext.c Log Message: now checks for the existence of system.verbs.builtins.python.renderPython and if present, uses this routine to render the python code before compiling it. This allows me to use UserTalk to transform the python before it gets executed, giving me the ability to add keywords, and to turn UserTalk comments (the chevrons) into Python comments. Just another step closer to the finish line... Index: langvalue.c =================================================================== RCS file: /cvsroot/frontierkernel/Frontier/Common/source/langvalue.c,v retrieving revision 1.5.4.3 retrieving revision 1.5.4.4 diff -C2 -d -r1.5.4.3 -r1.5.4.4 *** langvalue.c 28 Nov 2004 18:30:43 -0000 1.5.4.3 --- langvalue.c 20 Dec 2004 03:30:59 -0000 1.5.4.4 *************** *** 54,57 **** --- 54,58 ---- #endif #ifdef FRONTIER_PYTHON + #include "op.h" #include "langpython.h" #endif Index: oplangtext.c =================================================================== RCS file: /cvsroot/frontierkernel/Frontier/Common/source/oplangtext.c,v retrieving revision 1.3 retrieving revision 1.3.4.1 diff -C2 -d -r1.3 -r1.3.4.1 *** oplangtext.c 1 Nov 2004 11:50:16 -0000 1.3 --- oplangtext.c 20 Dec 2004 03:30:59 -0000 1.3.4.1 *************** *** 34,37 **** --- 34,41 ---- #include "opinternal.h" + #ifdef FRONTIER_PYTHON + #include "langpython.h" + #endif + *************** *** 356,359 **** --- 360,372 ---- if (signature != 'LAND') { + + #ifdef FRONTIER_PYTHON + + if (signature == 'PYTH') { + if (pythonrendercode (ho, htext)) + return (true); + } + + #endif if (!opoutlinetotextstream (ho, true, &s)) Index: langevaluate.c =================================================================== RCS file: /cvsroot/frontierkernel/Frontier/Common/source/langevaluate.c,v retrieving revision 1.3.4.2 retrieving revision 1.3.4.3 diff -C2 -d -r1.3.4.2 -r1.3.4.3 *** langevaluate.c 28 Nov 2004 18:30:43 -0000 1.3.4.2 --- langevaluate.c 20 Dec 2004 03:30:59 -0000 1.3.4.3 *************** *** 41,44 **** --- 41,45 ---- #ifdef FRONTIER_PYTHON + #include "op.h" #include "langpython.h" #endif Index: langpython.c =================================================================== RCS file: /cvsroot/frontierkernel/Frontier/Common/source/langpython.c,v retrieving revision 1.2.4.32 retrieving revision 1.2.4.33 diff -C2 -d -r1.2.4.32 -r1.2.4.33 *** langpython.c 19 Dec 2004 21:48:34 -0000 1.2.4.32 --- langpython.c 20 Dec 2004 03:30:59 -0000 1.2.4.33 *************** *** 2222,2224 **** --- 2222,2261 ---- } + #define PYTHONBUILTINS "\x1c" "system.verbs.builtins.python" + #define RENDERPYTHON "\x0c" "renderpython" + + boolean + pythonrendercode (hdloutlinerecord houtline, Handle *htext) { + hdlhashtable table; + tyvaluerecord val, retval; + boolean fl; + bigstring funcname; + + disablelangerror (); + + fl = langfastaddresstotable (roottable, PYTHONBUILTINS, &table) && + langexternalgetquotedpath (table, RENDERPYTHON, funcname); + + + if (!fl) { + enablelangerror (); + return false; + } + + setnilvalue(&val); + if (!coercevalue(&val, listvaluetype)) { + enablelangerror (); + return false; + } + + if (!langrunscript(funcname, &val, roottable, &retval)) { + enablelangerror (); + return false; + } + + copyhandle(retval.data.stringvalue, htext); + + return true; + } + #endif |