From: <wda...@us...> - 2008-07-09 22:20:49
|
Revision: 2689 http://oorexx.svn.sourceforge.net/oorexx/?rev=2689&view=rev Author: wdashley Date: 2008-07-09 15:19:01 -0700 (Wed, 09 Jul 2008) Log Message: ----------- ArtifactID: None Comment: Cleanup for the 4.0.0 RPM build. The RPM now builds cleanly. Modified Paths: -------------- interpreter-3.x/trunk/Makefile.am interpreter-3.x/trunk/kernel/messages/gencat.inp interpreter-3.x/trunk/platform/unix/oorexx.spec.in Added Paths: ----------- interpreter-3.x/trunk/platform/unix/makepkg.rex Modified: interpreter-3.x/trunk/Makefile.am =================================================================== --- interpreter-3.x/trunk/Makefile.am 2008-07-08 21:16:10 UTC (rev 2688) +++ interpreter-3.x/trunk/Makefile.am 2008-07-09 22:19:01 UTC (rev 2689) @@ -209,6 +209,7 @@ $(build_kernel_platform_dir)/SysInterpreterInstance.hpp \ $(build_kernel_platform_dir)/SysLibrary.hpp \ $(build_kernel_platform_dir)/SysNativeFunctions.h \ + $(build_kernel_platform_dir)/SysNativeMethods.h \ $(build_kernel_platform_dir)/SystemCommands.h \ $(build_kernel_platform_dir)/SystemInterpreter.hpp \ $(build_kernel_platform_dir)/SystemSemaphores.h \ Modified: interpreter-3.x/trunk/kernel/messages/gencat.inp =================================================================== --- interpreter-3.x/trunk/kernel/messages/gencat.inp 2008-07-08 21:16:10 UTC (rev 2688) +++ interpreter-3.x/trunk/kernel/messages/gencat.inp 2008-07-09 22:19:01 UTC (rev 2689) @@ -1724,7 +1724,13 @@ $ Error_Invalid_data_constant_dir 708 Data must not follow the ::CONSTANT value; found "&1" +$ Error_Unsupported_copy_method +709 COPY method is not supported for object &1 +$ Error_Execution_context_not_active +710 Target RexxContext is no longer active + + $ * -------------------------------------------------------------------------- */ $ * -- ================================================== -- */ $ * -- DO NOT CHANGE THIS FILE, ALL CHANGES WILL BE LOST! -- */ Added: interpreter-3.x/trunk/platform/unix/makepkg.rex =================================================================== --- interpreter-3.x/trunk/platform/unix/makepkg.rex (rev 0) +++ interpreter-3.x/trunk/platform/unix/makepkg.rex 2008-07-09 22:19:01 UTC (rev 2689) @@ -0,0 +1,180 @@ +/* + * This program builds a platform-specific package of ooRexx binaries + * It will also build a "standard" tar.gz of binaries + * + * Prerequisites: + * make DESTDIR=`pwd`/tmp install + * has been run before this + * Invocation: + * Should not be executed directly, but via: + * make DESTDIR=`pwd`/tmp package + * in the directory where ooRexx is built. + */ +Parse Arg type version platform prefix root +/*root = Value( 'DESTDIR', , 'ENVIRONMENT' )*/ +origdir = Directory() +If root = '' Then 'cd' prefix +Else 'cd' root||prefix +Interpret Call 'pre'type +'tar cvf - * | gzip >' origdir'/ooRexx-'version'-'platform'.tar.gz' +If root = '' Then 'cd' prefix +Else 'cd' root +Interpret Call 'post'type +Return 0 + +prenone: +Return + +presun: +/* + * Get g++ library dependencies and copy into our library directory + */ +here = Directory() +tmp = './ldd.txt' +'ldd' './bin/rexx >' tmp +tab = d2c(9) +Call Stream tmp, 'C', 'OPEN READ' +Do While Lines( tmp ) > 0 + line = Strip( Linein( tmp ), 'B', tab ) + Select + When Left( line, 10 ) = 'libstdc++.' | Left( line, 9 ) = 'libgcc_s.' Then + Do + Parse Var line . '=>' file + 'zip -y g++dep.zip' file'*' + End + Otherwise Nop + End +End +Call Stream tmp, 'C', 'CLOSE' +'rm -f' tmp +Call Directory './lib/ooRexx' +'unzip -jo ../../g++dep.zip' +Call Directory here +'rm -f g++dep.zip' +Return + +postnone: +Return + +postsun: +If Countstr( 'sparc', platform ) \= 0 Then arch = 'sparc' +Else arch = 'x86' +lenprefix = Length( prefix ) +/* + * Get the Solaris version + */ +tmp = './un.txt' +'uname -r >' tmp +Call Stream tmp, 'C', 'OPEN READ' +prodver = Linein( tmp ) +Call Stream tmp, 'C', 'CLOSE' +'rm -f' tmp +/* + * Write the package configuration file + */ +conf = '/tmp/oorexx-build.conf' +Call WriteConf conf, arch, version, prefix, prodver, 'ooRexx', 'Open Object Rexx', 'Open Object Rexx Interpreter' +/* + * Write the package prototype file + */ +proto = '/tmp/oorexx-build.proto' +Call Stream proto, 'C', 'OPEN WRITE REPLACE' +Call Lineout proto,'i pkginfo='conf +tmp = '/tmp/oorexx-build.tmp' +/* write directory lines */ +'find . -type d -name "*" -print >' tmp +dirs = '' +Call Stream tmp, 'C', 'OPEN READ' +Do i = 1 While Lines( tmp ) > 0 + fn = Linein( tmp ) + dir = Substr( fn, 2 ) + dir = Substr( dir, lenprefix+2 ) + If Wordpos( dir, dirs ) = 0 & Strip( dir ) \= ''Then + Do + Call Lineout proto,'d none' dir '0755 bin bin' + Say 'd none' dir '0755 bin bin' + dirs = dirs dir + End +End +Call Stream tmp, 'C', 'CLOSE' + +here = Directory() +/* write file lines */ +'find . -type f -name "*" -exec ls -l {} \; >' tmp +Call Stream tmp, 'C', 'OPEN READ' +Do i = 1 While Lines( tmp ) > 0 + line = Linein( tmp ) + Parse Var line 2 p1 5 p2 8 p3 11 . . . . . . . fn + perms = '0' || GetPerms( p1 ) || GetPerms( p2 ) || GetPerms( p3 ) + file = Substr( fn, lenprefix+3 ) + Call Lineout proto,'f none' file'='here||prefix'/'file perms 'bin bin' + Say 'f none' file'='here||prefix'/'file perms 'bin bin' +End +Call Stream tmp, 'C', 'CLOSE' + +/* write link lines */ +'find . -type l -name "*" -exec ls -l {} \; >' tmp +Call Stream tmp, 'C', 'OPEN READ' +Do i = 1 While Lines( tmp ) > 0 + line = Linein( tmp ) + Parse Var line . . . . . . . . file '->' fn + file = Strip(Substr( file, lenprefix+3 )) + fn = Strip( fn ) + pos = Lastpos( '/', file ) + link = Substr( file, 1, pos ) + Call Lineout proto,'s none' file'='fn + Say 's none' file'='fn +End +Call Stream tmp, 'C', 'CLOSE' + +Call Stream proto, 'C', 'CLOSE' +/* + * Write the package file + */ +packagename = 'ooRexx-'version'-'platform'.pkg' +'rm -rf pkg' +'mkdir pkg' +'pkgmk -o -b `pwd`/'prefix '-d `pwd`/pkg -f' proto +'pkgtrans `pwd`/pkg' origdir'/'packagename 'ooRexx' +'gzip -f' origdir'/'packagename +'rm -rf pkg' +/* clean up working files */ +'rm -f' tmp proto conf +Return + +WriteProtoLine: Procedure +Parse Arg proto, line +Parse Var line perm . +Select + When Left( perm, 1 ) = 'l' Then + Do + /* we have a symbolic link */ + Parse Var line perms . . . . . . . file '->' fn + End +End +Return + +WriteConf: Procedure +Parse Arg conf, arch, version, prefix, prodver, pkg, name, desc +Call Stream conf, 'C', 'OPEN WRITE REPLACE' +Call Lineout conf,'PKG="ooRexx"' +Call Lineout conf,'NAME="Open Object Rexx"' +Call Lineout conf,'ARCH="'arch'"' +Call Lineout conf,'VERSION="'version'"' +Call Lineout conf,'CATEGORY="application"' +Call Lineout conf,'VENDOR="RexxLA"' +Call Lineout conf,'DESC="Open Object Rexx"' +Call Lineout conf,'BASEDIR="'prefix'"' +Call Lineout conf,'SUNW_PRODNAME="SunOS"' +Call Lineout conf,'SUNW_PRODVERS="'prodver'"' +Call Lineout conf,'SUNW_PKGTYPE="usr"' +Call Lineout conf,'CLASSES=none' +Call Stream conf, 'C', 'CLOSE' +Return + +GetPerms: Procedure +Parse Arg p +If Substr( p, 1, 1 ) = 'r' Then o = 4 +If Substr( p, 2, 1 ) = 'w' Then o = o + 2 +If Substr( p, 3, 1 ) = 'x' Then o = o + 1 +Return o Property changes on: interpreter-3.x/trunk/platform/unix/makepkg.rex ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native Modified: interpreter-3.x/trunk/platform/unix/oorexx.spec.in =================================================================== --- interpreter-3.x/trunk/platform/unix/oorexx.spec.in 2008-07-08 21:16:10 UTC (rev 2688) +++ interpreter-3.x/trunk/platform/unix/oorexx.spec.in 2008-07-09 22:19:01 UTC (rev 2689) @@ -149,6 +149,8 @@ %{_prefix}/include/rexxapitypes.h %{_prefix}/include/rexxplatformapis.h %{_prefix}/include/rexxplatformdefs.h +%{_prefix}/include/oorexxapi.h +%{_prefix}/include/oorexxerrors.h %{_prefix}/share/man/man1/rexx.1 %{_prefix}/share/man/man1/rexxc.1 %{_prefix}/share/man/man1/rxsubcom.1 @@ -212,6 +214,8 @@ ln -sf %{_prefix}/include/rexxapitypes.h /usr/include/rexxapitypes.h ln -sf %{_prefix}/include/rexxplatformapis.h /usr/include/rexxplatformapis.h ln -sf %{_prefix}/include/rexxplatformdefs.h /usr/include/rexxplatformdefs.h + ln -sf %{_prefix}/include/oorexxapi.h /usr/include/oorexxapi.h + ln -sf %{_prefix}/include/oorexxerrors.h /usr/include/oorexxerrors.h ln -sf %{_prefix}/share/man/man1/rexx.1 /usr/share/man/man1/rexx.1 ln -sf %{_prefix}/share/man/man1/rexxc.1 /usr/share/man/man1/rexxc.1 ln -sf %{_prefix}/share/man/man1/rxsubcom.1 /usr/share/man/man1/rxsubcom.1 @@ -261,6 +265,8 @@ rm -f /usr/include/rexxapitypes.h rm -f /usr/include/rexxplatformapis.h rm -f /usr/include/rexxplatformdefs.h +rm -f /usr/include/oorexxapi.h +rm -f /usr/include/oorexxerrors.h rm -f /usr/bin/rexxtry.rex rm -rf /usr/share/ooRexx This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bi...@us...> - 2008-07-11 19:46:09
|
Revision: 2694 http://oorexx.svn.sourceforge.net/oorexx/?rev=2694&view=rev Author: bigrixx Date: 2008-07-11 12:46:18 -0700 (Fri, 11 Jul 2008) Log Message: ----------- Fix lineout problem Modified Paths: -------------- interpreter-3.x/trunk/kernel/platform/unix/ErrorMessages.cpp interpreter-3.x/trunk/kernel/platform/unix/SysFile.cpp interpreter-3.x/trunk/rexxapi/unix/QueueCommand.cpp Modified: interpreter-3.x/trunk/kernel/platform/unix/ErrorMessages.cpp =================================================================== --- interpreter-3.x/trunk/kernel/platform/unix/ErrorMessages.cpp 2008-07-11 18:03:28 UTC (rev 2693) +++ interpreter-3.x/trunk/kernel/platform/unix/ErrorMessages.cpp 2008-07-11 19:46:18 UTC (rev 2694) @@ -121,7 +121,7 @@ sprintf(DataArea, "%s/%s", ORX_CATDIR, REXXMESSAGEFILE); if ((catd = catopen(DataArea, SECOND_PARAMETER)) == (nl_catd)CATD_ERR) { - sprintf(DataArea, "\nCannot open REXX message catalog %s.\nNot in NLSPATH or %s.\n", + sprintf(DataArea, "Cannot open REXX message catalog %s. Not in NLSPATH or %s.", REXXMESSAGEFILE, ORX_CATDIR); return new_string(DataArea); } @@ -133,7 +133,7 @@ sprintf(DataArea, "%s/%s", ORX_CATDIR, REXXMESSAGEFILE); if ((catd = catopen(DataArea, SECOND_PARAMETER)) == (nl_catd)CATD_ERR) { - sprintf(DataArea, "\nCannot open REXX message catalog %s.\nNot in NLSPATH or %s.\n", + sprintf(DataArea, "Cannot open REXX message catalog %s. Not in NLSPATH or %s.", REXXMESSAGEFILE, ORX_CATDIR); return new_string(DataArea); } Modified: interpreter-3.x/trunk/kernel/platform/unix/SysFile.cpp =================================================================== --- interpreter-3.x/trunk/kernel/platform/unix/SysFile.cpp 2008-07-11 18:03:28 UTC (rev 2693) +++ interpreter-3.x/trunk/kernel/platform/unix/SysFile.cpp 2008-07-11 19:46:18 UTC (rev 2694) @@ -540,7 +540,7 @@ // this could be a null line...don't try to write zero bytes if (len > 0) { - if (!write(buffer, len, bytesWritten)) + if (!write(mybuffer, len, bytesWritten)) { return false; } @@ -574,7 +574,7 @@ // this will just be null terminated. If this us a multi // character line terminator, both characters will appear // at the end of the line. - if (buffer[i] == '\n') + if (mybuffer[i] == '\n') { // once we hit a new line character, back up and see if the // previous character is a carriage return. If it is, collapse @@ -582,7 +582,7 @@ if (i >= 1 && buffer[i - 1] == '\r') { i--; - buffer[i] = '\n'; + mybuffer[i] = '\n'; } i++; // we need to step the position so that the null terminator doesn't overwrite break; @@ -596,7 +596,7 @@ } // null terminate, set the length, and return - buffer[i] = '\0'; + mybuffer[i] = '\0'; // this is the length minus the terminating null bytesRead = i; // return an error state, but not EOF status. Modified: interpreter-3.x/trunk/rexxapi/unix/QueueCommand.cpp =================================================================== --- interpreter-3.x/trunk/rexxapi/unix/QueueCommand.cpp 2008-07-11 18:03:28 UTC (rev 2693) +++ interpreter-3.x/trunk/rexxapi/unix/QueueCommand.cpp 2008-07-11 19:46:18 UTC (rev 2694) @@ -291,7 +291,7 @@ { sprintf(DataArea, "%s/%s", ORX_CATDIR, REXXMESSAGEFILE); if ((catd = catopen(DataArea, 0)) == (nl_catd)CATD_ERR) - printf("\nCannot open REXX message catalog %s.\nNot in NLSPATH or %s.\n", + printf("\nCannot open REXX message catalog %s. Not in NLSPATH or %s.\n", REXXMESSAGEFILE, ORX_CATDIR); } /* retrieve message from repository */ @@ -302,7 +302,7 @@ sprintf(DataArea, "%s/%s", ORX_CATDIR, REXXMESSAGEFILE); if ((catd = catopen(DataArea, 0)) == (nl_catd)CATD_ERR) { - sprintf(DataArea, "\nCannot open REXX message catalog %s.\nNot in NLSPATH or %s.\n", + sprintf(DataArea, "\nCannot open REXX message catalog %s. Not in NLSPATH or %s.\n", REXXMESSAGEFILE, ORX_CATDIR); } else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bi...@us...> - 2008-07-13 21:43:53
|
Revision: 2707 http://oorexx.svn.sourceforge.net/oorexx/?rev=2707&view=rev Author: bigrixx Date: 2008-07-13 14:43:17 -0700 (Sun, 13 Jul 2008) Log Message: ----------- fix attach thread problems Modified Paths: -------------- interpreter-3.x/trunk/kernel/api/ContextApi.hpp interpreter-3.x/trunk/kernel/api/ThreadContextStubs.cpp interpreter-3.x/trunk/kernel/runtime/InterpreterInstance.cpp interpreter-3.x/trunk/kernel/runtime/InterpreterInstance.hpp interpreter-3.x/trunk/kernel/runtime/RexxActivity.cpp interpreter-3.x/trunk/kernel/runtime/RexxActivity.hpp interpreter-3.x/trunk/platform/windows/oodialog/oovmsg.cpp interpreter-3.x/trunk/platform/windows/oodialog/oovutil.cpp interpreter-3.x/trunk/platform/windows/oodialog/oovutil.h interpreter-3.x/trunk/platform/windows/oodialog/plbdlg.cls Modified: interpreter-3.x/trunk/kernel/api/ContextApi.hpp =================================================================== --- interpreter-3.x/trunk/kernel/api/ContextApi.hpp 2008-07-13 20:52:24 UTC (rev 2706) +++ interpreter-3.x/trunk/kernel/api/ContextApi.hpp 2008-07-13 21:43:17 UTC (rev 2707) @@ -69,7 +69,22 @@ activity->enterCurrentThread(); } + /** + * Initialize an API context from a thread context. + * this is a nonblocking context. The extra argument allows + * the overloads to work + * + * @param c The source context. + */ + inline ApiContext(RexxThreadContext *c, bool blocking) + { + activity = contextToActivity(c); + context = activity->getApiContext(); + // this does not acquire the lock + } + + /** * Initialize an API context from a call context. * * @param c The source context. Modified: interpreter-3.x/trunk/kernel/api/ThreadContextStubs.cpp =================================================================== --- interpreter-3.x/trunk/kernel/api/ThreadContextStubs.cpp 2008-07-13 20:52:24 UTC (rev 2706) +++ interpreter-3.x/trunk/kernel/api/ThreadContextStubs.cpp 2008-07-13 21:43:17 UTC (rev 2707) @@ -67,10 +67,11 @@ void RexxEntry DetachThread(RexxThreadContext *c) { - ApiContext context(c); + // we do this one without grabbing the lock because we're going away. + ApiContext context(c, false); try { - context.activity->detachInstance(); + context.activity->detachThread(); } catch (RexxNativeActivation *) { Modified: interpreter-3.x/trunk/kernel/runtime/InterpreterInstance.cpp =================================================================== --- interpreter-3.x/trunk/kernel/runtime/InterpreterInstance.cpp 2008-07-13 20:52:24 UTC (rev 2706) +++ interpreter-3.x/trunk/kernel/runtime/InterpreterInstance.cpp 2008-07-13 21:43:17 UTC (rev 2707) @@ -162,6 +162,9 @@ { RexxActivity *activity = attachThread(); attachedContext = activity->getThreadContext(); + // When we attach, we get the current lock. We need to ensure we + // release this before returning control to the outside world. + activity->releaseAccess(); return 0; } @@ -196,12 +199,12 @@ /** * Detach a thread from this interpreter instance. * + * @param activity The activity to detach + * * @return true if this worked ok. */ -bool InterpreterInstance::detachThread() +bool InterpreterInstance::detachThread(RexxActivity *activity) { - // first check for an existing activity - RexxActivity *activity = findActivity(); // if the thread in question is not found, is not an attached thread, or // the thread is currently busy, this fails if (activity == OREF_NULL || !activity->isAttached() || activity->isActive()) @@ -210,7 +213,6 @@ } ResourceSection lock; - allActivities->removeItem((RexxObject *)activity); // have the activity manager remove this from the global tables // and perform resource cleanup @@ -219,7 +221,19 @@ } +/** + * Detach a thread from this interpreter instance. + * + * @return true if this worked ok. + */ +bool InterpreterInstance::detachThread() +{ + // first check for an existing activity + return detachThread(findActivity()); +} + + /** * Spawn off a new thread from an existing thread. * Modified: interpreter-3.x/trunk/kernel/runtime/InterpreterInstance.hpp =================================================================== --- interpreter-3.x/trunk/kernel/runtime/InterpreterInstance.hpp 2008-07-13 20:52:24 UTC (rev 2706) +++ interpreter-3.x/trunk/kernel/runtime/InterpreterInstance.hpp 2008-07-13 21:43:17 UTC (rev 2707) @@ -80,6 +80,7 @@ RexxActivity *attachThread(); int attachThread(RexxThreadContext *&attachedContext); bool detachThread(); + bool detachThread(RexxActivity *activity); RexxActivity *spawnActivity(RexxActivity *parent); void exitCurrentThread(); RexxActivity *findActivity(thread_id_t threadId); Modified: interpreter-3.x/trunk/kernel/runtime/RexxActivity.cpp =================================================================== --- interpreter-3.x/trunk/kernel/runtime/RexxActivity.cpp 2008-07-13 20:52:24 UTC (rev 2706) +++ interpreter-3.x/trunk/kernel/runtime/RexxActivity.cpp 2008-07-13 21:43:17 UTC (rev 2707) @@ -1573,6 +1573,14 @@ /** + * Detach a thread from the interpreter instance, + */ +void RexxActivity::detachThread() +{ + instance->detachThread(this); +} + +/** * Cleanup the resources for a detached activity, including * removing the suspended state from a pushed activity nest. */ Modified: interpreter-3.x/trunk/kernel/runtime/RexxActivity.hpp =================================================================== --- interpreter-3.x/trunk/kernel/runtime/RexxActivity.hpp 2008-07-13 20:52:24 UTC (rev 2706) +++ interpreter-3.x/trunk/kernel/runtime/RexxActivity.hpp 2008-07-13 21:43:17 UTC (rev 2707) @@ -235,6 +235,7 @@ void setupAttachedActivity(InterpreterInstance *interpreter); void addToInstance(InterpreterInstance *interpreter); void detachInstance(); + void detachThread(); inline InterpreterInstance *getInstance() { return instance; } inline void activate() { nestedCount++; } Modified: interpreter-3.x/trunk/platform/windows/oodialog/oovmsg.cpp =================================================================== --- interpreter-3.x/trunk/platform/windows/oodialog/oovmsg.cpp 2008-07-13 20:52:24 UTC (rev 2706) +++ interpreter-3.x/trunk/platform/windows/oodialog/oovmsg.cpp 2008-07-13 21:43:17 UTC (rev 2707) @@ -295,7 +295,24 @@ if ( ((m[i].tag & TAG_CTRLMASK) == TAG_DIALOG) && (m[i].tag & TAG_HELP) && (message == WM_HELP)) { LPHELPINFO phi = (LPHELPINFO)lparam; + RexxThreadContext *context = NULL; + RexxInstance *interpreter = addressedTo->interpreter; + printf("Got F1 self=%p interpreter=%p context=%p msg=%s\n", + addressedTo->self, interpreter, context, m[i].rexxProgram); + + if ( interpreter->AttachThread(&context) ) + { + printf("DID attach thread. context=%p\n", context); + context->SendMessage1(addressedTo->self, m[i].rexxProgram, context->NewInteger(phi->iCtrlId)); + context->DetachThread(); // detach the thread this is just a test. + return 1; + } + else + { + printf("Did NOT attach thread.\n"); + } + if ( phi->iContextType == HELPINFO_WINDOW ) np = "WINDOW"; else Modified: interpreter-3.x/trunk/platform/windows/oodialog/oovutil.cpp =================================================================== --- interpreter-3.x/trunk/platform/windows/oodialog/oovutil.cpp 2008-07-13 20:52:24 UTC (rev 2706) +++ interpreter-3.x/trunk/platform/windows/oodialog/oovutil.cpp 2008-07-13 21:43:17 UTC (rev 2707) @@ -311,8 +311,22 @@ return FALSE; } +RexxMethod2(int, SetInterpreter, OSELF, self, CSTRING, dlgAdmin) +{ + DIALOGADMIN * dlgAdm = (DIALOGADMIN *)string2pointer(dlgAdmin); + if ( dlgAdm == NULL ) + { + return -1; + } + printf("self=%p contex=%p instance=%p\n", self, context, context->threadContext->instance); + dlgAdm->interpreter = context->threadContext->instance; + dlgAdm->self = self; + return 0; +} + + /* prepare dialog management table for a new dialog entry */ size_t RexxEntry HandleDialogAdmin(const char *funcname, size_t argc, CONSTRXSTRING *argv, const char *qname, RXSTRING *retstr) { @@ -2241,6 +2255,12 @@ REXX_LAST_ROUTINE() }; + +RexxMethodEntry oodialog_methods[] = { + REXX_METHOD( SetInterpreter, SetInterpreter ), + REXX_LAST_METHOD() +}; + RexxPackageEntry oodialog_package_entry = { STANDARD_PACKAGE_HEADER @@ -2249,7 +2269,7 @@ NULL, // no load/unload functions NULL, oodialog_functions, // the exported functions - NULL // no methods in this package + oodialog_methods // the exported methods }; // package loading stub. Modified: interpreter-3.x/trunk/platform/windows/oodialog/oovutil.h =================================================================== --- interpreter-3.x/trunk/platform/windows/oodialog/oovutil.h 2008-07-13 20:52:24 UTC (rev 2706) +++ interpreter-3.x/trunk/platform/windows/oodialog/oovutil.h 2008-07-13 21:43:17 UTC (rev 2707) @@ -40,6 +40,8 @@ /* */ /******************************************************************************/ +#include "oorexxapi.h" + #define MAXREXXNAME 128 #define MAXLENQUEUE 2056 #define NR_BUFFER 15 @@ -418,6 +420,8 @@ HWND AktChild; HINSTANCE TheInstance; HANDLE TheThread; + RexxObjectPtr self; + RexxInstance *interpreter; BOOL OnTheTop; ULONG LeaveDialog; BOOL Use3DControls; Modified: interpreter-3.x/trunk/platform/windows/oodialog/plbdlg.cls =================================================================== --- interpreter-3.x/trunk/platform/windows/oodialog/plbdlg.cls 2008-07-13 20:52:24 UTC (rev 2706) +++ interpreter-3.x/trunk/platform/windows/oodialog/plbdlg.cls 2008-07-13 21:43:17 UTC (rev 2707) @@ -193,6 +193,8 @@ /* the OREXX-API manager and prepare the dialog management for a new */ /* dialog */ +::method setInterpreterInstance EXTERNAL 'LIBRARY oodialog SetInterpreter' + ::method Init protected expose Library Resource DlgData. use arg Library, Resource, DlgData., includeFile @@ -212,6 +214,9 @@ return 1 end + ret = self~setInterpreterInstance(self~Adm) + say 'Got back:' ret + /* call methods to get dialog settings */ self~InitAutoDetection /* create array storing connection between ids and attributes */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |