You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(4) |
Oct
(20) |
Nov
(42) |
Dec
(32) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(10) |
Feb
(42) |
Mar
(53) |
Apr
(121) |
May
(98) |
Jun
(110) |
Jul
(110) |
Aug
(88) |
Sep
(123) |
Oct
(321) |
Nov
(172) |
Dec
(607) |
2008 |
Jan
(376) |
Feb
(52) |
Mar
(26) |
Apr
(60) |
May
(42) |
Jun
(120) |
Jul
(181) |
Aug
(318) |
Sep
(265) |
Oct
(225) |
Nov
(92) |
Dec
(103) |
2009 |
Jan
(202) |
Feb
(191) |
Mar
(102) |
Apr
(235) |
May
(169) |
Jun
(122) |
Jul
(178) |
Aug
(87) |
Sep
(102) |
Oct
(69) |
Nov
(71) |
Dec
(101) |
2010 |
Jan
(55) |
Feb
(139) |
Mar
(99) |
Apr
(101) |
May
(112) |
Jun
(65) |
Jul
(31) |
Aug
(50) |
Sep
(94) |
Oct
(101) |
Nov
(95) |
Dec
(103) |
2011 |
Jan
(139) |
Feb
(136) |
Mar
(80) |
Apr
(59) |
May
(34) |
Jun
(37) |
Jul
(66) |
Aug
(51) |
Sep
(29) |
Oct
(100) |
Nov
(49) |
Dec
(92) |
2012 |
Jan
(53) |
Feb
(147) |
Mar
(113) |
Apr
(60) |
May
(39) |
Jun
(164) |
Jul
(143) |
Aug
(84) |
Sep
(127) |
Oct
(91) |
Nov
(97) |
Dec
(103) |
2013 |
Jan
(162) |
Feb
(139) |
Mar
(106) |
Apr
(23) |
May
(80) |
Jun
(73) |
Jul
(39) |
Aug
(27) |
Sep
(38) |
Oct
(54) |
Nov
(95) |
Dec
(195) |
2014 |
Jan
(113) |
Feb
(46) |
Mar
(22) |
Apr
(18) |
May
(136) |
Jun
(145) |
Jul
(86) |
Aug
(70) |
Sep
(169) |
Oct
(216) |
Nov
(58) |
Dec
(19) |
2015 |
Jan
|
Feb
(5) |
Mar
(7) |
Apr
(15) |
May
(22) |
Jun
(18) |
Jul
(4) |
Aug
(2) |
Sep
(3) |
Oct
(21) |
Nov
(24) |
Dec
(1) |
2016 |
Jan
|
Feb
(7) |
Mar
(1) |
Apr
(19) |
May
(10) |
Jun
(31) |
Jul
(24) |
Aug
(41) |
Sep
(12) |
Oct
(19) |
Nov
|
Dec
|
2017 |
Jan
(12) |
Feb
(15) |
Mar
(12) |
Apr
(8) |
May
(25) |
Jun
(8) |
Jul
(18) |
Aug
(4) |
Sep
(11) |
Oct
(25) |
Nov
(7) |
Dec
(11) |
2018 |
Jan
(2) |
Feb
(13) |
Mar
(28) |
Apr
(53) |
May
(5) |
Jun
(6) |
Jul
(13) |
Aug
(23) |
Sep
(10) |
Oct
(14) |
Nov
(33) |
Dec
(116) |
2019 |
Jan
(46) |
Feb
(112) |
Mar
(38) |
Apr
(23) |
May
(10) |
Jun
(2) |
Jul
(18) |
Aug
(4) |
Sep
(11) |
Oct
(15) |
Nov
(15) |
Dec
(17) |
2020 |
Jan
(6) |
Feb
(12) |
Mar
(41) |
Apr
(36) |
May
(7) |
Jun
(18) |
Jul
(5) |
Aug
(6) |
Sep
(6) |
Oct
(8) |
Nov
(13) |
Dec
(9) |
2021 |
Jan
(1) |
Feb
(42) |
Mar
(37) |
Apr
(16) |
May
(25) |
Jun
(4) |
Jul
(14) |
Aug
(5) |
Sep
|
Oct
(15) |
Nov
(29) |
Dec
(11) |
2022 |
Jan
(10) |
Feb
(1) |
Mar
(8) |
Apr
(16) |
May
(46) |
Jun
(37) |
Jul
(36) |
Aug
(10) |
Sep
(15) |
Oct
(6) |
Nov
(6) |
Dec
(68) |
2023 |
Jan
(27) |
Feb
(18) |
Mar
(7) |
Apr
(21) |
May
(12) |
Jun
(8) |
Jul
(16) |
Aug
(16) |
Sep
(2) |
Oct
(8) |
Nov
(3) |
Dec
(17) |
2024 |
Jan
(27) |
Feb
(9) |
Mar
(25) |
Apr
(21) |
May
(1) |
Jun
(8) |
Jul
(12) |
Aug
(30) |
Sep
(27) |
Oct
|
Nov
|
Dec
|
From: <bi...@us...> - 2008-01-26 22:13:50
|
Revision: 2313 http://oorexx.svn.sourceforge.net/oorexx/?rev=2313&view=rev Author: bigrixx Date: 2008-01-26 14:13:52 -0800 (Sat, 26 Jan 2008) Log Message: ----------- [ 1868512 ] The interpreter should initialize at library load time. [ 1869753 ] Fix unix version of RexxExecuteMacroSpace to hide shared mem Modified Paths: -------------- interpreter-3.x/trunk/Makefile.am interpreter-3.x/trunk/api/platform/unix/rexxapitypes.h interpreter-3.x/trunk/api/platform/unix/rexxplatformapis.h interpreter-3.x/trunk/api/platform/windows/rexxapitypes.h interpreter-3.x/trunk/api/platform/windows/rexxplatformapis.h interpreter-3.x/trunk/api/rexx.h interpreter-3.x/trunk/kernel/RexxClasses/CoreClasses.orx interpreter-3.x/trunk/kernel/classes/BufferClass.hpp interpreter-3.x/trunk/kernel/classes/ClassClass.cpp interpreter-3.x/trunk/kernel/classes/MessageClass.cpp interpreter-3.x/trunk/kernel/classes/MethodClass.cpp interpreter-3.x/trunk/kernel/classes/MethodClass.hpp interpreter-3.x/trunk/kernel/classes/NumberStringMath.cpp interpreter-3.x/trunk/kernel/classes/ObjectClass.cpp interpreter-3.x/trunk/kernel/classes/ObjectClass.hpp interpreter-3.x/trunk/kernel/classes/StringClass.cpp interpreter-3.x/trunk/kernel/classes/StringClass.hpp interpreter-3.x/trunk/kernel/kernel.mak interpreter-3.x/trunk/kernel/platform/unix/ExternalFunctions.cpp interpreter-3.x/trunk/kernel/platform/unix/FileSystem.cpp interpreter-3.x/trunk/kernel/platform/unix/MemorySupport.cpp interpreter-3.x/trunk/kernel/platform/unix/MiscSystem.cpp interpreter-3.x/trunk/kernel/platform/unix/PlatformDefinitions.h interpreter-3.x/trunk/kernel/platform/unix/RexxMain.cpp interpreter-3.x/trunk/kernel/platform/unix/RexxQueues.cpp interpreter-3.x/trunk/kernel/platform/unix/StoredMetaData.cpp interpreter-3.x/trunk/kernel/platform/unix/SystemCommands.cpp interpreter-3.x/trunk/kernel/platform/unix/ThreadSupport.cpp interpreter-3.x/trunk/kernel/platform/unix/TimeSupport.cpp interpreter-3.x/trunk/kernel/platform/unix/VariablePool.cpp interpreter-3.x/trunk/kernel/platform/windows/ErrorMessages.cpp interpreter-3.x/trunk/kernel/platform/windows/ExternalFunctions.cpp interpreter-3.x/trunk/kernel/platform/windows/FileSystem.cpp interpreter-3.x/trunk/kernel/platform/windows/MemorySupport.cpp interpreter-3.x/trunk/kernel/platform/windows/MiscSystem.cpp interpreter-3.x/trunk/kernel/platform/windows/PlatformDefinitions.h interpreter-3.x/trunk/kernel/platform/windows/RexxCompiler.cpp interpreter-3.x/trunk/kernel/platform/windows/RexxMain.cpp interpreter-3.x/trunk/kernel/platform/windows/RexxQueues.cpp interpreter-3.x/trunk/kernel/platform/windows/StoredMetaData.cpp interpreter-3.x/trunk/kernel/platform/windows/SystemCommands.cpp interpreter-3.x/trunk/kernel/platform/windows/SystemInitialization.cpp interpreter-3.x/trunk/kernel/platform/windows/TimeSupport.cpp interpreter-3.x/trunk/kernel/platform/windows/VariablePool.cpp interpreter-3.x/trunk/kernel/platform/windows/wrexx.def interpreter-3.x/trunk/kernel/runtime/ActivityManager.cpp interpreter-3.x/trunk/kernel/runtime/ActivityManager.hpp interpreter-3.x/trunk/kernel/runtime/CPPCode.cpp interpreter-3.x/trunk/kernel/runtime/ClassTypeCodes.h interpreter-3.x/trunk/kernel/runtime/ExitHandler.cpp interpreter-3.x/trunk/kernel/runtime/ExitHandler.hpp interpreter-3.x/trunk/kernel/runtime/GlobalData.cpp interpreter-3.x/trunk/kernel/runtime/GlobalNames.h interpreter-3.x/trunk/kernel/runtime/Interpreter.cpp interpreter-3.x/trunk/kernel/runtime/Interpreter.hpp interpreter-3.x/trunk/kernel/runtime/PrimitiveBehaviourNames.h interpreter-3.x/trunk/kernel/runtime/PrimitiveBehaviours.cpp interpreter-3.x/trunk/kernel/runtime/PrimitiveClasses.xml interpreter-3.x/trunk/kernel/runtime/RexxActivation.cpp interpreter-3.x/trunk/kernel/runtime/RexxActivation.hpp interpreter-3.x/trunk/kernel/runtime/RexxActivity.cpp interpreter-3.x/trunk/kernel/runtime/RexxActivity.hpp interpreter-3.x/trunk/kernel/runtime/RexxBehaviour.cpp interpreter-3.x/trunk/kernel/runtime/RexxCode.cpp interpreter-3.x/trunk/kernel/runtime/RexxConstants.hpp interpreter-3.x/trunk/kernel/runtime/RexxMemory.cpp interpreter-3.x/trunk/kernel/runtime/RexxMemory.hpp interpreter-3.x/trunk/kernel/runtime/RexxMisc.cpp interpreter-3.x/trunk/kernel/runtime/RexxMisc.hpp interpreter-3.x/trunk/kernel/runtime/RexxNativeAPI.h interpreter-3.x/trunk/kernel/runtime/RexxNativeActivation.cpp interpreter-3.x/trunk/kernel/runtime/RexxNativeActivation.hpp interpreter-3.x/trunk/kernel/runtime/RexxNativeCode.cpp interpreter-3.x/trunk/kernel/runtime/RexxStartup.cpp interpreter-3.x/trunk/kernel/runtime/Setup.cpp interpreter-3.x/trunk/kernel/runtime/VirtualFunctionTable.cpp interpreter-3.x/trunk/lib/RexxPlatformInterface.h interpreter-3.x/trunk/platform/unix/RexxCompiler.cpp interpreter-3.x/trunk/platform/unix/rexx.cpp interpreter-3.x/trunk/platform/windows/buildorx.bat interpreter-3.x/trunk/platform/windows/ole/events.cpp interpreter-3.x/trunk/platform/windows/ole/events.h interpreter-3.x/trunk/platform/windows/ole/orexxole.c interpreter-3.x/trunk/platform/windows/oodialog/oovbmp.c interpreter-3.x/trunk/platform/windows/oodialog/oovdata.c interpreter-3.x/trunk/platform/windows/oodialog/oovdeskt.c interpreter-3.x/trunk/platform/windows/oodialog/oovdraw.c interpreter-3.x/trunk/platform/windows/oodialog/oovmsg.c interpreter-3.x/trunk/platform/windows/oodialog/oovother.c interpreter-3.x/trunk/platform/windows/oodialog/oovscrll.c interpreter-3.x/trunk/platform/windows/oodialog/oovtext.c interpreter-3.x/trunk/platform/windows/oodialog/oovtools.c interpreter-3.x/trunk/platform/windows/oodialog/oovuser.c interpreter-3.x/trunk/platform/windows/oodialog/oovutil.c interpreter-3.x/trunk/platform/windows/oodialog/oovutil.h interpreter-3.x/trunk/platform/windows/orxscrpt/eng2rexx.cpp interpreter-3.x/trunk/platform/windows/orxscrpt/eng2rexx.hpp interpreter-3.x/trunk/platform/windows/orxscrpt/orxdispid.cpp interpreter-3.x/trunk/platform/windows/orxscrpt/orxevents.cpp interpreter-3.x/trunk/platform/windows/orxscrpt/orxidispatch.cpp interpreter-3.x/trunk/platform/windows/orxscrpt/orxscrpt.cpp interpreter-3.x/trunk/platform/windows/orxscrpt/orxscrpt.hpp interpreter-3.x/trunk/platform/windows/orxscrpt/orxscrpterror.cpp interpreter-3.x/trunk/platform/windows/orxscrpt/orxscrpterror.hpp interpreter-3.x/trunk/platform/windows/oryxwin.mak interpreter-3.x/trunk/platform/windows/rexx.c interpreter-3.x/trunk/platform/windows/rexxc.c interpreter-3.x/trunk/platform/windows/rexxhide.c interpreter-3.x/trunk/platform/windows/rexxpaws.c interpreter-3.x/trunk/platform/windows/winlist.c interpreter-3.x/trunk/platform/windows/winlist.h interpreter-3.x/trunk/rexutils/rxmath.cpp interpreter-3.x/trunk/rexutils/rxsock.cpp interpreter-3.x/trunk/rexutils/rxsockfn.cpp interpreter-3.x/trunk/rexutils/unix/rexxutil.cpp interpreter-3.x/trunk/rexutils/windows/rexxutil.cpp interpreter-3.x/trunk/rexutils/windows/rxwinsys.c interpreter-3.x/trunk/rexxapi/unix/MacroSpace.cpp interpreter-3.x/trunk/rexxapi/unix/QueuesAPI.cpp interpreter-3.x/trunk/rexxapi/unix/RexxAPIManager.cpp interpreter-3.x/trunk/rexxapi/unix/SUBCOMCommand.cpp interpreter-3.x/trunk/rexxapi/unix/SubcommandAPI.cpp interpreter-3.x/trunk/rexxapi/unix/SubcommandAPI.h interpreter-3.x/trunk/rexxapi/windows/MacroSpace.c interpreter-3.x/trunk/rexxapi/windows/QueuesAPI.c interpreter-3.x/trunk/rexxapi/windows/RexxAPIManager.c interpreter-3.x/trunk/rexxapi/windows/RexxAPIManager.h interpreter-3.x/trunk/rexxapi/windows/SUBCOMCommand.c interpreter-3.x/trunk/rexxapi/windows/SubcommandAPI.c interpreter-3.x/trunk/rexxapi/windows/SubcommandAPI.h interpreter-3.x/trunk/samples/unix/api/wpipe1/rexxasp1.c interpreter-3.x/trunk/samples/unix/api/wpipe2/rexxasp2.c interpreter-3.x/trunk/samples/unix/api/wpipe3/rexxasp3.c interpreter-3.x/trunk/samples/windows/api/callrxwn/callrxwn.c interpreter-3.x/trunk/samples/windows/api/callrxwn/callrxwn.h interpreter-3.x/trunk/samples/windows/api/rexxexit/rexxexit.c interpreter-3.x/trunk/samples/windows/api/wpipe/wpipe1/rexxapi1.c interpreter-3.x/trunk/samples/windows/api/wpipe/wpipe2/rexxapi2.c interpreter-3.x/trunk/samples/windows/api/wpipe/wpipe3/rexxapi3.c Added Paths: ----------- interpreter-3.x/trunk/kernel/platform/unix/SystemInitialization.cpp interpreter-3.x/trunk/kernel/platform/unix/SystemInterpreter.cpp interpreter-3.x/trunk/kernel/platform/unix/SystemInterpreter.hpp interpreter-3.x/trunk/kernel/platform/windows/SystemInterpreter.cpp interpreter-3.x/trunk/kernel/platform/windows/SystemInterpreter.hpp interpreter-3.x/trunk/kernel/runtime/ActivityDispatcher.cpp interpreter-3.x/trunk/kernel/runtime/ActivityDispatcher.hpp interpreter-3.x/trunk/kernel/runtime/CallbackDispatcher.cpp interpreter-3.x/trunk/kernel/runtime/CallbackDispatcher.hpp interpreter-3.x/trunk/kernel/runtime/CreateMethodDispatcher.cpp interpreter-3.x/trunk/kernel/runtime/CreateMethodDispatcher.hpp interpreter-3.x/trunk/kernel/runtime/InterpreterInstance.cpp interpreter-3.x/trunk/kernel/runtime/InterpreterInstance.hpp interpreter-3.x/trunk/kernel/runtime/RexxStartDispatcher.cpp interpreter-3.x/trunk/kernel/runtime/RexxStartDispatcher.hpp interpreter-3.x/trunk/kernel/runtime/TranslateDispatcher.cpp interpreter-3.x/trunk/kernel/runtime/TranslateDispatcher.hpp interpreter-3.x/trunk/lib/RexxInternalApis.h interpreter-3.x/trunk/platform/unix/rexximage.cpp interpreter-3.x/trunk/platform/windows/rexximage.cpp Removed Paths: ------------- interpreter-3.x/trunk/lib/LocalProcessData.cpp Modified: interpreter-3.x/trunk/Makefile.am =================================================================== --- interpreter-3.x/trunk/Makefile.am 2008-01-26 21:45:08 UTC (rev 2312) +++ interpreter-3.x/trunk/Makefile.am 2008-01-26 22:13:52 UTC (rev 2313) @@ -191,7 +191,8 @@ $(kernel_platform_unix_dir)/SharedMemorySupport.h \ $(kernel_platform_unix_dir)/SystemCommands.h \ $(kernel_platform_unix_dir)/SystemSemaphores.h \ - $(kernel_platform_unix_dir)/ThreadSupport.hpp + $(kernel_platform_unix_dir)/ThreadSupport.hpp \ + $(kernel_platform_unix_dir)/SystemInterpreter.hpp platformcommonHeaders = runtimeHeaders = $(runtime_dir)/DeadObject.hpp \ $(runtime_dir)/ClassTypeCodes.h \ @@ -208,6 +209,7 @@ $(runtime_dir)/ActivityManager.hpp \ $(runtime_dir)/LibraryManager.hpp \ $(runtime_dir)/Interpreter.hpp \ + $(runtime_dir)/InterpreterInstance.hpp \ $(runtime_dir)/ProtectedObject.hpp \ $(runtime_dir)/ExitHandler.hpp \ $(runtime_dir)/RexxBehaviour.hpp \ @@ -233,7 +235,12 @@ $(runtime_dir)/RexxNativeCode.hpp \ $(runtime_dir)/RexxSmartBuffer.hpp \ $(runtime_dir)/RexxVariable.hpp \ - $(runtime_dir)/RexxVariableDictionary.hpp + $(runtime_dir)/RexxVariableDictionary.hpp \ + $(runtime_dir)/RexxStartDispatcher.hpp \ + $(runtime_dir)/ActivityDispatcher.hpp \ + $(runtime_dir)/TranslateDispatcher.hpp \ + $(runtime_dir)/CreateMethodDispatcher.hpp \ + $(runtime_dir)/CallbackDispatcher.hpp streamlibraryHeaders = $(streamlibrary_dir)/StreamCommandParser.h \ $(streamlibrary_dir)/StreamNative.h libHeaders = $(lib_dir)/RexxPlatformDefinitions.h \ @@ -297,7 +304,7 @@ # # Binary targets # -bin_PROGRAMS = rexx rexxc rxqueue rxsubcom rxdelipc +bin_PROGRAMS = rexximage rexx rexxc rxqueue rxsubcom rxdelipc # # Shared library targets @@ -461,8 +468,9 @@ $(kernel_platform_unix_dir)/TimeSupport.cpp \ $(kernel_platform_unix_dir)/UseridFunction.cpp \ $(kernel_platform_unix_dir)/ValueFunction.cpp \ - $(kernel_platform_unix_dir)/VariablePool.cpp -# $(runtime_dir)/RexxVariableDictionary2.cpp + $(kernel_platform_unix_dir)/VariablePool.cpp \ + $(kernel_platform_unix_dir)/SystemInitialization.cpp \ + $(kernel_platform_unix_dir)/SystemInterpreter.cpp runtime_sources = $(runtime_dir)/DeadObject.cpp \ $(runtime_dir)/GlobalData.cpp \ $(runtime_dir)/GlobalNames.cpp \ @@ -477,6 +485,7 @@ $(runtime_dir)/ActivityManager.cpp \ $(runtime_dir)/LibraryManager.cpp \ $(runtime_dir)/Interpreter.cpp \ + $(runtime_dir)/InterpreterInstance.cpp \ $(runtime_dir)/RexxBehaviour.cpp \ $(runtime_dir)/RexxCode.cpp \ $(runtime_dir)/CPPCode.cpp \ @@ -503,10 +512,14 @@ $(runtime_dir)/Setup.cpp \ $(runtime_dir)/Utilities.cpp \ $(runtime_dir)/Version.cpp \ - $(runtime_dir)/VirtualFunctionTable.cpp + $(runtime_dir)/VirtualFunctionTable.cpp \ + $(runtime_dir)/RexxStartDispatcher.cpp \ + $(runtime_dir)/ActivityDispatcher.cpp \ + $(runtime_dir)/TranslateDispatcher.cpp \ + $(runtime_dir)/CreateMethodDispatcher.cpp \ + $(runtime_dir)/CallbackDispatcher.cpp streamlibrary_sources = $(streamlibrary_dir)/StreamCommandParser.cpp \ $(streamlibrary_dir)/StreamNative.cpp -lib_sources = $(lib_dir)/LocalProcessData.cpp librexx_la_SOURCES = $(classes_sources) \ $(expression_sources) \ $(instructions_sources) \ @@ -514,8 +527,7 @@ $(kernel_platform_common_sources) \ $(platform_sources) \ $(runtime_sources) \ - $(streamlibrary_sources) \ - $(lib_sources) + $(streamlibrary_sources) core_classes = $(rexxclasses_dir)/CoreClasses.orx \ $(rexxclasses_dir)/StreamClasses.orx \ $(rexxclasses_dir)/SystemMethods.orx @@ -540,7 +552,7 @@ -I$(kernel_platform_unix_dir) \ -I$(rexxapi_unix_dir) -librexx_la_LDFLAGS = $(VERSION_INFO) +librexx_la_LDFLAGS = $(VERSION_INFO) -nostartfiles #################### rexx ########################## # Sources for rexx # @@ -561,6 +573,27 @@ rexx_LDADD = librexx.la librexxapi.la @ORX_LDADD_EXECUTABLE@ rexx_LDFLAGS = @ORX_LDFLAGS_EXECUTABLE@ + +#################### rexx ########################## +# Sources for rexx +# +rexximage_SOURCES = $(platform_unix_dir)/rexximage.cpp +# +# Preprocessor flags for rexximage +# +rexximage_CXXFLAGS = $(COMMON_CPPFLAGS) \ + -I$(lib_dir) \ + -I$(api_dir) \ + -I$(platform_api_dir) \ + -I$(messages_dir) \ + -I$(kernel_platform_unix_dir) \ + -I$(rexxapi_unix_dir) +# +# Extra libraries for rexx +# +rexximage_LDADD = librexx.la librexxapi.la @ORX_LDADD_EXECUTABLE@ +rexximage_LDFLAGS = @ORX_LDFLAGS_EXECUTABLE@ + #################### rexxc ######################### # Sources for rexxc # @@ -761,10 +794,10 @@ $(runtime_dir)/VirtualFunctionTables.cpp: $(runtime_dir)/VirtualFunctionTable.xsl $(classesXML) sh ./xsl.sh $(@) $(classesXML) $(runtime_dir)/VirtualFunctionTable.xsl -rexx.img: rexx librexxutil.la $(core_classes) $(core_platform_classes) +rexx.img: rexximage librexxutil.la $(core_classes) $(core_platform_classes) cp $(rexxclasses_dir)/*.orx . cp $(kernel_platform_unix_dir)/*.orx . - ./rexx -i + ./rexximage -i rm -f *.orx # Modified: interpreter-3.x/trunk/api/platform/unix/rexxapitypes.h =================================================================== --- interpreter-3.x/trunk/api/platform/unix/rexxapitypes.h 2008-01-26 21:45:08 UTC (rev 2312) +++ interpreter-3.x/trunk/api/platform/unix/rexxapitypes.h 2008-01-26 22:13:52 UTC (rev 2313) @@ -54,9 +54,7 @@ #undef __REXX64__ #endif -#define APIENTRY -#define RexxEntry APIENTRY -#define REXXENTRY APIENTRY +#define REXXENTRY typedef void *REXXPFN; typedef pid_t process_id_t; Modified: interpreter-3.x/trunk/api/platform/unix/rexxplatformapis.h =================================================================== --- interpreter-3.x/trunk/api/platform/unix/rexxplatformapis.h 2008-01-26 21:45:08 UTC (rev 2312) +++ interpreter-3.x/trunk/api/platform/unix/rexxplatformapis.h 2008-01-26 22:13:52 UTC (rev 2313) @@ -54,12 +54,12 @@ /*** RexxPullQueue - Retrieve data from an External Data Queue */ -APIRET APIENTRY RexxPullQueue ( +APIRET REXXENTRY RexxPullQueue ( const char *, /* Name of queue to read from */ PRXSTRING, /* RXSTRING to receive data */ REXXDATETIME *, /* Stor for data date/time */ size_t); /* wait status (WAIT|NOWAIT) */ -typedef APIRET (APIENTRY *PFNREXXPULLQUEUE)(const char *, PCONSTRXSTRING, REXXDATETIME *, +typedef APIRET (REXXENTRY *PFNREXXPULLQUEUE)(const char *, PCONSTRXSTRING, REXXDATETIME *, size_t); #endif /* REXXPLATFORMAPIS_INCLUDED */ Modified: interpreter-3.x/trunk/api/platform/windows/rexxapitypes.h =================================================================== --- interpreter-3.x/trunk/api/platform/windows/rexxapitypes.h 2008-01-26 21:45:08 UTC (rev 2312) +++ interpreter-3.x/trunk/api/platform/windows/rexxapitypes.h 2008-01-26 22:13:52 UTC (rev 2313) @@ -63,13 +63,12 @@ typedef DWORD thread_id_t; typedef DWORD process_id_t; -#define RexxEntry APIENTRY #define REXXENTRY APIENTRY #ifdef __cplusplus extern "C" { #endif -typedef size_t (RexxEntry *REXXPFN)(); +typedef size_t (REXXENTRY *REXXPFN)(); #ifdef __cplusplus } #endif Modified: interpreter-3.x/trunk/api/platform/windows/rexxplatformapis.h =================================================================== --- interpreter-3.x/trunk/api/platform/windows/rexxplatformapis.h 2008-01-26 21:45:08 UTC (rev 2312) +++ interpreter-3.x/trunk/api/platform/windows/rexxplatformapis.h 2008-01-26 22:13:52 UTC (rev 2313) @@ -40,12 +40,12 @@ /*** RexxPullQueue - Retrieve data from an External Data Queue */ -APIRET APIENTRY RexxPullQueue ( +APIRET REXXENTRY RexxPullQueue ( const char *, /* Name of queue to read from */ PRXSTRING, /* RXSTRING to receive data */ SYSTEMTIME *, /* Stor for data date/time */ unsigned int); /* wait status (WAIT|NOWAIT) */ -typedef APIRET (APIENTRY *PFNREXXPULLQUEUE)(const char *, PCONSTRXSTRING, SYSTEMTIME *, +typedef APIRET (REXXENTRY *PFNREXXPULLQUEUE)(const char *, PCONSTRXSTRING, SYSTEMTIME *, unsigned int); #endif /* REXXPLATFORMAPIS_INCLUDED */ Modified: interpreter-3.x/trunk/api/rexx.h =================================================================== --- interpreter-3.x/trunk/api/rexx.h 2008-01-26 21:45:08 UTC (rev 2312) +++ interpreter-3.x/trunk/api/rexx.h 2008-01-26 22:13:52 UTC (rev 2313) @@ -136,6 +136,8 @@ typedef char *PEXIT; /* ptr to exit parameter block */ + + /*----------------------------------------------------------------------------*/ /*** Include the other common and platform specific stuff */ /*----------------------------------------------------------------------------*/ @@ -147,6 +149,17 @@ typedef size_t stringsize_t; // a Rexx string size typedef ssize_t wholenumber_t; // a Rexx whole number + +typedef struct _RexxConditionData +{ + wholenumber_t code; // The condition CODE information + wholenumber_t rc; // The condition RC value + RXSTRING message; // The condition secondary message text + RXSTRING errortext; // The condition error text. + size_t position; // The failure line number value + RXSTRING program; // The running program name +} RexxConditionData; + /*----------------------------------------------------------------------------*/ /* */ /* 32-bit */ @@ -161,7 +174,7 @@ extern "C" { #endif -int APIENTRY RexxStart ( +int REXXENTRY RexxStart ( size_t, /* Num of args passed to rexx */ PCONSTRXSTRING, /* Array of args passed to rex */ const char *, /* [d:][path] filename[.ext] */ @@ -171,31 +184,49 @@ PRXSYSEXIT, /* SysExit env. names & codes */ short *, /* Ret code from if numeric */ PRXSTRING ); /* Retvalue from the rexx proc */ -typedef APIRET (APIENTRY *PFNREXXSTART)(size_t, PCONSTRXSTRING, const char *, PRXSTRING, +typedef APIRET (REXXENTRY *PFNREXXSTART)(size_t, PCONSTRXSTRING, const char *, PRXSTRING, const char *, int, PRXSYSEXIT, short *, PRXSTRING); #define REXXSTART RexxStart +APIRET REXXENTRY RexxTranslateProgram( + const char *, // input program name + const char *, // output file name + PRXSYSEXIT); // system exits to use during translation + + +typedef APIRET (REXXENTRY *PFNREXXTRANSLATEPROGRAM)(const char *, const char *, PRXSYSEXIT); + +#define REXXTRANSLATEPROGRAM RexxTranslateProgram + + +char *REXXENTRY RexxGetVersionInformation(); + +typedef char *(REXXENTRY *PFNGETVERSIONINFORMATION)(); + +#define REXXGETVERSIONINFORMATON RexxGetVersionInformation + + /*----------------------------------------------------------------------------*/ /*** Subcommand Interface */ /*----------------------------------------------------------------------------*/ /* This typedef simplifies coding of a Subcommand handler. */ -typedef APIRET APIENTRY RexxSubcomHandler(PCONSTRXSTRING, +typedef APIRET REXXENTRY RexxSubcomHandler(PCONSTRXSTRING, unsigned short *, PRXSTRING); /*** RexxRegisterSubcomDll -- Register a DLL entry point */ /*** as a Subcommand handler */ -APIRET APIENTRY RexxRegisterSubcomDll ( +APIRET REXXENTRY RexxRegisterSubcomDll ( const char *, /* Name of subcom handler */ const char *, /* Name of DLL */ const char *, /* Name of procedure in DLL */ const char *, /* User area */ size_t ); /* Drop authority. */ -typedef APIRET (APIENTRY *PFNREXXREGISTERSUBCOMDLL)(const char *, const char *, const char *, +typedef APIRET (REXXENTRY *PFNREXXREGISTERSUBCOMDLL)(const char *, const char *, const char *, char *, size_t); #define REXXREGISTERSUBCOMDLL RexxRegisterSubcomDll @@ -203,22 +234,22 @@ /*** RexxRegisterSubcomExe -- Register an EXE entry point */ /*** as a Subcommand handler */ -APIRET APIENTRY RexxRegisterSubcomExe ( +APIRET REXXENTRY RexxRegisterSubcomExe ( const char *, /* Name of subcom handler */ REXXPFN, /* address of handler in EXE */ const char *); /* User area */ -typedef APIRET (APIENTRY *PFNREXXREGISTERSUBCOMEXE)(const char *, REXXPFN, char *); +typedef APIRET (REXXENTRY *PFNREXXREGISTERSUBCOMEXE)(const char *, REXXPFN, char *); #define REXXREGISTERSUBCOMEXE RexxRegisterSubcomExe /*** RexxQuerySubcom - Query an environment for Existance */ -APIRET APIENTRY RexxQuerySubcom( +APIRET REXXENTRY RexxQuerySubcom( const char *, /* Name of the Environment */ const char *, /* DLL Module Name */ unsigned short *, /* Stor for existance code */ char *); /* Stor for user word */ -typedef APIRET (APIENTRY *PFNREXXQUERYSUBCOM)(const char *, const char *, unsigned short *, +typedef APIRET (REXXENTRY *PFNREXXQUERYSUBCOM)(const char *, const char *, unsigned short *, char *); #define REXXQUERYSUBCOM RexxQuerySubcom @@ -226,10 +257,10 @@ /*** RexxDeregisterSubcom - Drop registration of a Subcommand */ /*** environment */ -APIRET APIENTRY RexxDeregisterSubcom( +APIRET REXXENTRY RexxDeregisterSubcom( const char *, /* Name of the Environment */ const char * ); /* DLL Module Name */ -typedef APIRET (APIENTRY *PFNREXXDEREGISTERSUBCOM)(const char *, const char *); +typedef APIRET (REXXENTRY *PFNREXXDEREGISTERSUBCOM)(const char *, const char *); #define REXXDEREGISTERSUBCOM RexxDeregisterSubcom @@ -239,9 +270,9 @@ /*** RexxVariablePool - Request Variable Pool Service */ -APIRET APIENTRY RexxVariablePool( +APIRET REXXENTRY RexxVariablePool( PSHVBLOCK); /* Pointer to list of SHVBLOCKs*/ -typedef APIRET (APIENTRY *PFNREXXVARIABLEPOOL)(PSHVBLOCK); +typedef APIRET (REXXENTRY *PFNREXXVARIABLEPOOL)(PSHVBLOCK); #define REXXVARIABLEPOOL RexxVariablePool @@ -251,7 +282,7 @@ /* This typedef simplifies coding of an External Function. */ -typedef unsigned int APIENTRY RexxFunctionHandler(const char *, +typedef unsigned int REXXENTRY RexxFunctionHandler(const char *, size_t, PCONSTRXSTRING, const char *, @@ -259,36 +290,36 @@ /*** RexxRegisterFunctionDll - Register a function in the AFT */ -APIRET APIENTRY RexxRegisterFunctionDll ( +APIRET REXXENTRY RexxRegisterFunctionDll ( const char *, /* Name of function to add */ const char *, /* Dll file name (if in dll) */ const char *); /* Entry in dll */ -typedef APIRET (APIENTRY *PFNREXXREGISTERFUNCTIONDLL)(const char *, const char *, const char *); +typedef APIRET (REXXENTRY *PFNREXXREGISTERFUNCTIONDLL)(const char *, const char *, const char *); #define REXXREGISTERFUNCTIONDLL RexxRegisterFunctionDll /*** RexxRegisterFunctionExe - Register a function in the AFT */ -APIRET APIENTRY RexxRegisterFunctionExe ( +APIRET REXXENTRY RexxRegisterFunctionExe ( const char *, /* Name of function to add */ REXXPFN); /* Entry point in EXE */ -typedef APIRET (APIENTRY *PFNREXXREGISTERFUNCTIONEXE)(const char *, REXXPFN); +typedef APIRET (REXXENTRY *PFNREXXREGISTERFUNCTIONEXE)(const char *, REXXPFN); #define REXXREGISTERFUNCTIONEXE RexxRegisterFunctionExe /*** RexxDeregisterFunction - Delete a function from the AFT */ -APIRET APIENTRY RexxDeregisterFunction ( +APIRET REXXENTRY RexxDeregisterFunction ( const char * ); /* Name of function to remove */ -typedef APIRET (APIENTRY *PFNREXXDEREGISTERFUNCTION)(const char *); +typedef APIRET (REXXENTRY *PFNREXXDEREGISTERFUNCTION)(const char *); #define REXXDEREGISTERFUNCTION RexxDeregisterFunction /*** RexxQueryFunction - Scan the AFT for a function */ -APIRET APIENTRY RexxQueryFunction ( +APIRET REXXENTRY RexxQueryFunction ( const char * ); /* Name of function to find */ -typedef APIRET (APIENTRY *PFNREXXQUERYFUNCTION)(const char *); +typedef APIRET (REXXENTRY *PFNREXXQUERYFUNCTION)(const char *); #define REXXQUERYFUNCTION RexxQueryFunction @@ -463,48 +494,48 @@ } RXVALCALL_PARM; /* This typedef simplifies coding of an Exit handler. */ -typedef int APIENTRY RexxExitHandler(int, int, PEXIT); +typedef int REXXENTRY RexxExitHandler(int, int, PEXIT); /*** RexxRegisterExitDll - Register a system exit. */ -APIRET APIENTRY RexxRegisterExitDll ( +APIRET REXXENTRY RexxRegisterExitDll ( const char *, /* Name of the exit handler */ const char *, /* Name of the DLL */ const char *, /* Name of the procedure */ const char *, /* User area */ size_t); /* Drop authority */ -typedef APIRET (APIENTRY *PFNREXXREGISTEREXITDLL)(const char *, const char *, const char *, +typedef APIRET (REXXENTRY *PFNREXXREGISTEREXITDLL)(const char *, const char *, const char *, char *, size_t); #define REXXREGISTEREXITDLL RexxRegisterExitDll /*** RexxRegisterExitExe - Register a system exit. */ -APIRET APIENTRY RexxRegisterExitExe ( +APIRET REXXENTRY RexxRegisterExitExe ( const char *, /* Name of the exit handler */ REXXPFN, /* Address of exit handler */ const char *); /* User area */ -typedef APIRET (APIENTRY *PFNREXXREGISTEREXITEXE)(const char *, REXXPFN, char *); +typedef APIRET (REXXENTRY *PFNREXXREGISTEREXITEXE)(const char *, REXXPFN, char *); #define REXXREGISTEREXITEXE RexxRegisterExitExe /*** RexxDeregisterExit - Drop registration of a system exit. */ -APIRET APIENTRY RexxDeregisterExit ( +APIRET REXXENTRY RexxDeregisterExit ( const char *, /* Exit name */ const char * ) ; /* DLL module name */ -typedef APIRET (APIENTRY *PFNREXXDEREGISTEREXIT)(const char *, const char *); +typedef APIRET (REXXENTRY *PFNREXXDEREGISTEREXIT)(const char *, const char *); #define REXXDEREGISTEREXIT RexxDeregisterExit /*** RexxQueryExit - Query an exit for existance. */ -APIRET APIENTRY RexxQueryExit ( +APIRET REXXENTRY RexxQueryExit ( const char *, /* Exit name */ const char *, /* DLL Module name. */ unsigned short *, /* Existance flag. */ char * ); /* User data. */ -typedef APIRET (APIENTRY *PFNREXXQUERYEXIT)(const char *, const char *, unsigned short *, char *); +typedef APIRET (REXXENTRY *PFNREXXQUERYEXIT)(const char *, const char *, unsigned short *, char *); #define REXXQUERYEXIT RexxQueryExit @@ -514,28 +545,28 @@ /*** RexxSetHalt - Request Program Halt */ -APIRET APIENTRY RexxSetHalt( +APIRET REXXENTRY RexxSetHalt( process_id_t, /* Process Id */ thread_id_t); /* Thread Id */ -typedef APIRET (APIENTRY *PFNREXXSETHALT)(process_id_t, thread_id_t); +typedef APIRET (REXXENTRY *PFNREXXSETHALT)(process_id_t, thread_id_t); #define REXXSETHALT RexxSetHalt /*** RexxSetTrace - Request Program Trace */ -APIRET APIENTRY RexxSetTrace( +APIRET REXXENTRY RexxSetTrace( process_id_t, /* Process Id */ thread_id_t); /* Thread Id */ -typedef APIRET (APIENTRY *PFNREXXSETTRACE)(process_id_t, thread_id_t); +typedef APIRET (REXXENTRY *PFNREXXSETTRACE)(process_id_t, thread_id_t); #define REXXSETTRACE RexxSetTrace /*** RexxResetTrace - Turn Off Program Trace */ -APIRET APIENTRY RexxResetTrace( +APIRET REXXENTRY RexxResetTrace( process_id_t, /* Process Id */ thread_id_t); /* Thread Id */ -typedef APIRET (APIENTRY *PFNREXXRESETTRACE)(process_id_t, thread_id_t); +typedef APIRET (REXXENTRY *PFNREXXRESETTRACE)(process_id_t, thread_id_t); #define REXXRESETTRACE RexxResetTrace @@ -545,66 +576,66 @@ /*** RexxAddMacro - Register a function in the Macro Space */ -APIRET APIENTRY RexxAddMacro( +APIRET REXXENTRY RexxAddMacro( const char *, /* Function to add or change */ const char *, /* Name of file to get function*/ size_t); /* Flag indicating search pos */ -typedef APIRET (APIENTRY *PFNREXXADDMACRO)(const char *, const char *, size_t); +typedef APIRET (REXXENTRY *PFNREXXADDMACRO)(const char *, const char *, size_t); #define REXXADDMACRO RexxAddMacro /*** RexxDropMacro - Remove a function from the Macro Space */ -APIRET APIENTRY RexxDropMacro ( +APIRET REXXENTRY RexxDropMacro ( const char * ); /* Name of function to remove */ -typedef APIRET (APIENTRY *PFNREXXDROPMACRO)(const char *); +typedef APIRET (REXXENTRY *PFNREXXDROPMACRO)(const char *); #define REXXDROPMACRO RexxDropMacro /*** RexxSaveMacroSpace - Save Macro Space functions to a file */ -APIRET APIENTRY RexxSaveMacroSpace ( +APIRET REXXENTRY RexxSaveMacroSpace ( size_t, /* Argument count (0==save all)*/ const char * *, /* List of funct names to save */ const char *); /* File to save functions in */ -typedef APIRET (APIENTRY * PFNREXXSAVEMACROSPACE)(size_t, const char * *, const char *); +typedef APIRET (REXXENTRY * PFNREXXSAVEMACROSPACE)(size_t, const char * *, const char *); #define REXXSAVEMACROSPACE RexxSaveMacroSpace /*** RexxLoadMacroSpace - Load Macro Space functions from a file */ -APIRET APIENTRY RexxLoadMacroSpace ( +APIRET REXXENTRY RexxLoadMacroSpace ( size_t, /* Argument count (0==load all)*/ const char * *, /* List of funct names to load */ const char *); /* File to load functions from */ -typedef APIRET (APIENTRY *PFNREXXLOADMACROSPACE)(size_t, const char * *, const char *); +typedef APIRET (REXXENTRY *PFNREXXLOADMACROSPACE)(size_t, const char * *, const char *); #define REXXLOADMACROSPACE RexxLoadMacroSpace /*** RexxQueryMacro - Find a function's search-order position */ -APIRET APIENTRY RexxQueryMacro ( +APIRET REXXENTRY RexxQueryMacro ( const char *, /* Function to search for */ unsigned short * ); /* Ptr for position flag return*/ -typedef APIRET (APIENTRY *PFNREXXQUERYMACRO)(const char *, unsigned short *); +typedef APIRET (REXXENTRY *PFNREXXQUERYMACRO)(const char *, unsigned short *); #define REXXQUERYMACRO RexxQueryMacro /*** RexxReorderMacro - Change a function's search-order */ /*** position */ -APIRET APIENTRY RexxReorderMacro( +APIRET REXXENTRY RexxReorderMacro( const char *, /* Name of funct change order */ size_t); /* New position for function */ -typedef APIRET (APIENTRY *PFNREXXREORDERMACRO)(const char *, size_t); +typedef APIRET (REXXENTRY *PFNREXXREORDERMACRO)(const char *, size_t); #define REXXREORDERMACRO RexxReorderMacro /*** RexxClearMacroSpace - Remove all functions from a MacroSpace */ -APIRET APIENTRY RexxClearMacroSpace( +APIRET REXXENTRY RexxClearMacroSpace( void ); /* No Arguments. */ -typedef APIRET (APIENTRY *PFNREXXCLEARMACROSPACE)(void); +typedef APIRET (REXXENTRY *PFNREXXCLEARMACROSPACE)(void); #define REXXCLEARMACROSPACE RexxClearMacroSpace @@ -614,45 +645,45 @@ /*** RexxCreateQueue - Create an External Data Queue */ -APIRET APIENTRY RexxCreateQueue ( +APIRET REXXENTRY RexxCreateQueue ( char *, /* Name of queue created */ size_t, /* Size of buf for ret name */ const char *, /* Requested name for queue */ size_t *); /* Duplicate name flag. */ -typedef APIRET (APIENTRY *PFNREXXCREATEQUEUE)(char *, size_t, const char *, size_t); +typedef APIRET (REXXENTRY *PFNREXXCREATEQUEUE)(char *, size_t, const char *, size_t); /*** RexxDeleteQueue - Delete an External Data Queue */ -APIRET APIENTRY RexxDeleteQueue ( +APIRET REXXENTRY RexxDeleteQueue ( const char * ); /* Name of queue to be deleted */ -typedef APIRET (APIENTRY *PFNREXXDELETEQUEUE)(const char *); +typedef APIRET (REXXENTRY *PFNREXXDELETEQUEUE)(const char *); /*** RexxQueryQueue - Query an External Data Queue for number of */ /*** entries */ -APIRET APIENTRY RexxQueryQueue ( +APIRET REXXENTRY RexxQueryQueue ( const char *, /* Name of queue to query */ size_t *); /* Place to put element count */ -typedef APIRET (APIENTRY *PFNREXXQUERYQUEUE)(const char *, size_t *); +typedef APIRET (REXXENTRY *PFNREXXQUERYQUEUE)(const char *, size_t *); /*** RexxAddQueue - Add an entry to an External Data Queue */ -APIRET APIENTRY RexxAddQueue ( +APIRET REXXENTRY RexxAddQueue ( const char *, /* Name of queue to add to */ PCONSTRXSTRING, /* Data string to add */ size_t); /* Queue type (FIFO|LIFO) */ -typedef APIRET (APIENTRY *PFNREXXADDQUEUE)(const char *, PCONSTRXSTRING, size_t); +typedef APIRET (REXXENTRY *PFNREXXADDQUEUE)(const char *, PCONSTRXSTRING, size_t); #include "rexxplatformapis.h" -APIRET APIENTRY RexxShutDownAPI(void); +APIRET REXXENTRY RexxShutDownAPI(void); -typedef APIRET (APIENTRY *PFNREXXSHUTDOWNAPI)(void); +typedef APIRET (REXXENTRY *PFNREXXSHUTDOWNAPI)(void); #define REXXSHUTDOWNAPI RexxShutDownAPI @@ -662,31 +693,19 @@ /*** RexxAllocateMemory */ -void *APIENTRY RexxAllocateMemory( +void *REXXENTRY RexxAllocateMemory( size_t); /* number of bytes to allocate */ -typedef void *(APIENTRY *PFNREXXALLOCATEMEMORY)(size_t ); +typedef void *(REXXENTRY *PFNREXXALLOCATEMEMORY)(size_t ); /*** RexxFreeMemory */ -APIRET APIENTRY RexxFreeMemory( +APIRET REXXENTRY RexxFreeMemory( void *); /* pointer to the memory returned by */ /* RexxAllocateMemory */ -typedef APIRET (APIENTRY *PFNREXXFREEMEMORY)(void *); +typedef APIRET (REXXENTRY *PFNREXXFREEMEMORY)(void *); -int APIENTRY RexxResolveExit(const char *, REXXPFN *); -APIRET APIENTRY RexxCallFunction ( - const char *, /* Name of function to call */ - size_t, /* Number of arguments */ - PCONSTRXSTRING, /* Array of argument strings */ - int *, /* RC from function called */ - PRXSTRING, /* Storage for returned data */ - const char *); /* Name of active data queue */ - -/*** Uppercase Entry Point Name */ -#define REXXCALLFUNCTION RexxCallFunction - #ifdef __cplusplus } #endif Modified: interpreter-3.x/trunk/kernel/RexxClasses/CoreClasses.orx =================================================================== --- interpreter-3.x/trunk/kernel/RexxClasses/CoreClasses.orx 2008-01-26 21:45:08 UTC (rev 2312) +++ interpreter-3.x/trunk/kernel/RexxClasses/CoreClasses.orx 2008-01-26 22:13:52 UTC (rev 2313) @@ -97,10 +97,6 @@ server_mdict = .table~new server_mdict~put(.methods~server_init, 'INIT') -server_mdict~put(kernel_methods['RUN_PROGRAM'], 'RUN_PROGRAM') -server_mdict~put(kernel_methods['CALL_PROGRAM'], 'CALL_PROGRAM') -server_mdict~put(kernel_methods['CALL_STRING'], 'CALL_STRING') -server_mdict~put(.methods~server_save_result, 'SAVE_RESULT') server~!define_methods(server_mdict) server~!rexxdefined /* Mark as unchangeable */ @@ -401,24 +397,12 @@ raise syntax 93.948 array(1, "Collection") - - - - -::METHOD server_save_result - /* anchor a passed out result */ - expose savedResults - use arg resultObj - savedResults[resultObj] = resultObj - - ::METHOD server_init /* initialize a server */ - expose localenv savedResults + expose localenv .local~objectname = "The Local Directory" -- give the local environment a nicer descriptive name. - savedResults = .table~new .local~setentry('LOCALSERVER', self) /* set system objects in the local environment */ Modified: interpreter-3.x/trunk/kernel/classes/BufferClass.hpp =================================================================== --- interpreter-3.x/trunk/kernel/classes/BufferClass.hpp 2008-01-26 21:45:08 UTC (rev 2312) +++ interpreter-3.x/trunk/kernel/classes/BufferClass.hpp 2008-01-26 22:13:52 UTC (rev 2313) @@ -59,6 +59,7 @@ inline size_t getLength(void) { return this->size; }; inline char *address(void) {return this->data; } inline void copyData(size_t offset, const char *string, size_t length) { memcpy(this->data + offset, string, length); } + inline void copyData(CONSTRXSTRING &r) { copyData(0, r.strptr, r.strlength); } inline void openGap(size_t offset, size_t _size, size_t tailSize) { memmove(address() + offset + _size, address() + offset, tailSize); @@ -84,4 +85,12 @@ }; inline RexxBuffer *new_buffer(size_t s) { return new (s) RexxBuffer; } + inline RexxBuffer *new_buffer(CONSTRXSTRING &r) + { + RexxBuffer *b = new_buffer(r.strlength); + b->copyData(r); + return b; + } + + #endif Modified: interpreter-3.x/trunk/kernel/classes/ClassClass.cpp =================================================================== --- interpreter-3.x/trunk/kernel/classes/ClassClass.cpp 2008-01-26 21:45:08 UTC (rev 2312) +++ interpreter-3.x/trunk/kernel/classes/ClassClass.cpp 2008-01-26 22:13:52 UTC (rev 2313) @@ -176,20 +176,22 @@ /* Function: Compare two class objects as a strict compare (==) */ /******************************************************************************/ { - /* If a non-copied (Primitive) */ - /*behaviour Then we can directly */ - /*call primitive method */ - if (this->behaviour->isPrimitive()) - /* can compare at primitive level */ - return this->equal(other) == TheTrueObject; - else - { - ProtectedObject r; - /* other wise giveuser version a */ - /*chance */ - this->sendMessage(OREF_STRICT_EQUAL, other, r); - return ((RexxObject *)r)->truthValue(Error_Logical_value_method); - } + /* If a non-copied (Primitive) */ + /*behaviour Then we can directly */ + /*call primitive method */ + if (this->behaviour->isPrimitive()) + { + /* can compare at primitive level */ + return this->equal(other) == TheTrueObject; + } + else + { + ProtectedObject r; + /* other wise giveuser version a */ + /*chance */ + this->sendMessage(OREF_STRICT_EQUAL, other, r); + return((RexxObject *)r)->truthValue(Error_Logical_value_method); + } } RexxObject *RexxClass::equal( @@ -198,16 +200,20 @@ /* Function: Compare two classes */ /******************************************************************************/ { - required_arg(other, ONE); /* must have the other argument */ - /* this is direct object equality */ + required_arg(other, ONE); /* must have the other argument */ + /* this is direct object equality */ - /* comparing string/int/numstr to */ - /* string/int/numstr? */ - if ((this == TheStringClass || this == TheIntegerClass || this == TheNumberStringClass) && - (other == (RexxObject *)TheStringClass || other == (RexxObject *)TheIntegerClass || other == (RexxObject *)TheNumberStringClass)) - return TheTrueObject; /* YES, then equal.... */ - else /* other wise, do a direct compare */ - return ((this == other) ? TheTrueObject: TheFalseObject); + /* comparing string/int/numstr to */ + /* string/int/numstr? */ + if ((this == TheStringClass || this == TheIntegerClass || this == TheNumberStringClass) && + (other == (RexxObject *)TheStringClass || other == (RexxObject *)TheIntegerClass || other == (RexxObject *)TheNumberStringClass)) + { + return TheTrueObject; /* YES, then equal.... */ + } + else /* other wise, do a direct compare */ + { + return((this == other) ? TheTrueObject: TheFalseObject); + } } RexxObject *RexxClass::notEqual( @@ -216,16 +222,20 @@ /* Function: Compare two classes */ /******************************************************************************/ { - required_arg(other, ONE); /* must have the other argument */ - /* this is direct object equality */ + required_arg(other, ONE); /* must have the other argument */ + /* this is direct object equality */ - /* comparing string/int/numstr to */ - /* string/int/numstr? */ - if ((this == TheStringClass || this == TheIntegerClass || this == TheNumberStringClass) && - (other == (RexxObject *)TheStringClass || other == (RexxObject *)TheIntegerClass || other == (RexxObject *)TheNumberStringClass)) - return TheFalseObject; /* YES, then equal.... */ - else /* other wise, do a direct compare */ - return ((this != other) ? TheTrueObject: TheFalseObject); + /* comparing string/int/numstr to */ + /* string/int/numstr? */ + if ((this == TheStringClass || this == TheIntegerClass || this == TheNumberStringClass) && + (other == (RexxObject *)TheStringClass || other == (RexxObject *)TheIntegerClass || other == (RexxObject *)TheNumberStringClass)) + { + return TheFalseObject; /* YES, then equal.... */ + } + else /* other wise, do a direct compare */ + { + return((this != other) ? TheTrueObject: TheFalseObject); + } } RexxInteger *RexxClass::queryMixinClass() @@ -268,9 +278,13 @@ /*****************************************************************************/ { if (this->isPrimitiveClass()) /* primitive class? */ - return TheClassClass; /* this is always .class */ + { + return TheClassClass; /* this is always .class */ + } else /* return first member of the list */ - return (RexxClass *)this->metaClass->get(1); + { + return (RexxClass *)this->metaClass->get(1); + } } void RexxClass::setInstanceBehaviour( @@ -333,17 +347,23 @@ /* Function: Add a table of methods to a primitive class behaviour */ /*****************************************************************************/ { - HashLink i; /* table index */ - RexxString * method_name; /* name of an added method */ + /* loop through the list of methods */ + for (HashLink i = newMethods->first(); newMethods->available(i); i = newMethods->next(i)) + { + /* get the method name */ + RexxString *method_name = (RexxString *)newMethods->index(i); + /* add this method to the classes */ + /* class behaviour */ - /* loop through the list of methods */ - for (i = newMethods->first(); newMethods->available(i); i = newMethods->next(i)) { - /* get the method name */ - method_name = (RexxString *)newMethods->index(i); - /* add this method to the classes */ - /* class behaviour */ - this->behaviour->define(method_name, (RexxMethod *)newMethods->value(i)); - } + // if this is the Nil object, that's an override. Make it OREF_NULL. + RexxObject *method = (RexxMethod *)newMethods->value(i); + if (method == TheNilObject) + { + method = OREF_NULL; + } + + this->behaviour->define(method_name, OREF_NULL); + } } RexxString *RexxClass::defaultName() @@ -366,15 +386,17 @@ /* Function: Return the instance behaviour's method dictionary */ /*****************************************************************************/ { - RexxTable *methodTable; /* returned method dictioanry */ - - /* get the method dictionary */ - methodTable = this->instanceBehaviour->getMethodDictionary(); - if (methodTable == OREF_NULL) /* no methods defined yet? */ - return new_table(); /* create a new method table */ - else - /* just copy the method dictionary */ - return (RexxTable *)methodTable->copy(); + /* get the method dictionary */ + RexxTable *methodTable = this->instanceBehaviour->getMethodDictionary(); + if (methodTable == OREF_NULL) /* no methods defined yet? */ + { + return new_table(); /* create a new method table */ + } + else + { + /* just copy the method dictionary */ + return(RexxTable *)methodTable->copy(); + } } RexxTable *RexxClass::getBehaviourDictionary() @@ -382,15 +404,17 @@ /* Function: Return the class behaviour's method dictionary */ /*****************************************************************************/ { - RexxTable *methodTable; /* returned method dictioanry */ - - /* get the method dictionary */ - methodTable = this->behaviour->getMethodDictionary(); - if (methodTable == OREF_NULL) /* no methods defined yet? */ - return new_table(); /* create a new method table */ - else - /* just copy the method dictionary */ - return (RexxTable *)methodTable->copy(); + /* get the method dictionary */ + RexxTable *methodTable = this->behaviour->getMethodDictionary(); + if (methodTable == OREF_NULL) /* no methods defined yet? */ + { + return new_table(); /* create a new method table */ + } + else + { + /* just copy the method dictionary */ + return(RexxTable *)methodTable->copy(); + } } /** @@ -404,110 +428,122 @@ */ void RexxClass::subClassable(bool restricted) { - /* get a copy of the class instance */ - /* behaviour mdict before the merge */ - /* with OBJECT. This unmerged mdict */ - /* is kept in this class's */ - /* class_instance_mdict field. */ - OrefSet(this, this->instanceMethodDictionary, this->getInstanceBehaviourDictionary()); - /* Add OBJECT to the behaviour scope */ - /* table */ - this->instanceBehaviour->addScope(TheObjectClass); - if (this != TheObjectClass) { /* if this isn't the OBJECT class */ - /* Add OBJECT to the behaviour scope */ - /* table */ + /* get a copy of the class instance */ + /* behaviour mdict before the merge */ + /* with OBJECT. This unmerged mdict */ + /* is kept in this class's */ + /* class_instance_mdict field. */ + OrefSet(this, this->instanceMethodDictionary, this->getInstanceBehaviourDictionary()); + /* Add OBJECT to the behaviour scope */ + /* table */ this->instanceBehaviour->addScope(TheObjectClass); - /* and merge this class's instance */ - /* behaviour with that of OBJECT's */ - this->instanceBehaviour->merge(TheObjectBehaviour); - } - /* add self to the scope table */ - this->instanceBehaviour->addScope(this); - /* get a copy of the class behaviour */ - /* mdict before the merge with the */ - /* CLASS instance behaviour. This */ - /* unmerged mdict is kept in the */ - /* class_mdict field */ - OrefSet(this, this->classMethodDictionary, this->getBehaviourDictionary()); - /* The merge of the mdict's is order */ - /* specific. By processing OBJECT */ - /* first then CLASS and then the */ - /* rest of the subclassable classes */ - /* the mdict's will be set up */ - /* correctly. */ - /* In this way merging the CLASS */ - /* behaviour will only be the CLASS */ - /* instance methods when OBJECT is */ - /* processed, but will be CLASS's */ - /* and OBJECT's after CLASS is */ - /* processed */ - this->behaviour->merge(TheClassBehaviour); - /* now add the scope levels to this */ - /* class behaviour */ - /* If this isn't OBJECT put OBJECT */ - /* in first */ - if (this != TheObjectClass) - this->behaviour->addScope(TheObjectClass); - /* if this is OBJECT - merge the */ - /* object instance methods with the */ - /* object class methods */ - else { - this->behaviour->merge(TheObjectBehaviour); - /* and put them into the class mdict */ - /* so all the classes will inherit */ + if (this != TheObjectClass) /* if this isn't the OBJECT class */ + { + /* Add OBJECT to the behaviour scope */ + /* table */ + this->instanceBehaviour->addScope(TheObjectClass); + /* and merge this class's instance */ + /* behaviour with that of OBJECT's */ + this->instanceBehaviour->merge(TheObjectBehaviour); + } + /* add self to the scope table */ + this->instanceBehaviour->addScope(this); + /* get a copy of the class behaviour */ + /* mdict before the merge with the */ + /* CLASS instance behaviour. This */ + /* unmerged mdict is kept in the */ + /* class_mdict field */ OrefSet(this, this->classMethodDictionary, this->getBehaviourDictionary()); - } - /* if this isn't CLASS put CLASS in */ - /* next */ - if (this != TheClassClass) - this->behaviour->addScope(TheClassClass); - this->behaviour->addScope(this); /* put self into the scope table */ - /* That finishes the class behaviour */ - /* initialization. */ - /* Now fill in the state data */ + /* The merge of the mdict's is order */ + /* specific. By processing OBJECT */ + /* first then CLASS and then the */ + /* rest of the subclassable classes */ + /* the mdict's will be set up */ + /* correctly. */ + /* In this way merging the CLASS */ + /* behaviour will only be the CLASS */ + /* instance methods when OBJECT is */ + /* processed, but will be CLASS's */ + /* and OBJECT's after CLASS is */ + /* processed */ + this->behaviour->merge(TheClassBehaviour); + /* now add the scope levels to this */ + /* class behaviour */ + /* If this isn't OBJECT put OBJECT */ + /* in first */ + if (this != TheObjectClass) + { + this->behaviour->addScope(TheObjectClass); + } + /* if this is OBJECT - merge the */ + /* object instance methods with the */ + /* object class methods */ + else + { + this->behaviour->merge(TheObjectBehaviour); + /* and put them into the class mdict */ + /* so all the classes will inherit */ + OrefSet(this, this->classMethodDictionary, this->getBehaviourDictionary()); + } + /* if this isn't CLASS put CLASS in */ + /* next */ + if (this != TheClassClass) + { + this->behaviour->addScope(TheClassClass); + } + this->behaviour->addScope(this); /* put self into the scope table */ + /* That finishes the class behaviour */ + /* initialization. */ + /* Now fill in the state data */ - if (TheObjectClass != this ) { - /* set up the new metaclass list */ - OrefSet(this, this->metaClass, new_array(TheClassClass)); - /* the metaclass mdict list */ - OrefSet(this, this->metaClassMethodDictionary, new_array(TheClassClass->instanceMethodDictionary->copy())); - ... [truncated message content] |
From: <mie...@us...> - 2008-01-26 21:45:10
|
Revision: 2312 http://oorexx.svn.sourceforge.net/oorexx/?rev=2312&view=rev Author: miesfeld Date: 2008-01-26 13:45:08 -0800 (Sat, 26 Jan 2008) Log Message: ----------- Fix for logic error in EditControl getText() Modified Paths: -------------- interpreter-3.x/trunk/platform/windows/oodialog/oovother.c Modified: interpreter-3.x/trunk/platform/windows/oodialog/oovother.c =================================================================== --- interpreter-3.x/trunk/platform/windows/oodialog/oovother.c 2008-01-26 21:13:53 UTC (rev 2311) +++ interpreter-3.x/trunk/platform/windows/oodialog/oovother.c 2008-01-26 21:45:08 UTC (rev 2312) @@ -1211,15 +1211,23 @@ } else { - if ( ++count > retstr->strlength ) + if ( ++count > RXAUTOBUFLEN ) { PVOID p = GlobalAlloc(GMEM_FIXED, count); - if ( ! p ) return GetLastError(); + if ( ! p ) + { + RETVAL(-(LONG)GetLastError()) + } retstr->strptr = (PCHAR)p; } count = GetWindowText(hCtrl, (LPTSTR)retstr->strptr, count); - retstr->strlength = strlen(retstr->strptr); + + retstr->strlength = count; + if ( count == 0 ) + { + retstr->strptr[0] = '\0'; + } } } return 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bi...@us...> - 2008-01-26 21:13:53
|
Revision: 2311 http://oorexx.svn.sourceforge.net/oorexx/?rev=2311&view=rev Author: bigrixx Date: 2008-01-26 13:13:53 -0800 (Sat, 26 Jan 2008) Log Message: ----------- merge of trunk changes Modified Paths: -------------- sandbox/rick/init/Makefile.am sandbox/rick/init/kernel/classes/MutableBufferClass.cpp sandbox/rick/init/kernel/expression/CommonExternalFunctions.cpp sandbox/rick/init/kernel/runtime/RexxActivation.cpp sandbox/rick/init/rexutils/rexxutil.mak sandbox/rick/init/rexutils/rxwinsys.mak sandbox/rick/init/rexutils/windows/rexxutil.cpp sandbox/rick/init/rxregexp/rxregexp.mak Modified: sandbox/rick/init/Makefile.am =================================================================== --- sandbox/rick/init/Makefile.am 2008-01-26 19:44:11 UTC (rev 2310) +++ sandbox/rick/init/Makefile.am 2008-01-26 21:13:53 UTC (rev 2311) @@ -300,7 +300,7 @@ # These error message files are built BEFORE any other target # BUILT_SOURCES = $(errorHeaders) \ - rexx.img @REXXCAT@ + rexx.img @REXXCAT@ ooTest # # Binary targets # @@ -801,6 +801,13 @@ rm -f *.orx # +# This ensures a developer can run the test suite from the build directory +# +ooTest: + cp $(rxregexp_dir)/rxregexp.cls . + cp $(rexutils_dir)/rxftp.cls . + +# # distribution files # EXTRA_DIST = $(messages_dir)/RexxMessageNumbers.xsl \ @@ -869,6 +876,7 @@ rm -fr $(PACKAGE)-*.tar.gz rm -fr $(PACKAGE)-*.zip rm -fr $(top_srcdir)/rpm + rm -f $(top_srcdir)/*.cls install-exec-local: echo $(DESTDIR) is destdir Modified: sandbox/rick/init/kernel/classes/MutableBufferClass.cpp =================================================================== --- sandbox/rick/init/kernel/classes/MutableBufferClass.cpp 2008-01-26 19:44:11 UTC (rev 2310) +++ sandbox/rick/init/kernel/classes/MutableBufferClass.cpp 2008-01-26 21:13:53 UTC (rev 2311) @@ -133,7 +133,9 @@ { bufferLength = l; /* save the length of the buffer */ defaultSize = d; /* store the default buffer size */ - + // NB: As in the default constructor, we clear this before we allocate the + // new buffer in case garbage collection is triggered. + data = OREF_NULL; data = new_buffer(bufferLength); } Modified: sandbox/rick/init/kernel/expression/CommonExternalFunctions.cpp =================================================================== --- sandbox/rick/init/kernel/expression/CommonExternalFunctions.cpp 2008-01-26 19:44:11 UTC (rev 2310) +++ sandbox/rick/init/kernel/expression/CommonExternalFunctions.cpp 2008-01-26 21:13:53 UTC (rev 2311) @@ -56,7 +56,7 @@ proc = name; /* use the defined name */ } /* try to register the function */ - return RexxRegisterFunctionDll(name, module, proc) == 0 ? ooRexxTrue : ooRexxFalse; + return RexxRegisterFunctionDll(name, module, proc) != 0 ? ooRexxTrue : ooRexxFalse; } @@ -71,7 +71,7 @@ rexx_exception(Error_Incorrect_call); } /* try to drop the function */ - return RexxDeregisterFunction(name) == 0 ? ooRexxTrue : ooRexxFalse; + return RexxDeregisterFunction(name) != 0 ? ooRexxTrue : ooRexxFalse; } @@ -86,5 +86,5 @@ rexx_exception(Error_Incorrect_call); } /* try to drop the function */ - return RexxQueryFunction(name) == 0 ? ooRexxTrue : ooRexxFalse; + return RexxQueryFunction(name) != 0 ? ooRexxTrue : ooRexxFalse; } Modified: sandbox/rick/init/kernel/runtime/RexxActivation.cpp =================================================================== --- sandbox/rick/init/kernel/runtime/RexxActivation.cpp 2008-01-26 19:44:11 UTC (rev 2310) +++ sandbox/rick/init/kernel/runtime/RexxActivation.cpp 2008-01-26 21:13:53 UTC (rev 2311) @@ -2125,8 +2125,8 @@ if (RexxQueryFunction(funcname) != 0) /* is the function registered ? */ { - // not located - return false; + // not located + return false; } /* allocate enough memory for all arguments */ Modified: sandbox/rick/init/rexutils/rexxutil.mak =================================================================== --- sandbox/rick/init/rexutils/rexxutil.mak 2008-01-26 19:44:11 UTC (rev 2310) +++ sandbox/rick/init/rexutils/rexxutil.mak 2008-01-26 21:13:53 UTC (rev 2311) @@ -38,7 +38,7 @@ #------------------------ # REXXAPI.MAK make file #------------------------ -all: $(OR_OUTDIR)\rexxutil.dll +all: $(OR_OUTDIR)\rexxutil.dll $(OR_OUTDIR)\rxftp.cls @ECHO . @ECHO All done rexxutil.dll @ECHO . @@ -82,6 +82,15 @@ $(libs_dll) # +# Copy rxftp.cls to the build directory so the test suite can be run directly +# from that location without doing an install. +# +$(OR_OUTDIR)\rxftp.cls : $(OR_ORYXRSRC)\rxftp.cls + @ECHO . + @ECHO Copying $(OR_ORYXRSRC)\rxftp.cls + copy $(OR_ORYXRSRC)\rxftp.cls $(OR_OUTDIR) + +# # *** wrxutil.obj # Modified: sandbox/rick/init/rexutils/rxwinsys.mak =================================================================== --- sandbox/rick/init/rexutils/rxwinsys.mak 2008-01-26 19:44:11 UTC (rev 2310) +++ sandbox/rick/init/rexutils/rxwinsys.mak 2008-01-26 21:13:53 UTC (rev 2311) @@ -36,7 +36,7 @@ #/* */ #/*----------------------------------------------------------------------------*/ # NMAKE-compatible MAKE file for FNTEST* -all: $(OR_OUTDIR)\rxwinsys.dll +all: $(OR_OUTDIR)\rxwinsys.dll $(OR_OUTDIR)\winsystm.cls !include "$(OR_ORYXLSRC)\ORXWIN32.MAK" C=cl @@ -57,3 +57,12 @@ $(OR_LIB)\rexxapi.lib \ -def:$(XPLATFORM)\rxwinsys.def \ -out:$(OR_OUTDIR)\$(@B).dll + +# +# Copy winsystm.cls to the build directory so the test suite can be run directly +# from that location without doing an install. +# +$(OR_OUTDIR)\winsystm.cls : $(XPLATFORM)\winsystm.cls + @ECHO . + @ECHO Copying $(XPLATFORM)\winsystm.cls + copy $(XPLATFORM)\winsystm.cls $(OR_OUTDIR) Modified: sandbox/rick/init/rexutils/windows/rexxutil.cpp =================================================================== --- sandbox/rick/init/rexutils/windows/rexxutil.cpp 2008-01-26 19:44:11 UTC (rev 2310) +++ sandbox/rick/init/rexutils/windows/rexxutil.cpp 2008-01-26 21:13:53 UTC (rev 2311) @@ -947,7 +947,7 @@ char *filename) { size_t len; /* length of filespec */ - size_t LastSlashPos; /* position of last slash */ + int LastSlashPos; /* position of last slash */ char szBuff[MAX_PATH]; /* used to save current dir */ char drv[3]; /* used to change dir */ size_t i=0; @@ -973,7 +973,7 @@ strcpy(string, "..\\*.*"); /* make it a ..\*.* request */ len = strlen(string); /* Get length of full file */ /* spec */ - LastSlashPos = len; /* Get max pos of last '\' */ + LastSlashPos = (int)len; /* Get max pos of last '\' */ /* Step back through string until at begin or at '\' char */ Modified: sandbox/rick/init/rxregexp/rxregexp.mak =================================================================== --- sandbox/rick/init/rxregexp/rxregexp.mak 2008-01-26 19:44:11 UTC (rev 2310) +++ sandbox/rick/init/rxregexp/rxregexp.mak 2008-01-26 21:13:53 UTC (rev 2311) @@ -40,7 +40,7 @@ #------------------------ #all: $(OR_OUTDIR)\rxregexp.dll \ # $(OR_OUTDIR)\rxregexp.cmd -all: $(OR_OUTDIR)\rxregexp.dll +all: $(OR_OUTDIR)\rxregexp.dll $(OR_OUTDIR)\rxregexp.cls @ECHO . @ECHO All done RXREGEXP.DLL @ECHO . @@ -81,7 +81,17 @@ $(OR_OUTDIR)\rexxapi.lib \ $(libs_dll) + # +# Copy rxregexp.cls to the build directory so the test suite can be run +# directly from that location without doing an install. +# +$(OR_OUTDIR)\rxregexp.cls : $(OR_ORYXREGEXP)\rxregexp.cls + @ECHO . + @ECHO Copying $(OR_ORYXREGEXP)\rxregexp.cls + copy $(OR_ORYXREGEXP)\rxregexp.cls $(OR_OUTDIR) + +# # *** .cpp -> .obj rules # $(CPPOBJS): $(@B).cpp This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bi...@us...> - 2008-01-26 19:44:08
|
Revision: 2310 http://oorexx.svn.sourceforge.net/oorexx/?rev=2310&view=rev Author: bigrixx Date: 2008-01-26 11:44:11 -0800 (Sat, 26 Jan 2008) Log Message: ----------- incremental checkin Modified Paths: -------------- sandbox/rick/init/kernel/classes/ClassClass.cpp sandbox/rick/init/kernel/classes/MessageClass.cpp sandbox/rick/init/kernel/classes/ObjectClass.cpp sandbox/rick/init/kernel/runtime/ActivityManager.cpp sandbox/rick/init/kernel/runtime/ActivityManager.hpp sandbox/rick/init/kernel/runtime/InterpreterInstance.cpp sandbox/rick/init/kernel/runtime/RexxActivation.cpp sandbox/rick/init/kernel/runtime/RexxActivity.cpp sandbox/rick/init/kernel/runtime/RexxActivity.hpp sandbox/rick/init/kernel/runtime/RexxBehaviour.cpp sandbox/rick/init/kernel/runtime/RexxStartDispatcher.cpp sandbox/rick/init/kernel/runtime/Setup.cpp Modified: sandbox/rick/init/kernel/classes/ClassClass.cpp =================================================================== --- sandbox/rick/init/kernel/classes/ClassClass.cpp 2008-01-26 00:36:28 UTC (rev 2309) +++ sandbox/rick/init/kernel/classes/ClassClass.cpp 2008-01-26 19:44:11 UTC (rev 2310) @@ -176,20 +176,22 @@ /* Function: Compare two class objects as a strict compare (==) */ /******************************************************************************/ { - /* If a non-copied (Primitive) */ - /*behaviour Then we can directly */ - /*call primitive method */ - if (this->behaviour->isPrimitive()) - /* can compare at primitive level */ - return this->equal(other) == TheTrueObject; - else - { - ProtectedObject r; - /* other wise giveuser version a */ - /*chance */ - this->sendMessage(OREF_STRICT_EQUAL, other, r); - return ((RexxObject *)r)->truthValue(Error_Logical_value_method); - } + /* If a non-copied (Primitive) */ + /*behaviour Then we can directly */ + /*call primitive method */ + if (this->behaviour->isPrimitive()) + { + /* can compare at primitive level */ + return this->equal(other) == TheTrueObject; + } + else + { + ProtectedObject r; + /* other wise giveuser version a */ + /*chance */ + this->sendMessage(OREF_STRICT_EQUAL, other, r); + return((RexxObject *)r)->truthValue(Error_Logical_value_method); + } } RexxObject *RexxClass::equal( @@ -198,16 +200,20 @@ /* Function: Compare two classes */ /******************************************************************************/ { - required_arg(other, ONE); /* must have the other argument */ - /* this is direct object equality */ + required_arg(other, ONE); /* must have the other argument */ + /* this is direct object equality */ - /* comparing string/int/numstr to */ - /* string/int/numstr? */ - if ((this == TheStringClass || this == TheIntegerClass || this == TheNumberStringClass) && - (other == (RexxObject *)TheStringClass || other == (RexxObject *)TheIntegerClass || other == (RexxObject *)TheNumberStringClass)) - return TheTrueObject; /* YES, then equal.... */ - else /* other wise, do a direct compare */ - return ((this == other) ? TheTrueObject: TheFalseObject); + /* comparing string/int/numstr to */ + /* string/int/numstr? */ + if ((this == TheStringClass || this == TheIntegerClass || this == TheNumberStringClass) && + (other == (RexxObject *)TheStringClass || other == (RexxObject *)TheIntegerClass || other == (RexxObject *)TheNumberStringClass)) + { + return TheTrueObject; /* YES, then equal.... */ + } + else /* other wise, do a direct compare */ + { + return((this == other) ? TheTrueObject: TheFalseObject); + } } RexxObject *RexxClass::notEqual( @@ -216,16 +222,20 @@ /* Function: Compare two classes */ /******************************************************************************/ { - required_arg(other, ONE); /* must have the other argument */ - /* this is direct object equality */ + required_arg(other, ONE); /* must have the other argument */ + /* this is direct object equality */ - /* comparing string/int/numstr to */ - /* string/int/numstr? */ - if ((this == TheStringClass || this == TheIntegerClass || this == TheNumberStringClass) && - (other == (RexxObject *)TheStringClass || other == (RexxObject *)TheIntegerClass || other == (RexxObject *)TheNumberStringClass)) - return TheFalseObject; /* YES, then equal.... */ - else /* other wise, do a direct compare */ - return ((this != other) ? TheTrueObject: TheFalseObject); + /* comparing string/int/numstr to */ + /* string/int/numstr? */ + if ((this == TheStringClass || this == TheIntegerClass || this == TheNumberStringClass) && + (other == (RexxObject *)TheStringClass || other == (RexxObject *)TheIntegerClass || other == (RexxObject *)TheNumberStringClass)) + { + return TheFalseObject; /* YES, then equal.... */ + } + else /* other wise, do a direct compare */ + { + return((this != other) ? TheTrueObject: TheFalseObject); + } } RexxInteger *RexxClass::queryMixinClass() @@ -268,9 +278,13 @@ /*****************************************************************************/ { if (this->isPrimitiveClass()) /* primitive class? */ - return TheClassClass; /* this is always .class */ + { + return TheClassClass; /* this is always .class */ + } else /* return first member of the list */ - return (RexxClass *)this->metaClass->get(1); + { + return (RexxClass *)this->metaClass->get(1); + } } void RexxClass::setInstanceBehaviour( @@ -333,17 +347,23 @@ /* Function: Add a table of methods to a primitive class behaviour */ /*****************************************************************************/ { - HashLink i; /* table index */ - RexxString * method_name; /* name of an added method */ + /* loop through the list of methods */ + for (HashLink i = newMethods->first(); newMethods->available(i); i = newMethods->next(i)) + { + /* get the method name */ + RexxString *method_name = (RexxString *)newMethods->index(i); + /* add this method to the classes */ + /* class behaviour */ - /* loop through the list of methods */ - for (i = newMethods->first(); newMethods->available(i); i = newMethods->next(i)) { - /* get the method name */ - method_name = (RexxString *)newMethods->index(i); - /* add this method to the classes */ - /* class behaviour */ - this->behaviour->define(method_name, (RexxMethod *)newMethods->value(i)); - } + // if this is the Nil object, that's an override. Make it OREF_NULL. + RexxObject *method = (RexxMethod *)newMethods->value(i); + if (method == TheNilObject) + { + method = OREF_NULL; + } + + this->behaviour->define(method_name, OREF_NULL); + } } RexxString *RexxClass::defaultName() @@ -366,15 +386,17 @@ /* Function: Return the instance behaviour's method dictionary */ /*****************************************************************************/ { - RexxTable *methodTable; /* returned method dictioanry */ - - /* get the method dictionary */ - methodTable = this->instanceBehaviour->getMethodDictionary(); - if (methodTable == OREF_NULL) /* no methods defined yet? */ - return new_table(); /* create a new method table */ - else - /* just copy the method dictionary */ - return (RexxTable *)methodTable->copy(); + /* get the method dictionary */ + RexxTable *methodTable = this->instanceBehaviour->getMethodDictionary(); + if (methodTable == OREF_NULL) /* no methods defined yet? */ + { + return new_table(); /* create a new method table */ + } + else + { + /* just copy the method dictionary */ + return(RexxTable *)methodTable->copy(); + } } RexxTable *RexxClass::getBehaviourDictionary() @@ -382,15 +404,17 @@ /* Function: Return the class behaviour's method dictionary */ /*****************************************************************************/ { - RexxTable *methodTable; /* returned method dictioanry */ - - /* get the method dictionary */ - methodTable = this->behaviour->getMethodDictionary(); - if (methodTable == OREF_NULL) /* no methods defined yet? */ - return new_table(); /* create a new method table */ - else - /* just copy the method dictionary */ - return (RexxTable *)methodTable->copy(); + /* get the method dictionary */ + RexxTable *methodTable = this->behaviour->getMethodDictionary(); + if (methodTable == OREF_NULL) /* no methods defined yet? */ + { + return new_table(); /* create a new method table */ + } + else + { + /* just copy the method dictionary */ + return(RexxTable *)methodTable->copy(); + } } /** @@ -404,110 +428,122 @@ */ void RexxClass::subClassable(bool restricted) { - /* get a copy of the class instance */ - /* behaviour mdict before the merge */ - /* with OBJECT. This unmerged mdict */ - /* is kept in this class's */ - /* class_instance_mdict field. */ - OrefSet(this, this->instanceMethodDictionary, this->getInstanceBehaviourDictionary()); - /* Add OBJECT to the behaviour scope */ - /* table */ - this->instanceBehaviour->addScope(TheObjectClass); - if (this != TheObjectClass) { /* if this isn't the OBJECT class */ - /* Add OBJECT to the behaviour scope */ - /* table */ + /* get a copy of the class instance */ + /* behaviour mdict before the merge */ + /* with OBJECT. This unmerged mdict */ + /* is kept in this class's */ + /* class_instance_mdict field. */ + OrefSet(this, this->instanceMethodDictionary, this->getInstanceBehaviourDictionary()); + /* Add OBJECT to the behaviour scope */ + /* table */ this->instanceBehaviour->addScope(TheObjectClass); - /* and merge this class's instance */ - /* behaviour with that of OBJECT's */ - this->instanceBehaviour->merge(TheObjectBehaviour); - } - /* add self to the scope table */ - this->instanceBehaviour->addScope(this); - /* get a copy of the class behaviour */ - /* mdict before the merge with the */ - /* CLASS instance behaviour. This */ - /* unmerged mdict is kept in the */ - /* class_mdict field */ - OrefSet(this, this->classMethodDictionary, this->getBehaviourDictionary()); - /* The merge of the mdict's is order */ - /* specific. By processing OBJECT */ - /* first then CLASS and then the */ - /* rest of the subclassable classes */ - /* the mdict's will be set up */ - /* correctly. */ - /* In this way merging the CLASS */ - /* behaviour will only be the CLASS */ - /* instance methods when OBJECT is */ - /* processed, but will be CLASS's */ - /* and OBJECT's after CLASS is */ - /* processed */ - this->behaviour->merge(TheClassBehaviour); - /* now add the scope levels to this */ - /* class behaviour */ - /* If this isn't OBJECT put OBJECT */ - /* in first */ - if (this != TheObjectClass) - this->behaviour->addScope(TheObjectClass); - /* if this is OBJECT - merge the */ - /* object instance methods with the */ - /* object class methods */ - else { - this->behaviour->merge(TheObjectBehaviour); - /* and put them into the class mdict */ - /* so all the classes will inherit */ + if (this != TheObjectClass) /* if this isn't the OBJECT class */ + { + /* Add OBJECT to the behaviour scope */ + /* table */ + this->instanceBehaviour->addScope(TheObjectClass); + /* and merge this class's instance */ + /* behaviour with that of OBJECT's */ + this->instanceBehaviour->merge(TheObjectBehaviour); + } + /* add self to the scope table */ + this->instanceBehaviour->addScope(this); + /* get a copy of the class behaviour */ + /* mdict before the merge with the */ + /* CLASS instance behaviour. This */ + /* unmerged mdict is kept in the */ + /* class_mdict field */ OrefSet(this, this->classMethodDictionary, this->getBehaviourDictionary()); - } - /* if this isn't CLASS put CLASS in */ - /* next */ - if (this != TheClassClass) - this->behaviour->addScope(TheClassClass); - this->behaviour->addScope(this); /* put self into the scope table */ - /* That finishes the class behaviour */ - /* initialization. */ - /* Now fill in the state data */ + /* The merge of the mdict's is order */ + /* specific. By processing OBJECT */ + /* first then CLASS and then the */ + /* rest of the subclassable classes */ + /* the mdict's will be set up */ + /* correctly. */ + /* In this way merging the CLASS */ + /* behaviour will only be the CLASS */ + /* instance methods when OBJECT is */ + /* processed, but will be CLASS's */ + /* and OBJECT's after CLASS is */ + /* processed */ + this->behaviour->merge(TheClassBehaviour); + /* now add the scope levels to this */ + /* class behaviour */ + /* If this isn't OBJECT put OBJECT */ + /* in first */ + if (this != TheObjectClass) + { + this->behaviour->addScope(TheObjectClass); + } + /* if this is OBJECT - merge the */ + /* object instance methods with the */ + /* object class methods */ + else + { + this->behaviour->merge(TheObjectBehaviour); + /* and put them into the class mdict */ + /* so all the classes will inherit */ + OrefSet(this, this->classMethodDictionary, this->getBehaviourDictionary()); + } + /* if this isn't CLASS put CLASS in */ + /* next */ + if (this != TheClassClass) + { + this->behaviour->addScope(TheClassClass); + } + this->behaviour->addScope(this); /* put self into the scope table */ + /* That finishes the class behaviour */ + /* initialization. */ + /* Now fill in the state data */ - if (TheObjectClass != this ) { - /* set up the new metaclass list */ - OrefSet(this, this->metaClass, new_array(TheClassClass)); - /* the metaclass mdict list */ - OrefSet(this, this->metaClassMethodDictionary, new_array(TheClassClass->instanceMethodDictionary->copy())); - /* and the metaclass scopes list */ - OrefSet(this, this->metaClassScopes, (RexxObjectTable *)TheClassClass->behaviour->getScopes()->copy()); - } + if (TheObjectClass != this ) + { + /* set up the new metaclass list */ + OrefSet(this, this->metaClass, new_array(TheClassClass)); + /* the metaclass mdict list */ + OrefSet(this, this->metaClassMethodDictionary, new_array(TheClassClass->instanceMethodDictionary->copy())); + /* and the metaclass scopes list */ + OrefSet(this, this->metaClassScopes, (RexxObjectTable *)TheClassClass->behaviour->getScopes()->copy()); + } - /* The Baseclass for non-mixin classes*/ - /* is self */ - OrefSet(this, this->baseClass, this); - /* The class superclasses list for */ - /* OBJECT is an empty list. */ - OrefSet(this, this->classSuperClasses, new_array((size_t)0)); - /* as is the instance superclasses */ - /* list. */ - OrefSet(this, this->instanceSuperClasses, new_array((size_t)0)); - // create the subclasses list - OrefSet(this, this->subClasses, new_list()); - if (this != TheObjectClass) { /* not .object? */ - /* add object to the list */ - this->classSuperClasses->addLast(TheObjectClass); - /* The instance superclasses for all */ - /* except OBJECT is OBJECT */ - this->instanceSuperClasses->addLast(TheObjectClass); - /* and for OBJECT we need to add all */ - /* the other classes */ - /* except integer and numberstring */ - if (this != TheIntegerClass && this != TheNumberStringClass) - TheObjectClass->addSubClass(this); - } - /* and point the instance behaviour */ - /* back to this class */ - this->instanceBehaviour->setOwningClass(this); - /* and the class behaviour to CLASS */ - this->behaviour->setOwningClass(TheClassClass); - /* these are primitive classes */ - this->classFlags |= PRIMITIVE_CLASS; + /* The Baseclass for non-mixin classes*/ + /* is self */ + OrefSet(this, this->baseClass, this); + /* The class superclasses list for */ + /* OBJECT is an empty list. */ + OrefSet(this, this->classSuperClasses, new_array((size_t)0)); + /* as is the instance superclasses */ + /* list. */ + OrefSet(this, this->instanceSuperClasses, new_array((size_t)0)); + // create the subclasses list + OrefSet(this, this->subClasses, new_list()); + if (this != TheObjectClass) /* not .object? */ + { + /* add object to the list */ + this->classSuperClasses->addLast(TheObjectClass); + /* The instance superclasses for all */ + /* except OBJECT is OBJECT */ + this->instanceSuperClasses->addLast(TheObjectClass); + /* and for OBJECT we need to add all */ + /* the other classes */ + /* except integer and numberstring */ + if (this != TheIntegerClass && this != TheNumberStringClass) + { + TheObjectClass->addSubClass(this); + } + } + /* and point the instance behaviour */ + /* back to this class */ + this->instanceBehaviour->setOwningClass(this); + /* and the class behaviour to CLASS */ + this->behaviour->setOwningClass(TheClassClass); + /* these are primitive classes */ + this->classFlags |= PRIMITIVE_CLASS; - if (this == TheClassClass) /* mark CLASS as a meta class */ - this->setMetaClass(); + if (this == TheClassClass) /* mark CLASS as a meta class */ + { + this->setMetaClass(); + } } RexxObject *RexxClass::defineMethod( @@ -517,47 +553,55 @@ /* Function: Define an instance method on this class object */ /*****************************************************************************/ { - /* check if this is a rexx class */ - if ( this->isRexxDefined()) - /* report as a nomethod condition */ - reportNomethod(lastMessageName(), this); - /* make sure there is at least one */ - /* parameter */ - method_name = REQUIRED_STRING(method_name, ARG_ONE)->upper(); - if ( OREF_NULL == method_object) /* 2nd arg omitted? */ - /* Yes, remove all message with this */ - /* name from our instanceMdict */ - /* (method lookup) */ - /* done by defining the method */ - /* to be .nil at this class level, so*/ - /* when message lookup is attempted */ - /* we get .nil, telling us not found */ - method_object = (RexxMethod *)TheNilObject; - /* not a method type already? */ - /* and not TheNilObject */ - else if (TheNilObject != method_object && !isOfClass(Method, method_object)) - /* make one from a string */ - method_object = TheMethodClass->newRexxCode(method_name, method_object, IntegerTwo); - if (TheNilObject != method_object) { /* if the method is not TheNilObject */ - /* set the scope of the method to self*/ - method_object = method_object->newScope(this); - /* Installing UNINIT? */ - if (method_name->strCompare(CHAR_UNINIT)) { - this->setHasUninitDefined(); /* and turn on uninit if so */ + /* check if this is a rexx class */ + if ( this->isRexxDefined()) + { + /* report as a nomethod condition */ + reportNomethod(lastMessageName(), this); } - } + /* make sure there is at least one */ + /* parameter */ + method_name = REQUIRED_STRING(method_name, ARG_ONE)->upper(); + if ( OREF_NULL == method_object) /* 2nd arg omitted? */ + { + /* Yes, remove all message with this */ + /* name from our instanceMdict */ + /* (method lookup) */ + /* done by defining the method */ + /* to be .nil at this class level, so*/ + /* when message lookup is attempted */ + /* we get .nil, telling us not found */ + method_object = (RexxMethod *)TheNilObject; + } + /* not a method type already? */ + /* and not TheNilObject */ + else if (TheNilObject != method_object && !isOfClass(Method, method_object)) + { + /* make one from a string */ + method_object = TheMethodClass->newRexxCode(method_name, method_object, IntegerTwo); + } + if (TheNilObject != method_object) /* if the method is not TheNilObject */ + { + /* set the scope of the method to self*/ + method_object = method_object->newScope(this); + /* Installing UNINIT? */ + if (method_name->strCompare(CHAR_UNINIT)) + { + this->setHasUninitDefined(); /* and turn on uninit if so */ + } + } - /* make a copy of the instance */ - /* behaviour so any previous objects */ - /* aren't enhanced */ - OrefSet(this, this->instanceBehaviour, (RexxBehaviour *)this->instanceBehaviour->copy()); - /* add method to the instance mdict */ - this->instanceMethodDictionary->stringPut((RexxObject *)method_object, method_name); - /* any subclasses that we have need */ - /* to redo their instance behaviour */ - /* this also updates our own */ - this->updateInstanceSubClasses(); /* behaviour table */ - return OREF_NULL; /* returns nothing */ + /* make a copy of the instance */ + /* behaviour so any previous objects */ + /* aren't enhanced */ + OrefSet(this, this->instanceBehaviour, (RexxBehaviour *)this->instanceBehaviour->copy()); + /* add method to the instance mdict */ + this->instanceMethodDictionary->stringPut((RexxObject *)method_object, method_name); + /* any subclasses that we have need */ + /* to redo their instance behaviour */ + /* this also updates our own */ + this->updateInstanceSubClasses(); /* behaviour table */ + return OREF_NULL; /* returns nothing */ } RexxObject *RexxClass::defineMethods( @@ -566,32 +610,34 @@ /* Function: Define instance methods on this class object */ /*****************************************************************************/ { - HashLink i; /* loop counter */ - RexxString * index; /* method name */ - RexxMethod * newMethod; /* new method to process */ - /* loop thru the methods setting the */ - /* method scopes to SELF and then */ - /* adding them to SELF's instance */ - /* mdict */ - for (i = newMethods->first(); (index = (RexxString *)newMethods->index(i)) != OREF_NULL; i = newMethods->next(i)) { - /* get the method */ - newMethod = (RexxMethod *)newMethods->value(i); - if (isOfClass(Method, newMethod)) /* if this is a method object */ - newMethod->setScope(this); /* change the scope */ - /* add method to the instance mdict */ - this->instanceMethodDictionary->stringPut(newMethod, index); - /* Installing UNINIT? */ - if (index->strCompare(CHAR_UNINIT)) { - this->setHasUninitDefined(); /* and turn on uninit if so */ + RexxString * index; /* method name */ + /* loop thru the methods setting the */ + /* method scopes to SELF and then */ + /* adding them to SELF's instance */ + /* mdict */ + for (HashLink i = newMethods->first(); (index = (RexxString *)newMethods->index(i)) != OREF_NULL; i = newMethods->next(i)) + { + /* get the method */ + RexxMethod *newMethod = (RexxMethod *)newMethods->value(i); + if (isOfClass(Method, newMethod)) /* if this is a method object */ + { + newMethod->setScope(this); /* change the scope */ + } + /* add method to the instance mdict */ + this->instanceMethodDictionary->stringPut(newMethod, index); + /* Installing UNINIT? */ + if (index->strCompare(CHAR_UNINIT)) + { + this->setHasUninitDefined(); /* and turn on uninit if so */ + } } - } - /* create the instance behaviour from */ - /* the instance superclass list */ - this->instanceBehaviour->setMethodDictionary(OREF_NULL); - this->instanceBehaviour->setScopes(OREF_NULL); - this->createInstanceBehaviour(this->instanceBehaviour); + /* create the instance behaviour from */ + /* the instance superclass list */ + this->instanceBehaviour->setMethodDictionary(OREF_NULL); + this->instanceBehaviour->setScopes(OREF_NULL); + this->createInstanceBehaviour(this->instanceBehaviour); - return OREF_NULL; /* returns nothing */ + return OREF_NULL; /* returns nothing */ } RexxObject *RexxClass::deleteMethod( @@ -600,22 +646,26 @@ /* Function: Delete an instance method on this class object */ /*****************************************************************************/ { - if (this->isRexxDefined()) /* check if this is a rexx class */ - /* report as a nomethod condition */ - reportNomethod(lastMessageName(), this); - /* and that it can be a string */ - method_name = REQUIRED_STRING(method_name, ARG_ONE)->upper(); - /* make a copy of the instance */ - /* behaviour so any previous objects */ - /* aren't enhanced */ - OrefSet(this, this->instanceBehaviour, (RexxBehaviour *)this->instanceBehaviour->copy()); - /* if there is a method to remove */ - /* from the instance mdict */ - /* remove it */ - if (OREF_NULL != this->instanceMethodDictionary->remove(method_name)) - /* and update our instance behaviour */ - this->updateInstanceSubClasses(); /* along with our subclasses */ - return OREF_NULL; /* returns nothing */ + if (this->isRexxDefined()) /* check if this is a rexx class */ + { + /* report as a nomethod condition */ + reportNomethod(lastMessageName(), this); + } + /* and that it can be a string */ + method_name = REQUIRED_STRING(method_name, ARG_ONE)->upper(); + /* make a copy of the instance */ + /* behaviour so any previous objects */ + /* aren't enhanced */ + OrefSet(this, this->instanceBehaviour, (RexxBehaviour *)this->instanceBehaviour->copy()); + /* if there is a method to remove */ + /* from the instance mdict */ + /* remove it */ + if (OREF_NULL != this->instanceMethodDictionary->remove(method_name)) + { + /* and update our instance behaviour */ + this->updateInstanceSubClasses(); /* along with our subclasses */ + } + return OREF_NULL; /* returns nothing */ } RexxMethod *RexxClass::method( @@ -624,14 +674,16 @@ /* Function: Return the method object for the method name */ /*****************************************************************************/ { - RexxMethod * method_object; /* mdict value for the method name */ - /* make sure we have a proper name */ - method_name = REQUIRED_STRING(method_name, ARG_ONE)->upper(); - /* check if it is in the mdict */ - if ( OREF_NULL == (method_object = (RexxMethod *)this->instanceBehaviour->getMethodDictionary()->stringGet(method_name))) - /* if not return an error */ - reportException(Error_No_method_name, this, method_name); - return method_object; /* if it was - return the value */ + /* make sure we have a proper name */ + method_name = REQUIRED_STRING(method_name, ARG_ONE)->upper(); + RexxMethod *method_object = (RexxMethod *)this->instanceBehaviour->getMethodDictionary()->stringGet(method_name); + /* check if it is in the mdict */ + if ( OREF_NULL == method_object) + { + /* if not return an error */ + reportException(Error_No_method_name, this, method_name); + } + return method_object; /* if it was - return the value */ } RexxSupplier *RexxClass::methods( @@ -646,28 +698,32 @@ /* return just the methods introduced at that class scope */ /*****************************************************************************/ { - /* if no parameter specified */ - /* return my behaviour mdict as a */ - /* supplier object */ - if (class_object == OREF_NULL) - return this->instanceBehaviour->getMethodDictionary()->supplier(); - /* if TheNilObject specified */ - /* return my instance mdict as a */ - /* supplier object */ - if (class_object == TheNilObject) - return this->instanceMethodDictionary->supplier(); - /* if not one of the above */ - /* check if it is a superclass */ - if (this->behaviour->checkScope(class_object)) - { - /* let the class specified return */ - /* it's own methods */ - ProtectedObject r; - class_object->sendMessage(OREF_METHODS, TheNilObject, r); - return (RexxSupplier *)(RexxObject *)r; - } - /* or just return a null supplier */ - return (RexxSupplier *)TheNullArray->supplier(); + /* if no parameter specified */ + /* return my behaviour mdict as a */ + /* supplier object */ + if (class_object == OREF_NULL) + { + return this->instanceBehaviour->getMethodDictionary()->supplier(); + } + /* if TheNilObject specified */ + /* return my instance mdict as a */ + /* supplier object */ + if (class_object == TheNilObject) + { + return this->instanceMethodDictionary->supplier(); + } + /* if not one of the above */ + /* check if it is a superclass */ + if (this->behaviour->checkScope(class_object)) + { + /* let the class specified return */ + /* it's own methods */ + ProtectedObject r; + class_object->sendMessage(OREF_METHODS, TheNilObject, r); + return(RexxSupplier *)(RexxObject *)r; + } + /* or just return a null supplier */ + return(RexxSupplier *)TheNullArray->supplier(); } void RexxClass::updateSubClasses() @@ -696,7 +752,8 @@ ProtectedObject p(subClassList); /* loop thru the subclass doing the */ /* same for each of them */ - for (index = 1; index <= subClassList->size(); index++) { + for (index = 1; index <= subClassList->size(); index++) + { /* get the next subclass */ /* and recursively update them */ ((RexxClass *)subClassList->get(index))->updateSubClasses(); @@ -708,18 +765,17 @@ /* Function: Update my instance behaviour and have the subclasses do the same */ /******************************************************************************/ { - size_t index; /* working index */ - RexxArray *subClassList; /* array of class subclasses */ /* create the instance behaviour from*/ /* the instance superclass list */ this->instanceBehaviour->setMethodDictionary(OREF_NULL); this->instanceBehaviour->setScopes(OREF_NULL); this->createInstanceBehaviour(this->instanceBehaviour); - subClassList = this->getSubClasses(); /* get the subclasses list */ + RexxArray *subClassList = this->getSubClasses(); /* get the subclasses list */ ProtectedObject p(subClassList); /* loop thru the subclass doing the */ /* same for each of them */ - for (index = 1; index <= subClassList->size(); index++) { + for (size_t index = 1; index <= subClassList->size(); index++) + { /* get the next subclass */ /* recursively update these */ ((RexxClass *)subClassList->get(index))->updateInstanceSubClasses(); @@ -733,67 +789,75 @@ /* class behaviour mdict and scopes table */ /*****************************************************************************/ { - RexxClass * superclass; /* superclass being called */ - HashLink index; /* index into list */ - RexxClass * metaclass; /* metaclass to use */ + RexxClass * superclass; /* superclass being called */ + RexxClass * metaclass; /* metaclass to use */ - /* Call each of the superclasses in */ - /* this superclass list starting from*/ - /* the last to the first */ - for (index = this->classSuperClasses->size(); index > 0; index--) { - /* get the next superclass */ - superclass = (RexxClass *)this->classSuperClasses->get(index); - /* if there is a superclass and */ - /* it hasn't been added into this */ - /* behaviour yet, call and have it */ - /* add itself */ - if (superclass != TheNilObject && !target_class_behaviour->checkScope(superclass)) - superclass->createClassBehaviour(target_class_behaviour); - } - /* If this class mdict has not been */ - /* merged into this target behaviour */ - if (!target_class_behaviour->checkScope(this)) { - if (TheObjectClass != this) { /* if this isn't OBJECT */ - /* go through each of the metaclasses*/ - /* in list to see which one's have */ - /* not been added yet */ - for (index = this->metaClass->size(); index > 0; index--) { - metaclass = (RexxClass *)this->metaClass->get(index); - /* add which ever metaclasses have */ - /* not been added yet */ - if (metaclass != TheNilObject && !target_class_behaviour->checkScope(metaclass)) { - /* merge in the meta class mdict */ - target_class_behaviour->methodDictionaryMerge(metaclass->instanceBehaviour->getMethodDictionary()); - // now we need to merge in the scopes. For each metaclass, starting - // from the bottom of the hierarchy down, merge in each of the scope - // values. - RexxArray *addedScopes = metaclass->behaviour->getScopes()->allAt(TheNilObject); - ProtectedObject p(addedScopes); - size_t i; + /* Call each of the superclasses in */ + /* this superclass list starting from*/ + /* the last to the first */ + for (HashLink index = this->classSuperClasses->size(); index > 0; index--) + { + /* get the next superclass */ + superclass = (RexxClass *)this->classSuperClasses->get(index); + /* if there is a superclass and */ + /* it hasn't been added into this */ + /* behaviour yet, call and have it */ + /* add itself */ + if (superclass != TheNilObject && !target_class_behaviour->checkScope(superclass)) + { + superclass->createClassBehaviour(target_class_behaviour); + } + } + /* If this class mdict has not been */ + /* merged into this target behaviour */ + if (!target_class_behaviour->checkScope(this)) + { + if (TheObjectClass != this) /* if this isn't OBJECT */ + { + /* go through each of the metaclasses*/ + /* in list to see which one's have */ + /* not been added yet */ + for (size_t index = this->metaClass->size(); index > 0; index--) + { + metaclass = (RexxClass *)this->metaClass->get(index); + /* add which ever metaclasses have */ + /* not been added yet */ + if (metaclass != TheNilObject && !target_class_behaviour->checkScope(metaclass)) + { + /* merge in the meta class mdict */ + target_class_behaviour->methodDictionaryMerge(metaclass->instanceBehaviour->getMethodDictionary()); + // now we need to merge in the scopes. For each metaclass, starting + // from the bottom of the hierarchy down, merge in each of the scope + // values. + RexxArray *addedScopes = metaclass->behaviour->getScopes()->allAt(TheNilObject); + ProtectedObject p(addedScopes); - // these need to be processed in reverse order - for (i = addedScopes->size(); i > 0; i--) - { - RexxClass *scope = (RexxClass *)addedScopes->get(i); - target_class_behaviour->mergeScope(scope); - } + // these need to be processed in reverse order + for (size_t i = addedScopes->size(); i > 0; i--) + { + RexxClass *scope = (RexxClass *)addedScopes->get(i); + target_class_behaviour->mergeScope(scope); + } + } + } } - } + /* only merge the mdict for CLASS */ + /* if this is a capable of being a */ + /* metaclass */ + if ((this != TheClassClass) || (this == TheClassClass && this->isMetaClass())) + { + /* Merge this class mdict with the */ + /* target behaviour class mdict */ + target_class_behaviour->methodDictionaryMerge(this->classMethodDictionary); + } + /* And update the target behaviour */ + /* scopes table with this class */ + if (this != TheClassClass && !target_class_behaviour->checkScope(this)) + { + target_class_behaviour->addScope(this); + } } - /* only merge the mdict for CLASS */ - /* if this is a capable of being a */ - /* metaclass */ - if ((this != TheClassClass) || (this == TheClassClass && this->isMetaClass())) { - /* Merge this class mdict with the */ - /* target behaviour class mdict */ - target_class_behaviour->methodDictionaryMerge(this->classMethodDictionary); - } - /* And update the target behaviour */ - /* scopes table with this class */ - if (this != TheClassClass && !target_class_behaviour->checkScope(this)) - target_class_behaviour->addScope(this); - } } @@ -805,31 +869,33 @@ /* instance behaviour mdict and scopes table */ /*****************************************************************************/ { - RexxClass * superclass; /* superclass being called */ - HashLink index; /* index into list */ - /* Call each of the superclasses in */ - /* this superclass list starting from*/ - /* the last going to the first */ - for (index = this->instanceSuperClasses->size(); index > 0; index--) { - /* get the next super class */ - superclass = (RexxClass *)this->instanceSuperClasses->get(index); - /* if there is a superclass and */ - /* it hasn't been added into this */ - /* behaviour yet, call and have it */ - /* add itself */ - if (superclass != TheNilObject && !target_instance_behaviour->checkScope(superclass)) - superclass->createInstanceBehaviour(target_instance_behaviour); - } - /* If this class mdict has not been */ - /* merged into this target behaviour */ - if (!target_instance_behaviour->checkScope(this)) { - /* Merge this class mdict with the */ - /* target behaviour class mdict */ - target_instance_behaviour->methodDictionaryMerge(this->instanceMethodDictionary); - /* And update the target behaviour */ - /* scopes table with this class */ - target_instance_behaviour->addScope(this); - } + /* Call each of the superclasses in */ + /* this superclass list starting from*/ + /* the last going to the first */ + for (HashLink index = this->instanceSuperClasses->size(); index > 0; index--) + { + /* get the next super class */ + RexxClass *superclass = (RexxClass *)this->instanceSuperClasses->get(index); + /* if there is a superclass and */ + /* it hasn't been added into this */ + /* behaviour yet, call and have it */ + /* add itself */ + if (superclass != TheNilObject && !target_instance_behaviour->checkScope(superclass)) + { + superclass->createInstanceBehaviour(target_instance_behaviour); + } + } + /* If this class mdict has not been */ + /* merged into this target behaviour */ + if (!target_instance_behaviour->checkScope(this)) + { + /* Merge this class mdict with the */ + /* target behaviour class mdict */ + target_instance_behaviour->methodDictionaryMerge(this->instanceMethodDictionary); + /* And update the target behaviour */ + /* scopes table with this class */ + target_instance_behaviour->addScope(this); + } } void RexxClass::methodDictionaryMerge( @@ -842,26 +908,26 @@ /* mdict methods prior to the target methods */ /*****************************************************************************/ { - - RexxMethod *method_instance; /* method to be added */ - RexxString *method_name; /* method name to be added */ - HashLink i; /* table index for traversal */ - - if (source_mdict == OREF_NULL) /* check for a source mdict */ - return; /* there isn't anything to do */ - /* just loop through the entries */ - for (i = source_mdict->first(); source_mdict->available(i); i = source_mdict->next(i)) { - /* get the method name */ - method_name = REQUEST_STRING(source_mdict->index(i)); - /* get the method */ - method_instance = (RexxMethod *)source_mdict->value(i); - /* add the method to the target mdict */ - target_mdict->stringAdd(method_instance, method_name); - /* check if the method that was added */ - /* is the uninit method */ - if ( method_name->strCompare(CHAR_UNINIT)) - this->setHasUninitDefined(); /* and turn on uninit if so */ - } + if (source_mdict == OREF_NULL) /* check for a source mdict */ + { + return; /* there isn't anything to do */ + } + /* just loop through the entries */ + for (HashLink i = source_mdict->first(); source_mdict->available(i); i = source_mdict->next(i)) + { + /* get the method name */ + RexxString *method_name = REQUEST_STRING(source_mdict->index(i)); + /* get the method */ + RexxMethod *method_instance = (RexxMethod *)source_mdict->value(i); + /* add the method to the target mdict */ + target_mdict->stringAdd(method_instance, method_name); + /* check if the method that was added */ + /* is the uninit method */ + if ( method_name->strCompare(CHAR_UNINIT)) + { + this->setHasUninitDefined(); /* and turn on uninit if so */ + } + } } RexxTable *RexxClass::methodDictionaryCreate( @@ -874,42 +940,40 @@ /* may need conversion into method objects and given a scope. */ /*****************************************************************************/ { - RexxTable *newDictionary; /* returned merged mdict */ - RexxMethod *newMethod; /* method to be added */ - RexxString *method_name; /* method name to be added */ - RexxSupplier *supplier; /* working supplier object */ - - newDictionary = new_table(); /* get a new table for this */ - ProtectedObject p(newDictionary); - /* loop thru the supplier object */ - /* obtained from the source mdict */ - ProtectedObject p2; - sourceCollection->sendMessage(OREF_SUPPLIERSYM, p2); - supplier = (RexxSupplier *)(RexxObject *)p2; - for (; supplier->available() == TheTrueObject; supplier->next()) - { - /* get the method name (uppercased) */ - method_name = REQUEST_STRING(supplier->index())->upper(); - /* get the method */ - newMethod = (RexxMethod *)supplier->value(); - /* if the method is not TheNilObject */ - if (newMethod != (RexxMethod *)TheNilObject) { - /* and it isn't a primitive method */ - if (!isOfClass(Method, newMethod)) { /* object */ - /* make it into a method object */ - newMethod = TheMethodClass->newRexxCode(method_name, newMethod, IntegerOne); - newMethod->setScope(scope); /* and set the scope to the given */ - } - else { - /* if it is a primitive method object */ - /* let the newscope method copy it */ - newMethod = newMethod->newScope(scope); - } + RexxTable *newDictionary = new_table(); /* get a new table for this */ + ProtectedObject p(newDictionary); + /* loop thru the supplier object */ + /* obtained from the source mdict */ + ProtectedObject p2; + sourceCollection->sendMessage(OREF_SUPPLIERSYM, p2); + RexxSupplier *supplier = (RexxSupplier *)(RexxObject *)p2; + for (; supplier->available() == TheTrueObject; supplier->next()) + { + /* get the method name (uppercased) */ + RexxString *method_name = REQUEST_STRING(supplier->index())->upper(); + /* get the method */ + RexxMethod *newMethod = (RexxMethod *)supplier->value(); + /* if the method is not TheNilObject */ + if (newMethod != (RexxMethod *)TheNilObject) + { + /* and it isn't a primitive method */ + if (!isOfClass(Method, newMethod)) /* object */ + { + /* make it into a method object */ + newMethod = TheMethodClass->newRexxCode(method_name, newMethod, IntegerOne); + newMethod->setScope(scope); /* and set the scope to the given */ + } + else + { + /* if it is a primitive method object */ + /* let the newscope method copy it */ + newMethod = newMethod->newScope(scope); + } + } + /* add the method to the target mdict */ + newDictionary->stringAdd(newMethod, method_name); } - /* add the method to the target mdict */ - newDictionary->stringAdd(newMethod, method_name); - } - return newDictionary; /* and return the new version */ + return newDictionary; /* and return the new version */ } @@ -922,83 +986,98 @@ /* or the specified position (parameter two). */ /*****************************************************************************/ { - HashLink class_index; /* index for class superclasses list */ - HashLink instance_index; /* index for instance superclasses */ - /* make sure this isn't a rexx */ - if (this->isRexxDefined()) /* defined class being changed */ - /* report as a nomethod condition */ - reportNomethod(lastMessageName(), this); - required_arg(mixin_class, ONE); /* make sure it was passed in */ + /* make sure this isn't a rexx */ + if (this->isRexxDefined()) /* defined class being changed */ + { + /* report as a nomethod condition */ + reportNomethod(lastMessageName(), this); + } + required_arg(mixin_class, ONE); /* make sure it was passed in */ - /* check the mixin class is really a */ - /* good class for this */ - if (!mixin_class->isInstanceOf(TheClassClass) || !mixin_class->isMixinClass()) - /* if it isn't raise an error */ - reportException(Error_Execution_mixinclass, mixin_class); + /* check the mixin class is really a */ + /* good class for this */ + if (!mixin_class->isInstanceOf(TheClassClass) || !mixin_class->isMixinClass()) + { + /* if it isn't raise an error */ + reportException(Error_Execution_mixinclass, mixin_class); + } - /* if the mixin class is also the */ - if (this == mixin_class ) /* reciever class */ - /* raise an error */ - reportException(Error_Execution_recursive_inherit, this, mixin_class); - /* check that the mixin class is not */ - /* a superclass of the reciever */ - if (this->behaviour->checkScope(mixin_class)) - /* if it is raise an error */ - reportException(Error_Execution_recursive_inherit, this, mixin_class); - /* check if the reciever class is a */ - /* superclass of the mixin class */ - if (mixin_class->behaviour->checkScope(this)) - /* if it is it's an error */ - reportException(Error_Execution_recursive_inherit, this, mixin_class); + /* if the mixin class is also the */ + if (this == mixin_class ) /* reciever class */ + { + /* raise an error */ + reportException(Error_Execution_recursive_inherit, th... [truncated message content] |
From: <bi...@us...> - 2008-01-26 00:36:24
|
Revision: 2309 http://oorexx.svn.sourceforge.net/oorexx/?rev=2309&view=rev Author: bigrixx Date: 2008-01-25 16:36:28 -0800 (Fri, 25 Jan 2008) Log Message: ----------- incremental checkin Modified Paths: -------------- sandbox/rick/init/kernel/platform/windows/RexxMain.cpp sandbox/rick/init/kernel/runtime/ActivityDispatcher.cpp sandbox/rick/init/kernel/runtime/ActivityManager.cpp sandbox/rick/init/kernel/runtime/Interpreter.cpp sandbox/rick/init/kernel/runtime/Interpreter.hpp sandbox/rick/init/kernel/runtime/InterpreterInstance.hpp sandbox/rick/init/kernel/runtime/RexxActivation.cpp sandbox/rick/init/kernel/runtime/RexxStartup.cpp sandbox/rick/init/kernel/runtime/Setup.cpp Modified: sandbox/rick/init/kernel/platform/windows/RexxMain.cpp =================================================================== --- sandbox/rick/init/kernel/platform/windows/RexxMain.cpp 2008-01-25 20:53:44 UTC (rev 2308) +++ sandbox/rick/init/kernel/platform/windows/RexxMain.cpp 2008-01-26 00:36:28 UTC (rev 2309) @@ -104,9 +104,9 @@ void REXXENTRY WinEnterKernel() { - // get an instance and the current activity + // Get an instance. This also gives the root activity of the instance + // the kernel lock. InterpreterInstance *instance = Interpreter::createInterpreterInstance(); - instance->enterOnCurrentThread(); } void REXXENTRY WinLeaveKernel() Modified: sandbox/rick/init/kernel/runtime/ActivityDispatcher.cpp =================================================================== --- sandbox/rick/init/kernel/runtime/ActivityDispatcher.cpp 2008-01-25 20:53:44 UTC (rev 2308) +++ sandbox/rick/init/kernel/runtime/ActivityDispatcher.cpp 2008-01-26 00:36:28 UTC (rev 2309) @@ -88,15 +88,9 @@ */ void ActivityDispatcher::invoke() { - // get an instance and the current activity - InterpreterInstance *instance = Interpreter::createInterpreterInstance(exits, defaultEnvironment); - activity = instance->enterOnCurrentThread(); + // this creates a new instance to run under, with an active activity + InstanceBlock instance(exits, defaultEnvironment); // go run the instance on the current activity - activity->run(*this); - - activity->exitCurrentThread(); - activity = OREF_NULL; - // terminate the instance - instance->terminate(); + instance.activity->run(*this); } Modified: sandbox/rick/init/kernel/runtime/ActivityManager.cpp =================================================================== --- sandbox/rick/init/kernel/runtime/ActivityManager.cpp 2008-01-25 20:53:44 UTC (rev 2308) +++ sandbox/rick/init/kernel/runtime/ActivityManager.cpp 2008-01-26 00:36:28 UTC (rev 2309) @@ -854,12 +854,13 @@ // not make sense called this way. if (activity == OREF_NULL) { - // get an instance and the current activity + // Get an instance. This also gives the root activity of the instance + // the kernel lock. instance = Interpreter::createInterpreterInstance(); - activity = instance->enterOnCurrentThread(); + activity = instance->getRootActivity(); } - self = (RexxNativeActivation *)ActivityManager::currentActivity->getTopStackFrame(); + self = (RexxNativeActivation *)activity->getTopStackFrame(); } Modified: sandbox/rick/init/kernel/runtime/Interpreter.cpp =================================================================== --- sandbox/rick/init/kernel/runtime/Interpreter.cpp 2008-01-25 20:53:44 UTC (rev 2308) +++ sandbox/rick/init/kernel/runtime/Interpreter.cpp 2008-01-26 00:36:28 UTC (rev 2309) @@ -53,6 +53,7 @@ #include "InterpreterInstance.hpp" #include "DirectoryClass.hpp" #include "ProtectedObject.hpp" +#include "RexxInternalApis.h" // global resource lock @@ -99,6 +100,21 @@ createLocks(); ActivityManager::createLocks(); RexxMemory::createLocks(); + + // This is unconditional...it will fail if already loaded. + if (RexxRegisterFunctionDll("SYSLOADFUNCS", "REXXUTIL", "SysLoadFuncs") == 0) + { + /* default return code buffer */ + char default_return_buffer[DEFRXSTRING]; + RXSTRING funcresult; + int functionrc; /* Return code from function */ + + /* first registration? */ + /* set up an result RXSTRING */ + MAKERXSTRING(funcresult, default_return_buffer, sizeof(default_return_buffer)); + /* call the function loader */ + RexxCallFunction("SYSLOADFUNCS", 0, (PCONSTRXSTRING)NULL, &functionrc, &funcresult, ""); + } } void Interpreter::processShutdown() @@ -135,8 +151,9 @@ // if we have a local server created already, don't recurse. if (localServer == OREF_NULL) { - InterpreterInstance *instance = Interpreter::createInterpreterInstance(); - RexxActivity *activity = instance->enterOnCurrentThread(); + // Get an instance. This also gives the root activity of the instance + // the kernel lock. + InstanceBlock instance; /* get the local environment */ /* get the server class */ RexxObject *server_class = env_find(new_string("!SERVER")); @@ -150,10 +167,6 @@ server_class->messageSend(OREF_NEW, 0, OREF_NULL, result); localServer = (RexxObject *)result; } - - activity->exitCurrentThread(); - // terminate the instance - instance->terminate(); } } // we're live now @@ -293,3 +306,45 @@ instance->haltAllActivities(); } } + + +/** + * Manage a context where a new interpreter instance is created + * for the purposes of acquiring an activity, and the activity + * is released and the instance is terminated upon leaving the + * block. + */ +InstanceBlock::InstanceBlock() +{ + // Get an instance. This also gives the root activity of the instance + // the kernel lock. + instance = Interpreter::createInterpreterInstance(); + activity = instance->getRootActivity(); +} + + +/** + * Manage a context where a new interpreter instance is created + * for the purposes of acquiring an activity, and the activity + * is released and the instance is terminated upon leaving the + * block. + */ +InstanceBlock::InstanceBlock(PRXSYSEXIT exits, const char *defaultEnvironment) +{ + // Get an instance. This also gives the root activity of the instance + // the kernel lock. + instance = Interpreter::createInterpreterInstance(exits, defaultEnvironment); + activity = instance->getRootActivity(); +} + + +/** + * Release the kernal access and cleanup when the context block + * goes out of scope. + */ +InstanceBlock::~InstanceBlock() +{ + activity->exitCurrentThread(); + // terminate the instance + instance->terminate(); +} Modified: sandbox/rick/init/kernel/runtime/Interpreter.hpp =================================================================== --- sandbox/rick/init/kernel/runtime/Interpreter.hpp 2008-01-25 20:53:44 UTC (rev 2308) +++ sandbox/rick/init/kernel/runtime/Interpreter.hpp 2008-01-26 00:36:28 UTC (rev 2309) @@ -165,4 +165,17 @@ }; + +class InstanceBlock +{ +public: + InstanceBlock(); + InstanceBlock(PRXSYSEXIT exits, const char *defaultEnvironment); + ~InstanceBlock(); + + RexxActivity *activity; // our current activity + InterpreterInstance *instance; // potential interpreter instance +}; + + #endif Modified: sandbox/rick/init/kernel/runtime/InterpreterInstance.hpp =================================================================== --- sandbox/rick/init/kernel/runtime/InterpreterInstance.hpp 2008-01-25 20:53:44 UTC (rev 2308) +++ sandbox/rick/init/kernel/runtime/InterpreterInstance.hpp 2008-01-26 00:36:28 UTC (rev 2309) @@ -62,6 +62,7 @@ void liveGeneral(int); RexxString *getDefaultAddress() { return defaultAddress; } + RexxActivity *getRootActivity() { return rootActivity; } InterpreterInstance(ExitHandler *handlers); void addActivity(RexxActivity *); Modified: sandbox/rick/init/kernel/runtime/RexxActivation.cpp =================================================================== --- sandbox/rick/init/kernel/runtime/RexxActivation.cpp 2008-01-25 20:53:44 UTC (rev 2308) +++ sandbox/rick/init/kernel/runtime/RexxActivation.cpp 2008-01-26 00:36:28 UTC (rev 2309) @@ -2123,32 +2123,13 @@ if (RexxQueryFunction(funcname) != 0) /* is the function registered ? */ { - /* this a system routine? */ - if (StringUtil::caselessCompare(funcname, "SYS", 3) == 0) - { - // This is unconditional...it will fail if already loaded. - if (RexxRegisterFunctionDll("SYSLOADFUNCS", "REXXUTIL", "SysLoadFuncs") == 0) - { - /* first registration? */ - /* set up an result RXSTRING */ - MAKERXSTRING(funcresult, default_return_buffer, sizeof(default_return_buffer)); - /* call the function loader */ - RexxCallFunction("SYSLOADFUNCS", 0, (PCONSTRXSTRING)NULL, &functionrc, &funcresult, ""); - - } - /* Do we have the function? */ - if (RexxQueryFunction(funcname) != 0) - { - return false; /* truely not found */ - } - } // not located return false; } /* allocate enough memory for all arguments */ /* at least one item needs to be allocated to prevent error reporting */ - PCONSTRXSTRING argrxarray = (PCONSTRXSTRING) SysAllocateResultMemory(sizeof(CONSTRXSTRING) * Numerics::maxVal(argcount, (size_t)1)); + PCONSTRXSTRING argrxarray = (PCONSTRXSTRING) SysAllocateResultMemory(sizeof(CONSTRXSTRING) * Numerics::maxVal(_argcount, (size_t)1)); if (argrxarray == OREF_NULL) /* memory error? */ { reportException(Error_System_resources); Modified: sandbox/rick/init/kernel/runtime/RexxStartup.cpp =================================================================== --- sandbox/rick/init/kernel/runtime/RexxStartup.cpp 2008-01-25 20:53:44 UTC (rev 2308) +++ sandbox/rick/init/kernel/runtime/RexxStartup.cpp 2008-01-26 00:36:28 UTC (rev 2309) @@ -212,18 +212,14 @@ */ void REXXENTRY RexxCreateScriptContext(const char *contextName) { - // get an instance and the current activity - InterpreterInstance *instance = Interpreter::createInterpreterInstance(); - RexxActivity *activity = instance->enterOnCurrentThread(); - + // Get an instance. This also gives the root activity of the instance + // the kernel lock. + InstanceBlock instance; // now create a directory and hang it off of the local environment. This // will persist in the environment until the entire interpreter environment is // terminated. RexxString *context = new_string(contextName); ActivityManager::localEnvironment->put(new_directory(), context); - activity->exitCurrentThread(); - // terminate the instance - instance->terminate(); } @@ -237,17 +233,13 @@ */ void REXXENTRY RexxDestroyScriptContext(const char *contextName) { - // get an instance and the current activity - InterpreterInstance *instance = Interpreter::createInterpreterInstance(); - RexxActivity *activity = instance->enterOnCurrentThread(); + // Get an instance. This also gives the root activity of the instance + // the kernel lock. + InstanceBlock instance; // delete the named context from the local environment. RexxString *context = new_string(contextName); ActivityManager::localEnvironment->remove(context); - - activity->exitCurrentThread(); - // terminate the instance - instance->terminate(); } @@ -264,9 +256,9 @@ */ int REXXENTRY RexxReleaseScriptReference(const char *contextName, REXXOBJECT obj) { - // get an instance and the current activity - InterpreterInstance *instance = Interpreter::createInterpreterInstance(); - RexxActivity *activity = instance->enterOnCurrentThread(); + // Get an instance. This also gives the root activity of the instance + // the kernel lock. + InstanceBlock instance; // delete the named context from the local environment. RexxString *context = new_string(contextName); @@ -277,10 +269,6 @@ sprintf(buffer, "0x%p", obj); REXXOBJECT oldObject = locked_objects->remove(new_string(buffer)); - activity->exitCurrentThread(); - // terminate the instance - instance->terminate(); - // the return code indicates the removed object matches the input object return oldObject == obj; } Modified: sandbox/rick/init/kernel/runtime/Setup.cpp =================================================================== --- sandbox/rick/init/kernel/runtime/Setup.cpp 2008-01-25 20:53:44 UTC (rev 2308) +++ sandbox/rick/init/kernel/runtime/Setup.cpp 2008-01-26 00:36:28 UTC (rev 2309) @@ -172,9 +172,9 @@ Interpreter::init(); // the interpreter subsystem first ActivityManager::init(); /* Initialize the activity managers */ - // get an instance and the current activity + // Get an instance. This also gives the root activity of the instance + // the kernel lock. InterpreterInstance *instance = Interpreter::createInterpreterInstance(); - instance->enterOnCurrentThread(); /* avoid that through caching */ /* TheTrueObject == IntegerOne etc. */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bi...@us...> - 2008-01-25 20:54:35
|
Revision: 2308 http://oorexx.svn.sourceforge.net/oorexx/?rev=2308&view=rev Author: bigrixx Date: 2008-01-25 12:53:44 -0800 (Fri, 25 Jan 2008) Log Message: ----------- Linux cleanup Modified Paths: -------------- sandbox/rick/init/Makefile.am sandbox/rick/init/kernel/runtime/RexxNativeAPI.h sandbox/rick/init/kernel/runtime/RexxStartup.cpp sandbox/rick/init/platform/unix/RexxCompiler.cpp sandbox/rick/init/platform/unix/rexximage.cpp sandbox/rick/init/platform/windows/rexx.c sandbox/rick/init/platform/windows/rexxc.c sandbox/rick/init/platform/windows/rexxhide.c sandbox/rick/init/platform/windows/rexxpaws.c sandbox/rick/init/rexxapi/unix/SUBCOMCommand.cpp Modified: sandbox/rick/init/Makefile.am =================================================================== --- sandbox/rick/init/Makefile.am 2008-01-25 20:04:10 UTC (rev 2307) +++ sandbox/rick/init/Makefile.am 2008-01-25 20:53:44 UTC (rev 2308) @@ -794,7 +794,7 @@ $(runtime_dir)/VirtualFunctionTables.cpp: $(runtime_dir)/VirtualFunctionTable.xsl $(classesXML) sh ./xsl.sh $(@) $(classesXML) $(runtime_dir)/VirtualFunctionTable.xsl -rexx.img: rexx librexxutil.la $(core_classes) $(core_platform_classes) +rexx.img: rexximage librexxutil.la $(core_classes) $(core_platform_classes) cp $(rexxclasses_dir)/*.orx . cp $(kernel_platform_unix_dir)/*.orx . ./rexximage -i Modified: sandbox/rick/init/kernel/runtime/RexxNativeAPI.h =================================================================== --- sandbox/rick/init/kernel/runtime/RexxNativeAPI.h 2008-01-25 20:04:10 UTC (rev 2307) +++ sandbox/rick/init/kernel/runtime/RexxNativeAPI.h 2008-01-25 20:53:44 UTC (rev 2308) @@ -309,9 +309,9 @@ REXXOBJECT REXXENTRY REXX_TABLE_GET(REXXOBJECT, REXXOBJECT); REXXOBJECT REXXENTRY REXX_TABLE_REMOVE(REXXOBJECT, REXXOBJECT); -bool REXXENTRY RexxQuery (void); +int REXXENTRY RexxQuery (void); int REXXENTRY RexxTerminate (void); -bool REXXENTRY RexxInitialize (void); +int REXXENTRY RexxInitialize (void); #ifdef __cplusplus } Modified: sandbox/rick/init/kernel/runtime/RexxStartup.cpp =================================================================== --- sandbox/rick/init/kernel/runtime/RexxStartup.cpp 2008-01-25 20:04:10 UTC (rev 2307) +++ sandbox/rick/init/kernel/runtime/RexxStartup.cpp 2008-01-25 20:53:44 UTC (rev 2308) @@ -74,7 +74,7 @@ return Interpreter::terminateInterpreter() ? 0 : 1; } -bool REXXENTRY RexxInitialize () +int REXXENTRY RexxInitialize () /******************************************************************************/ /* Function: Perform main kernel initializations */ /******************************************************************************/ @@ -85,7 +85,7 @@ return true; } -bool REXXENTRY RexxQuery () +int REXXENTRY RexxQuery () /******************************************************************************/ /* Function: Determine if the REXX interpreter is initialized and active */ /******************************************************************************/ Modified: sandbox/rick/init/platform/unix/RexxCompiler.cpp =================================================================== --- sandbox/rick/init/platform/unix/RexxCompiler.cpp 2008-01-25 20:04:10 UTC (rev 2307) +++ sandbox/rick/init/platform/unix/RexxCompiler.cpp 2008-01-25 20:53:44 UTC (rev 2308) @@ -60,6 +60,7 @@ # include <nl_types.h> #endif +#include "rexx.h" #include "PlatformDefinitions.h" /* added for cat name + defs */ #include "RexxMessageNumbers.h" @@ -72,15 +73,6 @@ #define SECOND_PARAMETER 0 /* 0 for no NL_CAT_LOCALE */ #endif -#ifdef __cplusplus -extern "C" { -#endif -APIRET REXXENTRY RexxTranslateProgram(const char *, const char *); -#ifdef __cplusplus -} -#endif - - void DisplayError(int msgid) /* simplified catalog access@MAE004M */ { #if defined( HAVE_NL_TYPES_H ) @@ -170,8 +162,8 @@ exit(-2); /* terminate with an error */ } /* translate and save the output */ - return RexxTranslateProgram(argv[1], argv[2]); + return RexxTranslateProgram(argv[1], argv[2], NULL); } else /* just doing syntax check */ - return RexxTranslateProgram(argv[1], NULL); + return RexxTranslateProgram(argv[1], NULL, NULL); } Modified: sandbox/rick/init/platform/unix/rexximage.cpp =================================================================== --- sandbox/rick/init/platform/unix/rexximage.cpp 2008-01-25 20:04:10 UTC (rev 2307) +++ sandbox/rick/init/platform/unix/rexximage.cpp 2008-01-25 20:53:44 UTC (rev 2308) @@ -39,7 +39,7 @@ #include "rexx.h" #include "RexxInternalApis.h" -int __cdecl main(int argc, char *argv[]) +int main(int argc, char *argv[]) { RexxCreateInterpreterImage(); } Modified: sandbox/rick/init/platform/windows/rexx.c =================================================================== --- sandbox/rick/init/platform/windows/rexx.c 2008-01-25 20:04:10 UTC (rev 2307) +++ sandbox/rick/init/platform/windows/rexx.c 2008-01-25 20:53:44 UTC (rev 2308) @@ -58,18 +58,12 @@ #include <stdio.h> /* needed for printf() */ #include <string.h> /* needed for strlen() */ -extern "C" { -BOOL REXXENTRY RexxInitialize (void); -} - // // Prototypes // int __cdecl main(int argc, char *argv[]); /* main entry point */ LONG REXXENTRY MY_IOEXIT( LONG ExitNumber, LONG Subfunction, PEXIT ParmBlock); -extern "C" char *REXXENTRY RexxGetVersionInformation(void); - #include "ArgumentParser.h" /* defines getArguments and freeArguments */ // Modified: sandbox/rick/init/platform/windows/rexxc.c =================================================================== --- sandbox/rick/init/platform/windows/rexxc.c 2008-01-25 20:04:10 UTC (rev 2307) +++ sandbox/rick/init/platform/windows/rexxc.c 2008-01-25 20:53:44 UTC (rev 2308) @@ -56,10 +56,6 @@ #include <stdio.h> /* needed for printf() */ #include <string.h> /* needed for strlen() */ -extern "C" { -BOOL REXXENTRY RexxInitialize (void); -} - // // Prototypes // Modified: sandbox/rick/init/platform/windows/rexxhide.c =================================================================== --- sandbox/rick/init/platform/windows/rexxhide.c 2008-01-25 20:04:10 UTC (rev 2307) +++ sandbox/rick/init/platform/windows/rexxhide.c 2008-01-25 20:53:44 UTC (rev 2308) @@ -49,10 +49,6 @@ #include <stdio.h> #include <io.h> -extern "C" { -BOOL REXXENTRY RexxInitialize (void); -} - #include "ArgumentParser.h" /* defines getArguments and freeArguments */ // Modified: sandbox/rick/init/platform/windows/rexxpaws.c =================================================================== --- sandbox/rick/init/platform/windows/rexxpaws.c 2008-01-25 20:04:10 UTC (rev 2307) +++ sandbox/rick/init/platform/windows/rexxpaws.c 2008-01-25 20:53:44 UTC (rev 2308) @@ -49,18 +49,12 @@ #include <stdio.h> /* needed for printf() */ #include <string.h> /* needed for strlen() */ -extern "C" { -BOOL REXXENTRY RexxInitialize (void); -} - // // Prototypes // int __cdecl main(int argc, char *argv[]); /* main entry point */ LONG REXXENTRY MY_IOEXIT( LONG ExitNumber, LONG Subfunction, PEXIT ParmBlock); -extern "C" char *REXXENTRY RexxGetVersionInformation(void); - #include "ArgumentParser.h" /* defines getArguments and freeArguments */ /* Modified: sandbox/rick/init/rexxapi/unix/SUBCOMCommand.cpp =================================================================== --- sandbox/rick/init/rexxapi/unix/SUBCOMCommand.cpp 2008-01-25 20:04:10 UTC (rev 2307) +++ sandbox/rick/init/rexxapi/unix/SUBCOMCommand.cpp 2008-01-25 20:53:44 UTC (rev 2308) @@ -56,6 +56,7 @@ #include <stdio.h> #include "rexx.h" /* for REXXSAA functionality */ +#include "PlatformDefinitions.h" /* added for cat name + defs */ #include "RexxInternalApis.h" /* Get private REXXAPI API's */ #include "RexxAPIManager.h" /* old msg constants replaced!*/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wda...@us...> - 2008-01-25 20:04:05
|
Revision: 2307 http://oorexx.svn.sourceforge.net/oorexx/?rev=2307&view=rev Author: wdashley Date: 2008-01-25 12:04:10 -0800 (Fri, 25 Jan 2008) Log Message: ----------- ArtifactID: None Comment: Added a routine to get the stock id string. Modified Paths: -------------- sandbox/david/rexxgtk.cls sandbox/david/test4-1.rex sandbox/david/test4-1a.rex sandbox/david/test4-3.rex sandbox/david/test4-3a.rex sandbox/david/test5-1.rex sandbox/david/test5-1a.rex sandbox/david/test5-2.rex sandbox/david/test5-2a.rex sandbox/david/test5-3.rex sandbox/david/test5-3a.rex sandbox/david/test5-6.rex sandbox/david/test5-6a.rex sandbox/david/test5-7.rex sandbox/david/test5-8.rex sandbox/david/test5-8a.rex Modified: sandbox/david/rexxgtk.cls =================================================================== --- sandbox/david/rexxgtk.cls 2008-01-25 19:57:50 UTC (rev 2306) +++ sandbox/david/rexxgtk.cls 2008-01-25 20:04:10 UTC (rev 2307) @@ -98,6 +98,117 @@ /*============================================================================*/ +/* Routine: StockID */ +/*============================================================================*/ + +::routine StockID public +use strict arg id +sid = upper(id) +select + when sid = 'GTK_STOCK_ABOUT' then return 'gtk-about' + when sid = 'GTK_STOCK_ADD' then return 'gtk-add' + when sid = 'GTK_STOCK_APPLY' then return 'gtk-apply' + when sid = 'GTK_STOCK_BOLD' then return 'gtk-bold' + when sid = 'GTK_STOCK_CANCEL' then return 'gtk-cancel' + when sid = 'GTK_STOCK_CDROM' then return 'gtk-cdrom' + when sid = 'GTK_STOCK_CLEAR' then return 'gtk-clear' + when sid = 'GTK_STOCK_CLOSE' then return 'gtk-close' + when sid = 'GTK_STOCK_COLOR_PICKER' then return 'gtk-color-picker' + when sid = 'GTK_STOCK_CONVERT' then return 'gtk-comvert' + when sid = 'GTK_STOCK_CONNECT' then return 'gtk-connect' + when sid = 'GTK_STOCK_COPY' then return 'gtk-copy' + when sid = 'GTK_STOCK_CUT' then return 'gtk-cut' + when sid = 'GTK_STOCK_DELETE' then return 'gtk-delete' + when sid = 'GTK_STOCK_DIALOG_ERROR' then return 'gtk-dialog-error' + when sid = 'GTK_STOCK_DIALOG_INFO' then return 'gtk-dialog-info' + when sid = 'GTK_STOCK_DIALOG_QUESTION' then return 'gtk-dialog-question' + when sid = 'GTK_STOCK_DIALOG_WARNING' then return 'gtk-dialog-warning' + when sid = 'GTK_STOCK_DIRECTORY' then return 'gtk-directry' + when sid = 'GTK_STOCK_DISCARD' then return 'gtk-discard' + when sid = 'GTK_STOCK_DISCONNECT' then return 'gtk-disconnect' + when sid = 'GTK_STOCK_DND' then return 'gtk-dnd' + when sid = 'GTK_STOCK_DND_MULTIPLE' then return 'gtk-dnd-multiple' + when sid = 'GTK_STOCK_EDIT' then return 'gtk-edit' + when sid = 'GTK_STOCK_EXECUTE' then return 'gtk-execute' + when sid = 'GTK_STOCK_FILE' then return 'gtk-file' + when sid = 'GTK_STOCK_FIND' then return 'gtk-find' + when sid = 'GTK_STOCK_FIND_AND_REPLACE' then return 'gtk-find-and-replace' + when sid = 'GTK_STOCK_FLOPPY' then return 'gtk-floppy' + when sid = 'GTK_STOCK_FULLSCREEN' then return 'gtk-fullscreen' + when sid = 'GTK_STOCK_GOTO_BOTTOM' then return 'gtk-goto-bottom' + when sid = 'GTK_STOCK_GOTO_FIRST' then return 'gtk-goto-first' + when sid = 'GTK_STOCK_GOTO_LAST' then return 'gtk-goto-last' + when sid = 'GTK_STOCK_GOTO_TOP' then return 'gtk-goto-top' + when sid = 'GTK_STOCK_GO_BACK' then return 'gtk-go-back' + when sid = 'GTK_STOCK_GO_DOWN' then return 'gtk-go-down' + when sid = 'GTK_STOCK_GO_FORWARD' then return 'gtk-go-forward' + when sid = 'GTK_STOCK_GO_UP' then return 'gtk-go-up' + when sid = 'GTK_STOCK_HARDDISK' then return 'gtk-harddisk' + when sid = 'GTK_STOCK_HELP' then return 'gtk-help' + when sid = 'GTK_STOCK_HOME' then return 'gtk-home' + when sid = 'GTK_STOCK_INDENT' then return 'gtk-indent' + when sid = 'GTK_STOCK_INDEX' then return 'gtk-index' + when sid = 'GTK_STOCK_INFO' then return 'gtk-info' + when sid = 'GTK_STOCK_ITALIC' then return 'gtk-italic' + when sid = 'GTK_STOCK_JUMP_TO' then return 'gtk-jump-to' + when sid = 'GTK_STOCK_JUSTIFY_CENTER' then return 'gtk-justify-center' + when sid = 'GTK_STOCK_JUSTIFY_FILL' then return 'gtk-justify-fill' + when sid = 'GTK_STOCK_JUSTIFY_LEFT' then return 'gtk-justify-left' + when sid = 'GTK_STOCK_JUSTIFY_RIGHT' then return 'gtk-justify-right' + when sid = 'GTK_STOCK_LEAVE_FULLSCREEN' then return 'gtk-leave-fullscreen' + when sid = 'GTK_STOCK_MEDIA_FORWARD' then return 'gtk-media-forward' + when sid = 'GTK_STOCK_MEDIA_NEXT' then return 'gtk-media-nect' + when sid = 'GTK_STOCK_MEDIA_PAUSE' then return 'gtk-media-pause' + when sid = 'GTK_STOCK_MEDIA_PLAY' then return 'gtk-media-play' + when sid = 'GTK_STOCK_MEDIA_PREVIOUS' then return 'gtk-media-previous' + when sid = 'GTK_STOCK_MEDIA_RECORD' then return 'gtk-media-record' + when sid = 'GTK_STOCK_MEDIA_REWIND' then return 'gtk-media-rewind' + when sid = 'GTK_STOCK_MEDIA_STOP' then return 'gtk-media-stop' + when sid = 'GTK_STOCK_MISSING_IMAGE' then return 'gtk-missing-image' + when sid = 'GTK_STOCK_NETWORK' then return 'gtk-network' + when sid = 'GTK_STOCK_NEW' then return 'gtk-new' + when sid = 'GTK_STOCK_NO' then return 'gtk-no' + when sid = 'GTK_STOCK_OK' then return 'gtk-ok' + when sid = 'GTK_STOCK_OPEN' then return 'gtk-open' + when sid = 'GTK_STOCK_OREINTATION_LANDSCAPE' then return 'gtk-orientation-landscape' + when sid = 'GTK_STOCK_OREINTATION_PORTRAIT' then return 'gtk-orientation-portrait' + when sid = 'GTK_STOCK_OREINTATION_REVERSE_LANDSCAPE' then return 'gtk-orientation-reverse-landscape' + when sid = 'GTK_STOCK_OREINTATION_REVERSE_LANDSCAPE' then return 'gtk-orientation-reverse-portrait' + when sid = 'GTK_STOCK_PASTE' then return 'gtk-paste' + when sid = 'GTK_STOCK_PREFERENCES' then return 'gtk-preferences' + when sid = 'GTK_STOCK_PRINT' then return 'gtk-print' + when sid = 'GTK_STOCK_PRINT_PREVIEW' then return 'gtk-print-preview' + when sid = 'GTK_STOCK_PROPERTIES' then return 'gtk-properties' + when sid = 'GTK_STOCK_QUIT' then return 'gtk-quit' + when sid = 'GTK_STOCK_REDO' then return 'gtk-redo' + when sid = 'GTK_STOCK_REFRESH' then return 'gtk-refresh' + when sid = 'GTK_STOCK_REMOVE' then return 'gtk-remove' + when sid = 'GTK_STOCK_REVERT_TO_SAVED' then return 'gtk-revert-to-saved' + when sid = 'GTK_STOCK_SAVE' then return 'gtk-save' + when sid = 'GTK_STOCK_SAVE_AS' then return 'gtk-save-as' + when sid = 'GTK_STOCK_SELECT_ALL' then return 'gtk-select-all' + when sid = 'GTK_STOCK_SELECT_COLOR' then return 'gtk-select-color' + when sid = 'GTK_STOCK_SELECT_FONT' then return 'gtk-select-font' + when sid = 'GTK_STOCK_SORT_ASCENDING' then return 'gtk-sort-ascending' + when sid = 'GTK_STOCK_SORT_DESCENDING' then return 'gtk-sort-descending' + when sid = 'GTK_STOCK_SPELL_CHECK' then return 'gtk-spell-check' + when sid = 'GTK_STOCK_STOP' then return 'gtk-stop' + when sid = 'GTK_STOCK_STRIKETHROUGH' then return 'gtk-strikethrough' + when sid = 'GTK_STOCK_UNDELETE' then return 'gtk-undelete' + when sid = 'GTK_STOCK_UNDERLINE' then return 'gtk-underline' + when sid = 'GTK_STOCK_UNDO' then return 'gtk-undo' + when sid = 'GTK_STOCK_UNINDENT' then return 'gtk-unindent' + when sid = 'GTK_STOCK_YES' then return 'gtk-yes' + when sid = 'GTK_STOCK_ZOOM_100' then return 'gtk-zoom-100' + when sid = 'GTK_STOCK_ZOOM_FIT' then return 'gtk-zoom-fit' + when sid = 'GTK_STOCK_ZOOM_IN' then return 'gtk-zoom-in' + when sid = 'GTK_STOCK_ZOOM_OUT' then return 'gtk-zoom-out' + otherwise nop + end +return id + + +/*============================================================================*/ /* Class: GtkWidget */ /*============================================================================*/ Modified: sandbox/david/test4-1.rex =================================================================== --- sandbox/david/test4-1.rex 2008-01-25 19:57:50 UTC (rev 2306) +++ sandbox/david/test4-1.rex 2008-01-25 20:04:10 UTC (rev 2307) @@ -50,7 +50,7 @@ window~set_border_width(10) window~set_size_request(250, 100) -button = .MyButton~new('gtk-close') +button = .MyButton~new(StockID('GTK_STOCK_CLOSE')) button~signal_connect("clicked") Modified: sandbox/david/test4-1a.rex =================================================================== --- sandbox/david/test4-1a.rex 2008-01-25 19:57:50 UTC (rev 2306) +++ sandbox/david/test4-1a.rex 2008-01-25 20:04:10 UTC (rev 2307) @@ -54,7 +54,7 @@ window~border_width = 10 window~set_size_request(250, 100) -button = .MyButton~new('gtk-close') +button = .MyButton~new(StockID(GTK_STOCK_CLOSE)) button~signal_connect("clicked") Modified: sandbox/david/test4-3.rex =================================================================== --- sandbox/david/test4-3.rex 2008-01-25 19:57:50 UTC (rev 2306) +++ sandbox/david/test4-3.rex 2008-01-25 20:04:10 UTC (rev 2307) @@ -58,7 +58,7 @@ check2~set_sensitive(.false) check1~signal_connect("toggled") -close = .MyButton~new('gtk-close') +close = .MyButton~new(StockID('GTK_STOCK_CLOSE')) close~signal_connect("clicked") vbox = .GtkVBox~new(.false, 5) Modified: sandbox/david/test4-3a.rex =================================================================== --- sandbox/david/test4-3a.rex 2008-01-25 19:57:50 UTC (rev 2306) +++ sandbox/david/test4-3a.rex 2008-01-25 20:04:10 UTC (rev 2307) @@ -62,7 +62,7 @@ check2~set_sensitive(.false) check1~signal_connect("toggled") -close = .MyButton~new('gtk-close') +close = .MyButton~new(StockID(GTK_STOCK_CLOSE)) close~signal_connect("clicked") vbox = .GtkVBox~new(.false, 5) Modified: sandbox/david/test5-1.rex =================================================================== --- sandbox/david/test5-1.rex 2008-01-25 19:57:50 UTC (rev 2306) +++ sandbox/david/test5-1.rex 2008-01-25 20:04:10 UTC (rev 2307) @@ -76,11 +76,11 @@ ::method signal_clicked dialog = .GtkDialog_With_Buttons~new('Information', self~user_data,, 'GTK_DIALOG_MODAL',, - 'gtk-ok', 'GTK_RESPONSE_OK') + StockID('GTK_STOCK_OK'), 'GTK_RESPONSE_OK') dialog~set_has_separator(.false) label= .GtkLabel~new('The button was clicked!') -image = .GtkImage_From_Stock~new('gtk-dialog-info', 'GTK_ICON_SIZE_DIALOG') +image = .GtkImage_From_Stock~new(StockID('GTK_STOCK_DIALOG_INFO'), 'GTK_ICON_SIZE_DIALOG') hbox = .GtkHBox~new(.false, 5) hbox~set_border_width(10) Modified: sandbox/david/test5-1a.rex =================================================================== --- sandbox/david/test5-1a.rex 2008-01-25 19:57:50 UTC (rev 2306) +++ sandbox/david/test5-1a.rex 2008-01-25 20:04:10 UTC (rev 2307) @@ -76,11 +76,11 @@ ::method signal_clicked dialog = .GtkDialog_With_Buttons~new('Information', self~user_data,, GTK_DIALOG_MODAL,, - 'gtk-ok', GTK_RESPONSE_OK) + StockID(GTK_STOCK_OK), GTK_RESPONSE_OK) dialog~has_separator = .false label= .GtkLabel~new('The button was clicked!') -image = .GtkImage_From_Stock~new('gtk-dialog-info', GTK_ICON_SIZE_DIALOG) +image = .GtkImage_From_Stock~new(StockID(GTK_STOCK_DIALOG_INFO), GTK_ICON_SIZE_DIALOG) hbox = .GtkHBox~new(.false, 5) hbox~set_border_width(10) Modified: sandbox/david/test5-2.rex =================================================================== --- sandbox/david/test5-2.rex 2008-01-25 19:57:50 UTC (rev 2306) +++ sandbox/david/test5-2.rex 2008-01-25 20:04:10 UTC (rev 2307) @@ -76,11 +76,11 @@ ::method signal_clicked dialog = .myDialog~new('Information', self~user_data,, 'GTK_DIALOG_MODAL',, - 'gtk-ok', 'GTK_RESPONSE_OK') + StockID('GTK_STOCK_OK'), 'GTK_RESPONSE_OK') dialog~set_has_separator(.false) label= .GtkLabel~new('The button was clicked!') -image = .GtkImage_From_Stock~new('gtk-dialog-info', 'GTK_ICON_SIZE_DIALOG') +image = .GtkImage_From_Stock~new(StockID('GTK_STOCK_DIALOG_INFO'), 'GTK_ICON_SIZE_DIALOG') hbox = .GtkHBox~new(.false, 5) hbox~set_border_width(10) Modified: sandbox/david/test5-2a.rex =================================================================== --- sandbox/david/test5-2a.rex 2008-01-25 19:57:50 UTC (rev 2306) +++ sandbox/david/test5-2a.rex 2008-01-25 20:04:10 UTC (rev 2307) @@ -76,11 +76,11 @@ ::method signal_clicked dialog = .myDialog~new('Information', self~user_data,, GTK_DIALOG_MODAL,, - 'gtk-ok', GTK_RESPONSE_OK) + StockID(GTK_STOCK_OK), GTK_RESPONSE_OK) dialog~has_separator = .false label= .GtkLabel~new('The button was clicked!') -image = .GtkImage_From_Stock~new('gtk-dialog-info', GTK_ICON_SIZE_DIALOG) +image = .GtkImage_From_Stock~new(StockID(GTK_STOCK_DIALOG_INFO), GTK_ICON_SIZE_DIALOG) hbox = .GtkHBox~new(.false, 5) hbox~set_border_width(10) Modified: sandbox/david/test5-3.rex =================================================================== --- sandbox/david/test5-3.rex 2008-01-25 19:57:50 UTC (rev 2306) +++ sandbox/david/test5-3.rex 2008-01-25 20:04:10 UTC (rev 2307) @@ -46,8 +46,8 @@ dialog = .GtkDialog_With_Buttons~new('Edit User Information', .nil,, 'GTK_DIALOG_MODAL',, - 'gtk-ok', 'GTK_RESPONSE_OK') -dialog~add_button('gtk-cancel', 'GTK_RESPONSE_CANCEL') + StockID('GTK_STOCK_OK'), 'GTK_RESPONSE_OK') +dialog~add_button(StockID('GTK_STOCK_CANCEL'), 'GTK_RESPONSE_CANCEL') dialog~set_default_response("GTK_RESPONSE_OK") lbl1 = .GtkLabel~new('User Name') Modified: sandbox/david/test5-3a.rex =================================================================== --- sandbox/david/test5-3a.rex 2008-01-25 19:57:50 UTC (rev 2306) +++ sandbox/david/test5-3a.rex 2008-01-25 20:04:10 UTC (rev 2307) @@ -46,8 +46,8 @@ dialog = .GtkDialog_With_Buttons~new('Edit User Information', .nil,, GTK_DIALOG_MODAL,, - 'gtk-ok', GTK_RESPONSE_OK) -dialog~add_button('gtk-cancel', GTK_RESPONSE_CANCEL) + StockID(GTK_STOCK_OK), GTK_RESPONSE_OK) +dialog~add_button(StockID(GTK_STOCK_CANCEL), GTK_RESPONSE_CANCEL) dialog~set_default_response(GTK_RESPONSE_OK) lbl1 = .GtkLabel~new('User Name') Modified: sandbox/david/test5-6.rex =================================================================== --- sandbox/david/test5-6.rex 2008-01-25 19:57:50 UTC (rev 2306) +++ sandbox/david/test5-6.rex 2008-01-25 20:04:10 UTC (rev 2307) @@ -78,8 +78,8 @@ ::method signal_clicked dialog = .GtkFileChooserDialog~new('Save File As ...', self~user_data,, 'GTK_FILE_CHOOSER_ACTION_SAVE',, - 'gtk-cancel', 'GTK_RESPONSE_CANCEL') -dialog~add_button('gtk-save', 'GTK_RESPONSE_ACCEPT') + StockID('GTK_STOCK_CANCEL'), 'GTK_RESPONSE_CANCEL') +dialog~add_button(StockID('GTK_STOCK_SAVE'), 'GTK_RESPONSE_ACCEPT') retc = dialog~dialog_run() if retc = 'GTK_RESPONSE_ACCEPT' then do Modified: sandbox/david/test5-6a.rex =================================================================== --- sandbox/david/test5-6a.rex 2008-01-25 19:57:50 UTC (rev 2306) +++ sandbox/david/test5-6a.rex 2008-01-25 20:04:10 UTC (rev 2307) @@ -78,8 +78,8 @@ ::method signal_clicked dialog = .GtkFileChooserDialog~new('Save File As ...', self~user_data,, GTK_FILE_CHOOSER_ACTION_SAVE,, - 'gtk-cancel', GTK_RESPONSE_CANCEL) -dialog~add_button('gtk-save', GTK_RESPONSE_ACCEPT) + StockID(GTK_STOCK_CANCEL), GTK_RESPONSE_CANCEL) +dialog~add_button(StockID(GTK_STOCK_SAVE), GTK_RESPONSE_ACCEPT) retc = dialog~dialog_run() if retc = GTK_RESPONSE_ACCEPT then do Modified: sandbox/david/test5-7.rex =================================================================== --- sandbox/david/test5-7.rex 2008-01-25 19:57:50 UTC (rev 2306) +++ sandbox/david/test5-7.rex 2008-01-25 20:04:10 UTC (rev 2307) @@ -46,8 +46,8 @@ dialog = .GtkFileChooserDialog~new('Create a Folder ...', .nil,, 'GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER',, - 'gtk-cancel', 'GTK_RESPONSE_CANCEL') -dialog~add_button('gtk-ok', 'GTK_RESPONSE_OK') + StockID('GTK_STOCK_CANCEL'), 'GTK_RESPONSE_CANCEL') +dialog~add_button(StockID('GTK_STOCK_OK'), 'GTK_RESPONSE_OK') retc = dialog~dialog_run() if retc = 'GTK_RESPONSE_OK' then do Modified: sandbox/david/test5-8.rex =================================================================== --- sandbox/david/test5-8.rex 2008-01-25 19:57:50 UTC (rev 2306) +++ sandbox/david/test5-8.rex 2008-01-25 20:04:10 UTC (rev 2307) @@ -46,8 +46,8 @@ dialog = .GtkFileChooserDialog~new('Open File(s) ...', .nil,, 'GTK_FILE_CHOOSER_ACTION_OPEN',, - 'gtk-cancel', 'GTK_RESPONSE_CANCEL') -dialog~add_button('gtk-open', 'GTK_RESPONSE_ACCEPT') + StockID('GTK_STOCK_CANCEL'), 'GTK_RESPONSE_CANCEL') +dialog~add_button(StockID('GTK_STOCK_OPEN'), 'GTK_RESPONSE_ACCEPT') dialog~set_select_multiple(.true) Modified: sandbox/david/test5-8a.rex =================================================================== --- sandbox/david/test5-8a.rex 2008-01-25 19:57:50 UTC (rev 2306) +++ sandbox/david/test5-8a.rex 2008-01-25 20:04:10 UTC (rev 2307) @@ -46,8 +46,8 @@ dialog = .GtkFileChooserDialog~new('Open File(s) ...', .nil,, GTK_FILE_CHOOSER_ACTION_OPEN,, - 'gtk-cancel', GTK_RESPONSE_CANCEL) -dialog~add_button('gtk-open', GTK_RESPONSE_ACCEPT) + StockID(GTK_STOCK_CANCEL), GTK_RESPONSE_CANCEL) +dialog~add_button(StockID(GTK_STOCK_OPEN), GTK_RESPONSE_ACCEPT) dialog~select_multiple = .true This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bi...@us...> - 2008-01-25 19:58:04
|
Revision: 2306 http://oorexx.svn.sourceforge.net/oorexx/?rev=2306&view=rev Author: bigrixx Date: 2008-01-25 11:57:50 -0800 (Fri, 25 Jan 2008) Log Message: ----------- incremental checkin Modified Paths: -------------- sandbox/rick/init/Makefile.am Added Paths: ----------- sandbox/rick/init/platform/unix/rexximage.cpp Modified: sandbox/rick/init/Makefile.am =================================================================== --- sandbox/rick/init/Makefile.am 2008-01-25 18:50:38 UTC (rev 2305) +++ sandbox/rick/init/Makefile.am 2008-01-25 19:57:50 UTC (rev 2306) @@ -304,7 +304,7 @@ # # Binary targets # -bin_PROGRAMS = rexx rexxc rxqueue rxsubcom rxdelipc +bin_PROGRAMS = rexximage rexx rexxc rxqueue rxsubcom rxdelipc # # Shared library targets @@ -573,6 +573,27 @@ rexx_LDADD = librexx.la librexxapi.la @ORX_LDADD_EXECUTABLE@ rexx_LDFLAGS = @ORX_LDFLAGS_EXECUTABLE@ + +#################### rexx ########################## +# Sources for rexx +# +rexximage_SOURCES = $(platform_unix_dir)/rexximage.cpp +# +# Preprocessor flags for rexximage +# +rexximage_CXXFLAGS = $(COMMON_CPPFLAGS) \ + -I$(lib_dir) \ + -I$(api_dir) \ + -I$(platform_api_dir) \ + -I$(messages_dir) \ + -I$(kernel_platform_unix_dir) \ + -I$(rexxapi_unix_dir) +# +# Extra libraries for rexx +# +rexximage_LDADD = librexx.la librexxapi.la @ORX_LDADD_EXECUTABLE@ +rexximage_LDFLAGS = @ORX_LDFLAGS_EXECUTABLE@ + #################### rexxc ######################### # Sources for rexxc # Added: sandbox/rick/init/platform/unix/rexximage.cpp =================================================================== --- sandbox/rick/init/platform/unix/rexximage.cpp (rev 0) +++ sandbox/rick/init/platform/unix/rexximage.cpp 2008-01-25 19:57:50 UTC (rev 2306) @@ -0,0 +1,45 @@ +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 1995, 2004 IBM Corporation. All rights reserved. */ +/* Copyright (c) 2005-2006 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/*----------------------------------------------------------------------------*/ + +#include "rexx.h" +#include "RexxInternalApis.h" + +int __cdecl main(int argc, char *argv[]) +{ + RexxCreateInterpreterImage(); +} Property changes on: sandbox/rick/init/platform/unix/rexximage.cpp ___________________________________________________________________ Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wda...@us...> - 2008-01-25 18:50:34
|
Revision: 2305 http://oorexx.svn.sourceforge.net/oorexx/?rev=2305&view=rev Author: wdashley Date: 2008-01-25 10:50:38 -0800 (Fri, 25 Jan 2008) Log Message: ----------- ArtifactID: None Comment: Some adjustment to the alternative examples. Modified Paths: -------------- sandbox/david/test2-1a.rex sandbox/david/test2-2a.rex sandbox/david/test2-3a.rex sandbox/david/test3-1a.rex sandbox/david/test3-2a.rex sandbox/david/test3-3a.rex sandbox/david/test3-4a.rex sandbox/david/test3-5a.rex sandbox/david/test3-6a.rex sandbox/david/test3-7a.rex sandbox/david/test3-8a.rex sandbox/david/test4-10a.rex sandbox/david/test4-11a.rex sandbox/david/test4-1a.rex sandbox/david/test4-2a.rex sandbox/david/test4-3a.rex sandbox/david/test4-4a.rex sandbox/david/test4-5a.rex sandbox/david/test4-6a.rex sandbox/david/test4-7a.rex sandbox/david/test4-9a.rex sandbox/david/test5-1a.rex sandbox/david/test5-2a.rex sandbox/david/test5-3a.rex sandbox/david/test5-4a.rex sandbox/david/test5-6a.rex sandbox/david/test5-8a.rex Modified: sandbox/david/test2-1a.rex =================================================================== --- sandbox/david/test2-1a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test2-1a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,7 +48,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .GTKWindow~new('GTK_WINDOW_TOPLEVEL') +window = .GTKWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Hello World' window~show() Modified: sandbox/david/test2-2a.rex =================================================================== --- sandbox/david/test2-2a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test2-2a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,7 +48,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Hello World' window~border_width = 10 window~set_size_request(200, 100) Modified: sandbox/david/test2-3a.rex =================================================================== --- sandbox/david/test2-3a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test2-3a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,7 +48,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Hello World' window~border_width = 25 window~set_size_request(200, 100) Modified: sandbox/david/test3-1a.rex =================================================================== --- sandbox/david/test3-1a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test3-1a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -44,13 +44,13 @@ -- Foundations of GTK+ Development -- by Andrew Krause -names = .array~of('Andrew', 'Joe', 'Samatha', 'Jonanthan') - -- This is an alternative example that uses a more ooRexx friendly syntax. The -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +names = .array~of('Andrew', 'Joe', 'Samatha', 'Jonanthan') + +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Boxes' window~border_width = 10 window~set_size_request(200, -1) Modified: sandbox/david/test3-2a.rex =================================================================== --- sandbox/david/test3-2a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test3-2a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -51,7 +51,7 @@ names = .array~of('Andrew', 'Joe', 'Samatha', 'Jonanthan') -- create a new top level window with a title -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Boxes' window~signal_connect("destroy") Modified: sandbox/david/test3-3a.rex =================================================================== --- sandbox/david/test3-3a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test3-3a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -50,7 +50,7 @@ names = .array~of('Andrew', 'Joe', 'Samatha', 'Jonanthan') -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Panes' window~signal_connect("destroy") Modified: sandbox/david/test3-4a.rex =================================================================== --- sandbox/david/test3-4a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test3-4a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,7 +48,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Tables' window~signal_connect("destroy") window~border_width = 10 @@ -59,9 +59,9 @@ label2 = .GtkLabel~new('Name: ') name = .GtkEntry~new() -table~attach(label, 0, 2, 0, 1, 'GTK_EXPAND', 'GTK_SHRINK', 0, 0) -table~attach(label2, 0, 1, 1, 2, 'GTK_EXPAND', 'GTK_SHRINK', 0, 0) -table~attach(name, 1, 2, 1, 2, 'GTK_EXPAND', 'GTK_SHRINK', 0, 0) +table~attach(label, 0, 2, 0, 1, GTK_EXPAND, GTK_SHRINK, 0, 0) +table~attach(label2, 0, 1, 1, 2, GTK_EXPAND, GTK_SHRINK, 0, 0) +table~attach(name, 1, 2, 1, 2, GTK_EXPAND, GTK_SHRINK, 0, 0) table~row_spacings = 5 table~col_spacings = 5 Modified: sandbox/david/test3-5a.rex =================================================================== --- sandbox/david/test3-5a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test3-5a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,7 +48,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Fixed' window~signal_connect("destroy") window~set_border_width(10) Modified: sandbox/david/test3-6a.rex =================================================================== --- sandbox/david/test3-6a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test3-6a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,7 +48,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Expander' window~signal_connect("destroy") window~border_width = 10 Modified: sandbox/david/test3-7a.rex =================================================================== --- sandbox/david/test3-7a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test3-7a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,7 +48,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Handle Box' window~signal_connect("destroy") window~border_width = 10 @@ -57,9 +57,9 @@ handle = .GtkHandleBox~new() label = .GtkLabel~new('Detach Me') -handle~shadow_type = 'GTK_SHADOW_IN' -handle~handle_position = 'GTK_POS_LEFT' -handle~snap_edge = 'GTK_POS_TOP' +handle~shadow_type = GTK_SHADOW_IN +handle~handle_position = GTK_POS_LEFT +handle~snap_edge = GTK_POS_TOP handle~add(label) window~add(handle) Modified: sandbox/david/test3-8a.rex =================================================================== --- sandbox/david/test3-8a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test3-8a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -52,7 +52,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Notebook' window~signal_connect("destroy") window~border_width = 10 @@ -73,7 +73,7 @@ notebook~append_page(child1, label1) notebook~append_page(child2, label2) -notebook~tab_pos = 'GTK_POS_BOTTOM' +notebook~tab_pos = GTK_POS_BOTTOM window~add(notebook) window~show_all() Modified: sandbox/david/test4-10a.rex =================================================================== --- sandbox/david/test4-10a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test4-10a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,15 +48,15 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'File Chhoser Button' window~signal_connect("destroy") window~set_border_width(10) label = .GtkLabel~new() -chooser1 = .MyButton1~new('Chooser a folder', 'GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER') -chooser2 = .MyButton2~new('Chooser a folder', 'GTK_FILE_CHOOSER_ACTION_OPEN') +chooser1 = .MyButton1~new('Chooser a folder', GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER) +chooser2 = .MyButton2~new('Chooser a folder', GTK_FILE_CHOOSER_ACTION_OPEN) -- save data for the callback chooser1~user_data = chooser2 Modified: sandbox/david/test4-11a.rex =================================================================== --- sandbox/david/test4-11a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test4-11a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,7 +48,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Font Button' window~signal_connect("destroy") window~set_border_width(10) Modified: sandbox/david/test4-1a.rex =================================================================== --- sandbox/david/test4-1a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test4-1a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,7 +48,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Stock Buttons' window~signal_connect("destroy") window~border_width = 10 Modified: sandbox/david/test4-2a.rex =================================================================== --- sandbox/david/test4-2a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test4-2a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,7 +48,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Toggle Buttons' window~signal_connect("destroy") window~border_width = 10 Modified: sandbox/david/test4-3a.rex =================================================================== --- sandbox/david/test4-3a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test4-3a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,7 +48,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Check Buttons' window~signal_connect("destroy") window~border_width = 10 Modified: sandbox/david/test4-4a.rex =================================================================== --- sandbox/david/test4-4a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test4-4a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,7 +48,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Radio Buttons' window~signal_connect("destroy") window~border_width = 10 Modified: sandbox/david/test4-5a.rex =================================================================== --- sandbox/david/test4-5a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test4-5a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,7 +48,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Password' window~signal_connect("destroy") window~border_width = 10 Modified: sandbox/david/test4-6a.rex =================================================================== --- sandbox/david/test4-6a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test4-6a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,7 +48,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'SpinButtons' window~signal_connect("destroy") window~border_width = 10 Modified: sandbox/david/test4-7a.rex =================================================================== --- sandbox/david/test4-7a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test4-7a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,7 +48,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Scales' window~signal_connect("destroy") window~border_width = 10 @@ -60,8 +60,8 @@ scale_int~digits = 0 scale_float~digits = 1 -scale_int~value_pos = 'GTK_POS_RIGHT' -scale_float~value_pos = 'GTK_POS_LEFT' +scale_int~value_pos = GTK_POS_RIGHT +scale_float~value_pos = GTK_POS_LEFT vbox = .GtkVBox~new(.false, 5) vbox~pack_start_defaults(scale_int) Modified: sandbox/david/test4-9a.rex =================================================================== --- sandbox/david/test4-9a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test4-9a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -48,7 +48,7 @@ -- original example uses methods that are direct ports of the GTK C function -- calls. This example uses a syntax that is more Rexx-like. -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Color Button' window~signal_connect("destroy") window~border_width = 10 @@ -58,7 +58,7 @@ button~title = 'Select a Color' label = .GtkLabel~new('Look at my color!') -label~modify_fg('GTK_STATE_NORMAL', color) +label~modify_fg(GTK_STATE_NORMAL, color) -- save data for the callback button~user_data = label @@ -88,6 +88,6 @@ ::method signal_color_set color = self~color -self~user_data~modify_fg('GTK_STATE_NORMAL', color) +self~user_data~modify_fg(GTK_STATE_NORMAL, color) return Modified: sandbox/david/test5-1a.rex =================================================================== --- sandbox/david/test5-1a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test5-1a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -44,7 +44,7 @@ -- Foundations of GTK+ Development -- by Andrew Krause -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Dialogs' window~signal_connect("destroy") window~set_border_width(10) @@ -75,12 +75,12 @@ ::method signal_clicked dialog = .GtkDialog_With_Buttons~new('Information', self~user_data,, - 'GTK_DIALOG_MODAL',, - 'gtk-ok', 'GTK_RESPONSE_OK') + GTK_DIALOG_MODAL,, + 'gtk-ok', GTK_RESPONSE_OK) dialog~has_separator = .false label= .GtkLabel~new('The button was clicked!') -image = .GtkImage_From_Stock~new('gtk-dialog-info', 'GTK_ICON_SIZE_DIALOG') +image = .GtkImage_From_Stock~new('gtk-dialog-info', GTK_ICON_SIZE_DIALOG) hbox = .GtkHBox~new(.false, 5) hbox~set_border_width(10) Modified: sandbox/david/test5-2a.rex =================================================================== --- sandbox/david/test5-2a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test5-2a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -44,7 +44,7 @@ -- Foundations of GTK+ Development -- by Andrew Krause -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Dialogs' window~signal_connect("destroy") window~set_border_width(10) @@ -75,12 +75,12 @@ ::method signal_clicked dialog = .myDialog~new('Information', self~user_data,, - 'GTK_DIALOG_MODAL',, - 'gtk-ok', 'GTK_RESPONSE_OK') + GTK_DIALOG_MODAL,, + 'gtk-ok', GTK_RESPONSE_OK) dialog~has_separator = .false label= .GtkLabel~new('The button was clicked!') -image = .GtkImage_From_Stock~new('gtk-dialog-info', 'GTK_ICON_SIZE_DIALOG') +image = .GtkImage_From_Stock~new('gtk-dialog-info', GTK_ICON_SIZE_DIALOG) hbox = .GtkHBox~new(.false, 5) hbox~set_border_width(10) Modified: sandbox/david/test5-3a.rex =================================================================== --- sandbox/david/test5-3a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test5-3a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -45,10 +45,10 @@ -- by Andrew Krause dialog = .GtkDialog_With_Buttons~new('Edit User Information', .nil,, - 'GTK_DIALOG_MODAL',, - 'gtk-ok', 'GTK_RESPONSE_OK') -dialog~add_button('gtk-cancel', 'GTK_RESPONSE_CANCEL') -dialog~set_default_response("GTK_RESPONSE_OK") + GTK_DIALOG_MODAL,, + 'gtk-ok', GTK_RESPONSE_OK) +dialog~add_button('gtk-cancel', GTK_RESPONSE_CANCEL) +dialog~set_default_response(GTK_RESPONSE_OK) lbl1 = .GtkLabel~new('User Name') lbl2 = .GtkLabel~new('Real Name') @@ -84,7 +84,7 @@ dialog~show_all() retc = dialog~dialog_run() -if retc = 'GTK_RESPONSE_OK' then do +if retc = GTK_RESPONSE_OK then do say 'User Name:' user~text say 'Real Name:' real~text say 'Home Folder:' home~text Modified: sandbox/david/test5-4a.rex =================================================================== --- sandbox/david/test5-4a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test5-4a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -44,7 +44,7 @@ -- Foundations of GTK+ Development -- by Andrew Krause -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Message Dialogs' window~signal_connect("destroy") window~set_border_width(10) @@ -74,8 +74,8 @@ ::class MyButton subclass GtkButton_With_Mnemonic ::method signal_clicked -dialog = .GtkMessageDialog~new(self~user_data, 'GTK_DIALOG_MODAL',, - 'GTK_MESSAGE_INFO', 'GTK_BUTTONS_OK',, +dialog = .GtkMessageDialog~new(self~user_data, GTK_DIALOG_MODAL,, + GTK_MESSAGE_INFO, GTK_BUTTONS_OK,, 'The button was clicked!') dialog~title = 'Information' Modified: sandbox/david/test5-6a.rex =================================================================== --- sandbox/david/test5-6a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test5-6a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -44,7 +44,7 @@ -- Foundations of GTK+ Development -- by Andrew Krause -window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window = .myMainWindow~new(GTK_WINDOW_TOPLEVEL) window~title = 'Save a File' window~signal_connect("destroy") window~set_border_width(10) @@ -77,12 +77,12 @@ ::method signal_clicked dialog = .GtkFileChooserDialog~new('Save File As ...', self~user_data,, - 'GTK_FILE_CHOOSER_ACTION_SAVE',, - 'gtk-cancel', 'GTK_RESPONSE_CANCEL') -dialog~add_button('gtk-save', 'GTK_RESPONSE_ACCEPT') + GTK_FILE_CHOOSER_ACTION_SAVE,, + 'gtk-cancel', GTK_RESPONSE_CANCEL) +dialog~add_button('gtk-save', GTK_RESPONSE_ACCEPT) retc = dialog~dialog_run() -if retc = 'GTK_RESPONSE_ACCEPT' then do +if retc = GTK_RESPONSE_ACCEPT then do filename = dialog~filename self~label = filename end Modified: sandbox/david/test5-8a.rex =================================================================== --- sandbox/david/test5-8a.rex 2008-01-25 15:01:12 UTC (rev 2304) +++ sandbox/david/test5-8a.rex 2008-01-25 18:50:38 UTC (rev 2305) @@ -45,14 +45,14 @@ -- by Andrew Krause dialog = .GtkFileChooserDialog~new('Open File(s) ...', .nil,, - 'GTK_FILE_CHOOSER_ACTION_OPEN',, - 'gtk-cancel', 'GTK_RESPONSE_CANCEL') -dialog~add_button('gtk-open', 'GTK_RESPONSE_ACCEPT') + GTK_FILE_CHOOSER_ACTION_OPEN,, + 'gtk-cancel', GTK_RESPONSE_CANCEL) +dialog~add_button('gtk-open', GTK_RESPONSE_ACCEPT) dialog~select_multiple = .true retc = dialog~dialog_run() -if retc = 'GTK_RESPONSE_ACCEPT' then do +if retc = GTK_RESPONSE_ACCEPT then do filenames = dialog~filenames do filename over filenames say filename 'was selected:' This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wda...@us...> - 2008-01-25 15:01:15
|
Revision: 2304 http://oorexx.svn.sourceforge.net/oorexx/?rev=2304&view=rev Author: wdashley Date: 2008-01-25 07:01:12 -0800 (Fri, 25 Jan 2008) Log Message: ----------- ArtifactID: None Comment: Changed the way dialog return responses. Modified Paths: -------------- sandbox/david/grxconstants.c sandbox/david/grxdialog.c sandbox/david/rexxgtk.cls sandbox/david/rexxgtk.h sandbox/david/test5-1.rex sandbox/david/test5-1a.rex sandbox/david/test5-3.rex sandbox/david/test5-3a.rex sandbox/david/test5-4.rex sandbox/david/test5-4a.rex sandbox/david/test5-5.rex sandbox/david/test5-5a.rex sandbox/david/test5-6.rex sandbox/david/test5-6a.rex sandbox/david/test5-7.rex sandbox/david/test5-8.rex sandbox/david/test5-8a.rex Modified: sandbox/david/grxconstants.c =================================================================== --- sandbox/david/grxconstants.c 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/grxconstants.c 2008-01-25 15:01:12 UTC (rev 2304) @@ -44,15 +44,10 @@ /*----------------------------------------------------------------------------*/ -/* Private variables */ +/* Public variables */ /*----------------------------------------------------------------------------*/ -typedef struct _constants { - const gchar * name; - const gint value; -} CONSTANTS; - -CONSTANTS constResponse[] = { +GrxConstants GrxResponseType[] = { "GTK_RESPONSE_NONE" , GTK_RESPONSE_NONE, "GTK_RESPONSE_REJECT", GTK_RESPONSE_REJECT, "GTK_RESPONSE_ACCEPT", GTK_RESPONSE_ACCEPT, @@ -67,11 +62,6 @@ }; - - - - - /*----------------------------------------------------------------------------*/ /* Local Definitions */ /*----------------------------------------------------------------------------*/ @@ -98,7 +88,7 @@ const size_t Argc, const RXSTRING Argv[], const char * Queuename, PRXSTRING Retstr) { - CONSTANTS *constants; + GrxConstants *resp; gint value = 0, i = 0; /* Check for valid arguments */ @@ -107,24 +97,27 @@ } // Get the correct structure address - if (strcmp(Argv[0].strptr, "GTK_RESPONSE_TYPE") == 0) - constants = constResponse; + if (strcmp(Argv[0].strptr, "GTKRESPONSETYPE") == 0) + resp = GrxResponseType; // else if (strcmp(Argv[0].strptr, "GTK_JUSTIFY_RIGHT") == 0) // jtype = GTK_JUSTIFY_RIGHT; else return RXFUNC_BADCALL; // Get the value - while (constants[i].name != NULL) { - if (strcmp(constants[i].name, Argv[1].strptr) == 0) { - value = constants[i].value; + while (resp[i].name != NULL) { + if (strcmp(resp[i].name, Argv[1].strptr) == 0) { + value = resp[i].value; break; } i++; } /* Set up the Rexx return code */ - g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d", value); + if (resp == NULL) + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%s", Argv[1].strptr); + else + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d", value); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -142,7 +135,7 @@ const size_t Argc, const RXSTRING Argv[], const char * Queuename, PRXSTRING Retstr) { - CONSTANTS * constants; + GrxConstants *resp; gint value, i = 0; const gchar *str = "\0"; @@ -152,8 +145,8 @@ } // Get the correct structure address - if (strcmp(Argv[0].strptr, "GTK_RESPONSE_TYPE") == 0) - constants = constResponse; + if (strcmp(Argv[0].strptr, "GTKRESPONSETYPE") == 0) + resp = GrxResponseType; // else if (strcmp(Argv[0].strptr, "GTK_JUSTIFY_RIGHT") == 0) // jtype = GTK_JUSTIFY_RIGHT; else @@ -161,16 +154,19 @@ sscanf(Argv[1].strptr, "%d", &value); // Get the value - while (constants[i].name != NULL) { - if (constants[i].value == value) { - str = constants[i].name; + while (resp[i].name != NULL) { + if (resp[i].value == value) { + str = resp[i].name; break; } i++; } /* Set up the Rexx return code */ - g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%s", str); + if (resp == NULL) + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%s", Argv[1].strptr); + else + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%s", str); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/grxdialog.c =================================================================== --- sandbox/david/grxdialog.c 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/grxdialog.c 2008-01-25 15:01:12 UTC (rev 2304) @@ -333,7 +333,8 @@ const char * Queuename, PRXSTRING Retstr) { GtkWidget *myWidget; - gint resp; + gint response, i = 0; + GrxConstants *resp = GrxResponseType; /* Check for valid arguments */ if (GrxCheckArgs(1, Argc, Argv)) @@ -342,11 +343,22 @@ /* Initialize function parameters */ sscanf(Argv[0].strptr, "%p", &myWidget); - // add the button - resp = gtk_dialog_run(GTK_DIALOG(myWidget)); + // run the dialog + response = gtk_dialog_run(GTK_DIALOG(myWidget)); - /* Set up the REXX return code */ - g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d", resp); + // convert the response + while (resp[i].name != NULL) { + if (resp[i].value == response) { + break; + } + i++; + } + + /* Set up the Rexx return code */ + if (resp == NULL) + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d", response); + else + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%s", resp[i].name); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/rexxgtk.cls =================================================================== --- sandbox/david/rexxgtk.cls 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/rexxgtk.cls 2008-01-25 15:01:12 UTC (rev 2304) @@ -610,7 +610,7 @@ call GrxDialogAddButton self~pointer, text, resp return -::method run_dialog +::method dialog_run -- Note: the name of this method cannot be 'run' as that would override the -- private 'run' instance method of the ooRexx Object class. use strict arg @@ -2266,6 +2266,7 @@ use strict arg ptr = self~head list = .Array~new() +if ptr = 0 then return list do while ptr <> '(nil)' list~append(GrxGSListItem(ptr)) ptr = GrxGSListNext(ptr) @@ -2322,9 +2323,10 @@ use strict arg ptr = self~head list = .Array~new() -do while ptr <> 0 +if ptr = 0 then return list +do while ptr <> '(nil)' list~append(GrxGSListItem(ptr)) - ptr = GrxGSListNext(ptr) + ptr = GrxGListNext(ptr) end return list Modified: sandbox/david/rexxgtk.h =================================================================== --- sandbox/david/rexxgtk.h 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/rexxgtk.h 2008-01-25 15:01:12 UTC (rev 2304) @@ -62,6 +62,10 @@ #define RXFUNC_BADCALL 40 +typedef struct _constants { + const gchar * name; + const gint value; +} GrxConstants; /*----------------------------------------------------------------------------*/ @@ -71,7 +75,9 @@ extern char * rexxgtk_argv[]; extern int rexxgtk_argc; +extern GrxConstants GrxResponseType[]; + /*----------------------------------------------------------------------------*/ /* Function Prototypes */ /*----------------------------------------------------------------------------*/ Modified: sandbox/david/test5-1.rex =================================================================== --- sandbox/david/test5-1.rex 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/test5-1.rex 2008-01-25 15:01:12 UTC (rev 2304) @@ -90,7 +90,7 @@ dialog~vbox~pack_start_defaults(hbox) dialog~show_all() -dialog~run_dialog() +dialog~dialog_run() dialog~destroy() return Modified: sandbox/david/test5-1a.rex =================================================================== --- sandbox/david/test5-1a.rex 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/test5-1a.rex 2008-01-25 15:01:12 UTC (rev 2304) @@ -90,7 +90,7 @@ dialog~vbox~pack_start_defaults(hbox) dialog~show_all() -dialog~run_dialog() +dialog~dialog_run() dialog~destroy() return Modified: sandbox/david/test5-3.rex =================================================================== --- sandbox/david/test5-3.rex 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/test5-3.rex 2008-01-25 15:01:12 UTC (rev 2304) @@ -83,8 +83,8 @@ dialog~vbox~pack_start_defaults(table) dialog~show_all() -retc = dialog~run_dialog() -if Value2String('GTK_RESPONSE_TYPE', retc) = 'GTK_RESPONSE_OK' then do +retc = dialog~dialog_run() +if retc = 'GTK_RESPONSE_OK' then do say 'User Name:' user~get_text() say 'Real Name:' real~get_text() say 'Home Folder:' home~get_text() Modified: sandbox/david/test5-3a.rex =================================================================== --- sandbox/david/test5-3a.rex 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/test5-3a.rex 2008-01-25 15:01:12 UTC (rev 2304) @@ -83,8 +83,8 @@ dialog~vbox~pack_start_defaults(table) dialog~show_all() -retc = dialog~run_dialog() -if Value2String('GTK_RESPONSE_TYPE', retc) = 'GTK_RESPONSE_OK' then do +retc = dialog~dialog_run() +if retc = 'GTK_RESPONSE_OK' then do say 'User Name:' user~text say 'Real Name:' real~text say 'Home Folder:' home~text Modified: sandbox/david/test5-4.rex =================================================================== --- sandbox/david/test5-4.rex 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/test5-4.rex 2008-01-25 15:01:12 UTC (rev 2304) @@ -79,7 +79,7 @@ 'The button was clicked!') dialog~set_title('Information') -dialog~run_dialog() +dialog~dialog_run() dialog~destroy() return Modified: sandbox/david/test5-4a.rex =================================================================== --- sandbox/david/test5-4a.rex 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/test5-4a.rex 2008-01-25 15:01:12 UTC (rev 2304) @@ -79,7 +79,7 @@ 'The button was clicked!') dialog~title = 'Information' -dialog~run_dialog() +dialog~dialog_run() dialog~destroy() return Modified: sandbox/david/test5-5.rex =================================================================== --- sandbox/david/test5-5.rex 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/test5-5.rex 2008-01-25 15:01:12 UTC (rev 2304) @@ -66,7 +66,7 @@ dialog~show_all() -dialog~run_dialog() +dialog~dialog_run() dialog~destroy() return Modified: sandbox/david/test5-5a.rex =================================================================== --- sandbox/david/test5-5a.rex 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/test5-5a.rex 2008-01-25 15:01:12 UTC (rev 2304) @@ -66,7 +66,7 @@ dialog~show_all() -dialog~run_dialog() +dialog~dialog_run() dialog~destroy() return Modified: sandbox/david/test5-6.rex =================================================================== --- sandbox/david/test5-6.rex 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/test5-6.rex 2008-01-25 15:01:12 UTC (rev 2304) @@ -81,8 +81,8 @@ 'gtk-cancel', 'GTK_RESPONSE_CANCEL') dialog~add_button('gtk-save', 'GTK_RESPONSE_ACCEPT') -retc = dialog~run_dialog() -if Value2String('GTK_RESPONSE_TYPE', retc) = 'GTK_RESPONSE_ACCEPT' then do +retc = dialog~dialog_run() +if retc = 'GTK_RESPONSE_ACCEPT' then do filename = dialog~get_filename() self~set_label(filename) end Modified: sandbox/david/test5-6a.rex =================================================================== --- sandbox/david/test5-6a.rex 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/test5-6a.rex 2008-01-25 15:01:12 UTC (rev 2304) @@ -81,8 +81,8 @@ 'gtk-cancel', 'GTK_RESPONSE_CANCEL') dialog~add_button('gtk-save', 'GTK_RESPONSE_ACCEPT') -retc = dialog~run_dialog() -if Value2String('GTK_RESPONSE_TYPE', retc) = 'GTK_RESPONSE_ACCEPT' then do +retc = dialog~dialog_run() +if retc = 'GTK_RESPONSE_ACCEPT' then do filename = dialog~filename self~label = filename end Modified: sandbox/david/test5-7.rex =================================================================== --- sandbox/david/test5-7.rex 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/test5-7.rex 2008-01-25 15:01:12 UTC (rev 2304) @@ -49,8 +49,8 @@ 'gtk-cancel', 'GTK_RESPONSE_CANCEL') dialog~add_button('gtk-ok', 'GTK_RESPONSE_OK') -retc = dialog~run_dialog() -if Value2String('GTK_RESPONSE_TYPE', retc) = 'GTK_RESPONSE_OK' then do +retc = dialog~dialog_run() +if retc = 'GTK_RESPONSE_OK' then do filename = dialog~get_filename() say 'Creating directory:' filename end Modified: sandbox/david/test5-8.rex =================================================================== --- sandbox/david/test5-8.rex 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/test5-8.rex 2008-01-25 15:01:12 UTC (rev 2304) @@ -51,8 +51,8 @@ dialog~set_select_multiple(.true) -retc = dialog~run_dialog() -if Value2String('GTK_RESPONSE_TYPE', retc) = 'GTK_RESPONSE_ACCEPT' then do +retc = dialog~dialog_run() +if retc = 'GTK_RESPONSE_ACCEPT' then do filenames = dialog~get_filenames() do filename over filenames say filename 'was selected:' Modified: sandbox/david/test5-8a.rex =================================================================== --- sandbox/david/test5-8a.rex 2008-01-25 12:28:40 UTC (rev 2303) +++ sandbox/david/test5-8a.rex 2008-01-25 15:01:12 UTC (rev 2304) @@ -51,8 +51,8 @@ dialog~select_multiple = .true -retc = dialog~run_dialog() -if Value2String('GTK_RESPONSE_TYPE', retc) = 'GTK_RESPONSE_ACCEPT' then do +retc = dialog~dialog_run() +if retc = 'GTK_RESPONSE_ACCEPT' then do filenames = dialog~filenames do filename over filenames say filename 'was selected:' This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ant...@us...> - 2008-01-25 12:28:38
|
Revision: 2303 http://oorexx.svn.sourceforge.net/oorexx/?rev=2303&view=rev Author: antiguru Date: 2008-01-25 04:28:40 -0800 (Fri, 25 Jan 2008) Log Message: ----------- Update to rexxdoc. Added small front end, far away from being complete yet. Added Paths: ----------- incubator/rexxdoc/frontend.rex incubator/rexxdoc/rexxdoc.cls Removed Paths: ------------- incubator/rexxdoc/rexxdoc.rex Added: incubator/rexxdoc/frontend.rex =================================================================== --- incubator/rexxdoc/frontend.rex (rev 0) +++ incubator/rexxdoc/frontend.rex 2008-01-25 12:28:40 UTC (rev 2303) @@ -0,0 +1,49 @@ +use strict arg file +parser = .FileParser~new(file) +parser~parse +say parser~tree + +out = .stdout +out = .stream~new("doc.html")~~command("open replace") + +out~say("<html><head><title>") +out~say(parser~tree~name) +out~say("</title></head><body>") +printFile(parser~tree,out) +out~say("<h2>Required Files</h2>") +do r over parser~tree~requires + out~say("<strong>"r~getFile~name"</strong><br>") + printFile(r~getFile,out) +end + +out~say("</body></html>") +::REQUIRES "rexxdoc.cls" + +::ROUTINE doc2string + use arg doc + if doc~class \= .string then do + accu = "" + do d over doc + accu||=d"<br>" + end + return accu + end + else return doc"<br>" +::ROUTINE printFile + use arg tree, out + classes = tree~classes + out~say("<h1>Classes</h1>") + do o over classes + out~say('<a href="#'o~name'">'o~name||"</a><br>") + end + do o over classes + out~say('<a name="'o~name'"/><h2>'o~name"</h2>") + out~say(doc2string(o~doc)) + out~say("<h3>Methods</h3>") + methods = classes[o]~methods + do p over methods + out~say(p~name"<br>") + out~say(doc2string(p~doc)) + end + end +return "" \ No newline at end of file Copied: incubator/rexxdoc/rexxdoc.cls (from rev 2284, incubator/rexxdoc/rexxdoc.rex) =================================================================== --- incubator/rexxdoc/rexxdoc.cls (rev 0) +++ incubator/rexxdoc/rexxdoc.cls 2008-01-25 12:28:40 UTC (rev 2303) @@ -0,0 +1,797 @@ +/* Rexx source code documentation system */ +/** +* This is a set of classes to parse ooRexx source code and to extract +* information from it to create source code documentation. It parses +* all directives and collects comments belonging to them. +* @todo Add a RXDOC class, composite pattern +**/ +if .environment~FileParser = .nil then .environment~FileParser = .FileParser + +/** This is the main class for parsing rexx source files. It produces a parse +* tree that can be used to create a visualisation of the source. +*/ +::CLASS FileParser +/** This method returns the default options. A parser can be created with +* custom options, but they should be a modified copy of the default options. +*/ +::METHOD defaultOptions CLASS + expose defaultOptions + if var("defaultOptions") then return defaultOptions + + -- intialize the singleton variable with its default values + defaultOptions = .directory~new + defaultOptions["FOLLOW.REQUIRES"] = .true + defaultOptions["EVALUATE.CONTINUATION"] = .true + defaultOptions["WARN.AS.ERROR"] = .false + + return defaultOptions + +/** Initializer for the FileParser class. The first argument is the file name +* followed by optional options and a parent tree. The parent tree is only used +* internally. +*/ +::METHOD Init + expose file data tree has options parseState node + use strict arg file, options = (self~class~defaultOptions), parent = .nil + tree = .SourceFile~new(file, "", "", parent) + parseState = .ParseState~new(file,options) + has = .directory~new + node = .nil + +/** Call this method to start parsing a file. +*/ +::METHOD Parse + expose file data state options tree + buffer = .array~new + inDoc = .false + expectDefinition = .false + fileStream = .stream~new(file) + i = 0 + append = .false + prefix = "" + do while fileStream~lines > 0 + i+=1 + line = prefix||fileStream~lineIn~strip + -- handle continuation chars + lastChar = line~right(1) + -- check options if - and , at the end of line are to be evaluated + if options~evaluate.continuation then + -- only evaluate line continuation outside rxdoc sections + if state != "RXDOC" & lastChar = "," | lastChar = "-" then do + append = .true + -- cut the last character + prefix = line~left(line~length-1)||" " + end + else if append then do + append = .false + prefix = "" + end + + if \ append then do +-- say line + self~ParseState~lineNumber = i + self~ParseState~line = line + self~parseLine(line,i) + end + end + -- start resolving missing references only when this is the root parser + -- this method is propagated through the whole tree + if tree~parent = .nil then tree~resolve + +::ATTRIBUTE Tree Get +::ATTRIBUTE ParseState Get + +/** Get the current RXDOC and reset it +*/ +::METHOD getResetRxDoc PRIVATE + expose rxdoc + r = rxdoc + -- In future rxdoc will be a special object... + rxdoc = .rxdoc~new + return r + +/** The main parsing method. It maintains a state for the current parsing +* state. It creates parsers for source elements. +*/ +::METHOD parseLine PRIVATE + expose tree node state nextstate has accu rxdoc options + use arg line + if \ var("state") then state = "UNDETERMINED" +-- say state + select + -- the initial state, everything can follow + -- to avoid parsing wrong files there is a "has" directory that contains + -- all points that have been found so far. + when state = "UNDETERMINED" then do + if line~left(2) = "::" then repeat("DIRECTIVE") + else if line~left(3) = "/**" then repeat("RXDOC") + else if line~caselessPos(": procedure") > 0 then do + parse upper var line name": PROCEDURE" + if 0 = name~verify("ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890") then + repeat("PROCEDURE") + end + end + when state = "DIRECTIVE" then do + line = line~right(line~length - 2) + directive = line~word(1)~upper + parameters = line~delword(1) + select + -- parse routines + when directive = "ROUTINE" then do + rd = .RoutineDirective~new(self,options)~~parse(line,self~getResetRxDoc, tree) + tree~routines~put(rd~getObject) + node = .nil + end + when directive = "REQUIRES" & has~ClassMethod = .nil then do + rd = .RequiresDirective~new(self,options)~~parse(line,self~getResetRxDoc, tree) + tree~requires~put(rd~getObject) + end + -- parse ::CLASS + when directive = "CLASS" then do + has~ClassMethod = .true + cp = .ClassDirective~new(self)~~parse(line,self~getResetRxDoc,tree) + node = cp~getObject + tree~classes~put(node) + end + -- parse ::METHOD + when directive = "METHOD" then do + has~ClassMethod = .true + -- Is this a floating method or does it belong to some class? + if node \= .nil then + target = node + else + target = tree + mp = .MethodDirective~new(self)~~parse(line,self~getResetRxDoc,target) + method = mp~getObject + target~methods~put(method) + end + -- parse ::ATTRIBUTE + when directive = "ATTRIBUTE" then do + has~ClassMethod = .true + if node \= .nil then + target = node + else + target = tree + ad = .AttributeDirective~new(self, tree)~~parse(line,self~getResetRxDoc,target) + attribute = ad~getObject + target~methods~put(attribute) + end + -- parse ::CONSTANT + when directive = "CONSTANT" then do + if node = .nil then self~ParseState~error("Constant without class") + else do + cd = .ConstantDirective~new(self)~~parse(line,self~getResetRxDoc,node) + constant= cd~getObject + node~constants~put(constant) + end + end + otherwise do + self~ParseState~warn("Unknown directive:" directive) + end + end + state = "UNDETERMINED" + end + when state = "RXDOC" then do + if line~right(2) = "*/" then do + state = "UNDETERMINED" + rxdoc = accu + drop accu + end + else do + if tree~doc = .nil then + tree~doc = rxdoc + if \ var("accu") then accu = .rxdoc~new + -- "* " is needed to match only the last * char + parse var line "* " remain + accu~append(remain) + end + end +-- just ignore procedures now, this needs to be implemented + when state = "PROCEDURE" then do + state = "UNDETERMINED" + self~ParseState~warn("Procedure not evaluated") + end + otherwise do + self~ParseState~warn("Incorrect state reached:" state) + end + end + has~something = .true + return + + /** This procedure repeats the current parsing process for the current line + * with a different state. + * @arg state The new state for the current line. + **/ + repeat: procedure expose state line i self + use arg state + self~parseLine(line,i) + +/** A simple class to hold the parse state and to report warnings and errors. +*/ +::CLASS ParseState +::METHOD Init + expose fileName line lineNumber options + use strict arg fileName, options = (.FileParser~defaultOptions) + lineNumber = -1 + line = "" + +::ATTRIBUTE Line +::ATTRIBUTE FileName +::ATTRIBUTE LineNumber + +::METHOD Warn + expose fileName line lineNumber options + if options~warn.as.error then forward message "error" + use arg message + .stderr~say("W" fileName":"lineNUmber message) +::METHOD Error + expose fileName line lineNumber + use arg message + .stderr~say("E" fileName":"lineNUmber message) + + +::CLASS RXDOC +::METHOD Init + expose content + use strict arg + content = .array~new +::METHOD append + expose content + use strict arg what + content~append(what) +::METHOD MakeArray + expose content + if var("content") then return content~copy + else return .array~of("(No documentation available)") + +::CLASS Directive +::METHOD name Abstract +::METHOD parse Abstract +::METHOD getObject ABSTRACT + +::CLASS AttributeDirective SUBCLASS Directive +::METHOD Init + expose parser tree + use strict arg parser, tree +::ATTRIBUTE name Get +::METHOD parse + expose parser tree name attribute + use strict arg line, rxdoc, target + parse var line . name tokens + attribute = .SourceAttribute~new(name, "", rxdoc, target) + has_getOrSet = .false + has_guarded = .false + has_protected = .false + has_private = .false + has_class = .false + do j = 3 to line~words + modifier = line~word(j)~upper + select + when modifier = "GET" & has_getOrSet = .false then do + has_getOrSet = .true + attribute~setAccess("GET") + end + when modifier = "SET" & has_getOrSet = .false then do + has_getOrSet = .true + attribute~setAccess("SET") + end + when modifier = "GUARDED" & has_guarded = .false then do + has_guarded = .true + attribute~setGuarded + end + when modifier = "UNGUARDED" & has_guarded = .false then do + has_guarded = .true + attribute~setUnguarded + end + when modifier = "PROTECTED" & has_protected = .false then do + has_protected = .true + attribute~setProtected + end + when modifier = "UNPROTECTED" & has_protected = .false then do + has_protected = .true + attribute~setUnprotected + end + when modifier = "PRIVATE" & has_private = .false then do + has_private = .true + attribute~setPrivate + end + when modifier = "PUBLIC" & has_private = .false then do + has_private = .true + attribute~setPublic + end + when modifier = "CLASS" & has_class = .false then do + has_class = .true + attribute~setClassMethod + end + otherwise do + flags = "(" + if has_guarded then + if method~isGuarded then flags||="Guarded " + else flags||="Unguarded " + if has_protected then + if method~isProtected then flags||="Protected " + else flags||="Unptotected " + if has_private then + if method~isPrivate then flags||="Private " + else flags||="Public" + if has_class then flags||="Class" + flags ||= ")" + if flags = "()" then flags = "" + parser~ParseState~warn("Keyword error" modifier "attribute" name flags) + end + end + end +::METHOD getObject + expose attribute + return attribute + +::CLASS ClassDirective SUBCLASS Directive +::METHOD Init + expose parser + use strict arg parser +::METHOD name + expose name + return name +::METHOD getObject + expose class + return class +::METHOD parse + expose name class parser + use strict arg line, rxdoc, target = .nil + name = line~word(2) + class = .sourceclass~new(name,"",rxdoc,target) + has_metaclass = .false + has_mixinsubclass = .false + has_visibility = .false + has_inherit = .false + has_inherit_token = .false + tokens = line~space~makeArray(" ") + i = 3 + do while i <= tokens~size + token = tokens[i]~upper + select + when token = "METACLASS" & has_metaclass = .false & has_inherit = .false then do + has_metaclass = .true + i+=1 + t = tokens[i] + if t = .nil then parser~parseState~error("Missing symbol after METACLASS") + class~metaclass = t + end + when token = "SUBCLASS" & has_mixinsubclass = .false & has_inherit = .false then do + has_mixinsubclass = .true + i+=1 + t = tokens[i] + if t = .nil then parser~parseState~error("Missing symbol after SUBCLASS") + class~subclass = t + end + when token = "MIXINCLASS" & has_mixinsubclass = .false & has_inherit = .false then do + has_mixinsubclass = .true + i+=1 + t = tokens[i] + if t = .nil then parser~parseState~error("Missing symbol after MIXINCLASS") + class~mixinclass = t + end + when token = "PRIVATE" & has_visibility = .false & has_inherit = .false then do + has_visibility = .true + class~setPrivate + end + when token = "PUBLIC" & has_visibility = .false & has_inherit = .false then do + has_visibility = .true + class~setPublic + end + when token = "INHERIT" & has_metaclass = .false & has_inherit = .false then do + has_inherit = .true + end + when has_inherit then do + has_inherit_token = .true + class~inherit~append(token) + end + otherwise parser~ParseState~error("Keyword error" token", class" name) + end + i+=1 + end + if has_inherit & \ has_inherit_token then + parser~ParseState~error("Missing symbol after INHERIT") + +::CLASS ConstantDirective SUBCLASS Directive +::METHOD Init + expose parser + use strict arg parser +::ATTRIBUTE name Get +::METHOD parse + expose parser name sourceConstant + use strict arg line, doc, target + parse var line . name value + if name = "" then + parser~parseState("Missing name for constant") + sourceConstant = .SourceConstant~new(name, "", doc, target) + sourceConstant~setValue(value) + +::METHOD getObject + expose sourceConstant + return sourceConstant + +::CLASS MethodDirective SUBCLASS Directive +::METHOD Init + expose parser + use strict arg parser +::METHOD name + expose name + return name +::METHOD getObject + expose method + return method +::METHOD parse + expose name method parser + use strict arg line, rxdoc, target + name = line~word(2) + method = .SourceMethod~new(name, "", rxdoc, target) + has_guarded = .false + has_protected = .false + has_private = .false + has_class = .false + has_abstract = .false + has_attribute = .false + do j = 3 to line~words + modifier = line~word(j)~upper + select + when modifier = "GUARDED" & has_guarded = .false then do + has_guarded = .true + method~setGuarded + end + when modifier = "UNGUARDED" & has_guarded = .false then do + has_guarded = .true + method~setUnguarded + end + when modifier = "PROTECTED" & has_protected = .false then do + has_protected = .true + method~setProtected + end + when modifier = "UNPROTECTED" & has_protected = .false then do + has_protected = .true + method~setUnprotected + end + when modifier = "PRIVATE" & has_private = .false then do + has_private = .true + method~setPrivate + end + when modifier = "PUBLIC" & has_private = .false then do + has_private = .true + method~setPublic + end + when modifier = "CLASS" & has_class = .false then do + has_class = .true + method~setClassMethod + end + when modifier = "ATTRIBUTE" & has_attribute = .false & has_abstract = .false then do + has_attribute = .true + method~setAttribute + end + when modifier = "ABSTRACT" & has_abstract = .false & has_attribute = .false then do + has_abstract = .true + method~setAbstract + end + otherwise do + flags = "(" + if has_guarded then + if method~isGuarded then flags="Guarded " + else flags="Unguarded " + if has_protected then + if method~isProtected then flags||="Protected " + else flags||="Unptotected " + if has_private then + if method~isPrivate then flags||="Private " + else flags||="Public " + if has_class then flags||="Class " + if has_attribute then flags||="Attribute " + if has_abstract then flags||="Abstract " + flags ||= ")" + if flags = "()" then flags = "" + parser~ParseState~warn("Keyword error" modifier "method" name flags) + end + end + end + +::CLASS RequiresDirective SUBCLASS Directive +::METHOD Init + expose parser options + use strict arg parser, options +::ATTRIBUTE name Get +::METHOD getObject + expose sourceRequires + use strict arg + return sourceRequires +::METHOD parse + expose parser name sourceRequires options + use strict arg line, rxdoc, parent + parse var line '"'name'"' + if name = "" then parse var line . name + sourceRequires = .SourceRequires~new(name, rxdoc, parent, options) + +::CLASS RoutineDirective SUBCLASS Directive +::METHOD Init + expose parser options + use strict arg parser, options +::ATTRIBUTE name Get +::METHOD getObject + expose sourceRoutine + use strict arg + return sourceRoutine +::METHOD parse + expose parser name sourceRoutine options + use strict arg line, rxdoc, parent + parse var line . name visibility + sourceRoutine = .SourceRoutine~new(name,"",rxdoc,parent) + if visibility \= "" then + if visibility~caselessEquals("PRIVATE") then + sourceRoutine~setPrivate + else if visibility~caselessEquals("PUBLIC") then + sourceRoutine~setPublic + else parser~ParseState~error("Invalid option" visibility "on routine" name) + +::CLASS Tag +::METHOD name ABSTRACT +::METHOD parse ABSTRACT +::CLASS paramTag SUBCLASS Tag +::CLASS returnTag SUBCLASS Tag +::CLASS sinceTag SUBCLASS Tag +::CLASS seeTag SUBCLASS TAg + + +::CLASS SourceElement +::METHOD INIT + expose name source doc parent + doc = .nil + parent = .nil + source = .nil + use strict arg name source doc parent + +::ATTRIBUTE Name Get +::ATTRIBUTE Source Get +::ATTRIBUTE Doc +::ATTRIBUTE Parent Get + +::METHOD resolve ABSTRACT + +::CLASS SourceFile SUBCLASS SourceElement +::METHOD INIT + expose classes methods routines packageDoc name requires + classes = .set~new + methods = .set~new + routines = .set~new + requires = .set~new + + if arg() = 1 then use strict arg name + else forward class (super) + +::ATTRIBUTE Classes Get +::ATTRIBUTE Methods Get +::ATTRIBUTE Routines Get +::ATTRIBUTE Requires Get + +::METHOD resolve + expose classes methods requires routines + do require over requires + require~resolve + end + do class over classes + class~resolve + end + do method over methods + method~resolve + end + do routine over routines + routine~resolve + end + +/** Recursive method to find a class with a matching name + * This method searches the whole parse tree for a matching class. + * It tries to reassemble the class resolution code from the ooRexx + * interpreter. + **/ +::METHOD getClass + expose classes requires + use strict arg name, include_private = .true, recurse = .true + found = .false + if name = .nil then return "NIL" + -- search local classes + do class over classes + if class~name~caselessEquals(name) then do + if class~isPublic | include_private then do + found = .true + leave + end + end + end + if \ found then do + if recurse then + do req over requires + file = req~getFile + if file \= .nil then + class = file~getClass(name,.false, .false) + end + if self~parent \= .nil then + class = self~parent~getClass(name,false, .false) + else class = name + end +-- if \ class~isinstanceOf(.string) then say class~name +-- else say "not found:"name + return class + +::CLASS SourceClass SUBCLASS SourceElement +::METHOD INIT + expose methods attributes private inherit metaclass subclass mixinclass constants + methods = .set~new + attributes = .set~new + constants = .set~new + inherit = .list~new + private = .true + metaclass = .nil + subclass = "OBJECT" + mixinclass = .nil + forward class (super) + +::METHOD resolve + expose methods attributes metaclass subclass mixinclass inherit + do method over methods + method~resolve + end + do attribute over attributes + attribute~resolve + end + if metaclass \= .nil then + metaclass = self~parent~getClass(metaclass) + subclass = self~parent~getClass(subclass) + mixinclass = self~parent~getClass(mixinclass) + new_inherit = .list~new + do i over inherit + new_inherit~append(self~parent~getClass(i)) + end + inherit = new_inherit + +::ATTRIBUTE Methods Get +::ATTRIBUTE attributes Get +::ATTRIBUTE constants Get + +::ATTRIBUTE Metaclass +::ATTRIBUTE Subclass +::ATTRIBUTE Mixinclass +::METHOD isPrivate + expose private; return private +::METHOD setPrivate + expose private; private = .true +::METHOD isPublic + expose private; return \private +::METHOD setPublic + expose private; private = .false +::ATTRIBUTE Inherit GET + +-- this method must be enhanced to seach super classes +::METHOD getMethod + expose methods + use strict arg name + do sm over methods + if sm~name~caselessEquals(name) then if \ sm~isClassMethod then return sm + end + return .nil +-- are class methods inheritable??? +::METHOD getClassMethod + expose methods + use strict arg name + do sm over methods + if sm~name~caselessEquals(name) then if \ sm~isClassMethod then return sm + end + return .nil + +::CLASS SourceAbstractMethod SUBCLASS SourceElement +::METHOD Init + expose guarded protected private + guarded = .true + protected = .false + private = .false + class = .false + abstract = .false + forward class (super) + +::METHOD resolve +::METHOD isGuarded + expose guarded; return guarded +::METHOD isUnguarded + expose guarded; return \guarded + +::METHOD setGuarded + expose guarded; guarded = .true +::METHOD setUnguarded + expose guarded; guarded = .false + +::METHOD isProtected + expose protected; return protected +::METHOD isUnprotect + expose protected; return \protected +::METHOD setProtected + expose protected; protected = .true +::METHOD setUnprotected + expose protected; protected = .false + +::METHOD isPrivate + expose private; return private +::METHOD isPublic + expose private; return \private +::METHOD setPrivate + expose private; private = .true +::METHOD setPublic + expose private; private = .false + +::METHOD isClassMethod + expoes class; return class +::METHOD setClassMethod + expose class; class = .true + +::CLASS SourceMethod SUBCLASS SourceAbstractMethod +::METHOD Init + expose attribute + attribute = .false + forward class (super) + +::METHOD isAttribute + expose attribute; return attribute +::METHOD setAttribute + expose attribute; attribute = .true + +::METHOD isAbstract + expose abstract; return abstract +::METHOD setAbstract + expose abstract; abstract = .true + +::CLASS SourceAttribute SUBCLASS SourceElement +::METHOD Init + expose access + access = "SET/GET" + forward class (super) + +::METHOD setAccess + expose access; use arg access +::METHOD getAccess + expose access; use arg access +::METHOD resolve + +::CLASS SourceConstant SUBCLASS SourceElement +::METHOD resolve +::METHOD setValue + expose value; use strict arg value +::METHOD getValue + expose value; return value + +::CLASS SourceRoutine SUBCLASS SourceElement +::METHOD Init + expose private + private = .false + forward class (super) +::METHOD resolve +::METHOD isPrivate + expose private; return private +::METHOD isPublic + expose private; return \ private +::METHOD setPublic + expose private; private = .false +::METHOD setPrivate + expose private; private = .true +::CLASS SourceProcedure SUBCLASS SourceElement +::METHOD resolve + +::CLASS SourceRequires SUBCLASS SourceElement +::METHOD Init + expose options sourceFile + use strict arg name,rxdoc, target, options + sourceFile = .nil + forward class (super) array (name, "", rxdoc, target) +::METHOD resolve + expose options sourceFile + if options~follow.requires then do + sourceFile = .FileParser~new(self~name,options,self~parent)~~parse~tree + -- the fileParse does not do this automatically here + sourceFile~resolve + end +::METHOD getFile + expose sourceFile + return sourceFile \ No newline at end of file Deleted: incubator/rexxdoc/rexxdoc.rex =================================================================== --- incubator/rexxdoc/rexxdoc.rex 2008-01-24 23:20:06 UTC (rev 2302) +++ incubator/rexxdoc/rexxdoc.rex 2008-01-25 12:28:40 UTC (rev 2303) @@ -1,785 +0,0 @@ -/* Rexx source code documentation system */ -/** -* This is a set of classes to parse ooRexx source code and to extract -* information from it to create source code documentation. It parses -* all directives and collects comments belonging to them. -* @todo Add a RXDOC class, composite pattern -**/ -use strict arg file -parser = .FileParser~new(file) -parser~parse -say parser~tree -classes = parser~tree~classes -do o over classes - say o - say classes[o]~doc~makestring - methods = classes[o]~methods - do p over methods - say " "p - say methods[p]~doc - end -end -do r over parser~tree~requires - say r~string r~getFile~string r~getFile~name -end - -::CLASS FileParser -::METHOD defaultOptions CLASS - expose defaultOptions - if var("defaultOptions") then return defaultOptions - - -- intialize the singleton variable with its default values - defaultOptions = .directory~new - defaultOptions["FOLLOW.REQUIRES"] = .true - defaultOptions["EVALUATE.CONTINUATION"] = .true - defaultOptions["WARN.AS.ERROR"] = .false - - return defaultOptions - -::METHOD Init - expose file data tree has options parseState node - use strict arg file, options = (self~class~defaultOptions), parent = .nil - tree = .SourceFile~new(file, "", "", parent) - parseState = .ParseState~new(file,options) - has = .directory~new - node = .nil - -::METHOD Parse - expose file data state options tree - buffer = .array~new - inDoc = .false - expectDefinition = .false - fileStream = .stream~new(file) - i = 0 - append = .false - prefix = "" - do while fileStream~lines > 0 - i+=1 - line = prefix||fileStream~lineIn~strip - -- handle continuation chars - lastChar = line~right(1) - -- check options if - and , at the end of line are to be evaluated - if options~evaluate.continuation then - -- only evaluate line continuation outside rxdoc sections - if state != "RXDOC" & lastChar = "," | lastChar = "-" then do - append = .true - -- cut the last character - prefix = line~left(line~length-1)||" " - end - else if append then do - append = .false - prefix = "" - end - - if \ append then do --- say line - self~ParseState~lineNumber = i - self~ParseState~line = line - self~parseLine(line,i) - end - end - -- start resolving missing references only when this is the root parser - -- this method is propagated through the whole tree - if tree~parent = .nil then tree~resolve - -::ATTRIBUTE Tree Get -::ATTRIBUTE ParseState Get - -::METHOD getResetRxDoc - expose rxdoc - r = rxdoc - -- In future rxdoc will be a special object... - rxdoc = "(No documentation)" - return r - -::METHOD parseLine PRIVATE - expose tree node state nextstate has accu rxdoc options - use arg line - if \ var("state") then state = "UNDETERMINED" --- say state - select - -- the initial state, everything can follow - -- to avoid parsing wrong files there is a "has" directory that contains - -- all points that have been found so far. - when state = "UNDETERMINED" then do - if line~left(2) = "::" then repeat("DIRECTIVE") - else if line~left(3) = "/**" then repeat("RXDOC") - else if line~caselessPos(": procedure") > 0 then do - parse upper var line name": PROCEDURE" - if 0 = name~verify("ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890") then - repeat("PROCEDURE") - end - end - when state = "DIRECTIVE" then do - line = line~right(line~length - 2) - directive = line~word(1)~upper - parameters = line~delword(1) - select - -- parse routines - when directive = "ROUTINE" then do - rd = .RoutineDirective~new(self,options)~~parse(line,self~getResetRxDoc, tree) - tree~routines~put(rd~getObject) - node = .nil - end - when directive = "REQUIRES" & has~ClassMethod = .nil then do - rd = .RequiresDirective~new(self,options)~~parse(line,self~getResetRxDoc, tree) - tree~requires~put(rd~getObject) - end - -- parse ::CLASS - when directive = "CLASS" then do - has~ClassMethod = .true - cp = .ClassDirective~new(self)~~parse(line,self~getResetRxDoc,tree) - node = cp~getObject - tree~classes~put(node) - end - -- parse ::METHOD - when directive = "METHOD" then do - has~ClassMethod = .true - -- Is this a floating method or does it belong to some class? - if node \= .nil then - target = node - else - target = tree - mp = .MethodDirective~new(self)~~parse(line,self~getResetRxDoc,target) - method = mp~getObject - target~methods~put(method) - end - -- parse ::ATTRIBUTE - when directive = "ATTRIBUTE" then do - has~ClassMethod = .true - if node \= .nil then - target = node - else - target = tree - ad = .AttributeDirective~new(self, tree)~~parse(line,self~getResetRxDoc,target) - attribute = ad~getObject - target~methods~put(attribute) - end - -- parse ::CONSTANT - when directive = "CONSTANT" then do - if node = .nil then self~ParseState~error("Constant without class") - else do - cd = .ConstantDirective~new(self)~~parse(line,self~getResetRxDoc,node) - constant= cd~getObject - node~constants~put(constant) - end - end - otherwise do - self~ParseState~warn("Unknown directive:" directive) - end - end - state = "UNDETERMINED" - end - when state = "RXDOC" then do - if line~right(2) = "*/" then do - state = "UNDETERMINED" - rxdoc = accu - drop accu - end - else do - if tree~doc = .nil then - tree~doc = rxdoc - if \ var("accu") then accu = .array~new - -- "* " is needed to match only the last * char - parse var line "* " remain - accu~append(remain) - end - end --- just ignore procedures now, this needs to be implemented - when state = "PROCEDURE" then do - state = "UNDETERMINED" - self~ParseState~warn("Procedure not evaluated") - end - otherwise do - self~ParseState~warn("Incorrect state reached:" state) - end - end - has~something = .true - return - - /** This procedure repeats the current parsing process for the current line - * with a different state. - * @arg state The new state for the current line. - **/ - repeat: procedure expose state line i self - use arg state - self~parseLine(line,i) - -::METHOD parseClass PRIVATE - use arg line buffer - name = line~word(2) - return .SourceClass~new(name, "", buffer, "") - -::CLASS ParseState -::METHOD Init - expose fileName line lineNumber options - use strict arg fileName, options = (.FileParser~defaultOptions) - lineNumber = -1 - line = "" - -::ATTRIBUTE Line -::ATTRIBUTE FileName -::ATTRIBUTE LineNumber - -::METHOD Warn - expose fileName line lineNumber options - if options~warn.as.error then forward message "error" - use arg message - .stderr~say("W" fileName":"lineNUmber message) -::METHOD Error - expose fileName line lineNumber - use arg message - .stderr~say("E" fileName":"lineNUmber message) - - -::CLASS Directive -::METHOD name Abstract -::METHOD parse Abstract -::METHOD getObject ABSTRACT - -::CLASS AttributeDirective SUBCLASS Directive -::METHOD Init - expose parser tree - use strict arg parser, tree -::ATTRIBUTE name Get -::METHOD parse - expose parser tree name attribute - use strict arg line, rxdoc, target - parse var line . name tokens - attribute = .SourceAttribute~new(name, "", rxdoc, target) - has_getOrSet = .false - has_guarded = .false - has_protected = .false - has_private = .false - has_class = .false - do j = 3 to line~words - modifier = line~word(j)~upper - select - when modifier = "GET" & has_getOrSet = .false then do - has_getOrSet = .true - attribute~setAccess("GET") - end - when modifier = "SET" & has_getOrSet = .false then do - has_getOrSet = .true - attribute~setAccess("SET") - end - when modifier = "GUARDED" & has_guarded = .false then do - has_guarded = .true - attribute~setGuarded - end - when modifier = "UNGUARDED" & has_guarded = .false then do - has_guarded = .true - attribute~setUnguarded - end - when modifier = "PROTECTED" & has_protected = .false then do - has_protected = .true - attribute~setProtected - end - when modifier = "UNPROTECTED" & has_protected = .false then do - has_protected = .true - attribute~setUnprotected - end - when modifier = "PRIVATE" & has_private = .false then do - has_private = .true - attribute~setPrivate - end - when modifier = "PUBLIC" & has_private = .false then do - has_private = .true - attribute~setPublic - end - when modifier = "CLASS" & has_class = .false then do - has_class = .true - attribute~setClassMethod - end - otherwise do - flags = "(" - if has_guarded then - if method~isGuarded then flags||="Guarded " - else flags||="Unguarded " - if has_protected then - if method~isProtected then flags||="Protected " - else flags||="Unptotected " - if has_private then - if method~isPrivate then flags||="Private " - else flags||="Public" - if has_class then flags||="Class" - flags ||= ")" - if flags = "()" then flags = "" - parser~ParseState~warn("Keyword error" modifier "attribute" name flags) - end - end - end -::METHOD getObject - expose attribute - return attribute - -::CLASS ClassDirective SUBCLASS Directive -::METHOD Init - expose parser - use strict arg parser -::METHOD name - expose name - return name -::METHOD getObject - expose class - return class -::METHOD parse - expose name class parser - use strict arg line, rxdoc, target = .nil - name = line~word(2) - class = .sourceclass~new(name,"",rxdoc,target) - has_metaclass = .false - has_mixinsubclass = .false - has_visibility = .false - has_inherit = .false - has_inherit_token = .false - tokens = line~space~makeArray(" ") - i = 3 - do while i <= tokens~size - token = tokens[i]~upper - select - when token = "METACLASS" & has_metaclass = .false & has_inherit = .false then do - has_metaclass = .true - i+=1 - t = tokens[i] - if t = .nil then parser~parseState~error("Missing symbol after METACLASS") - class~metaclass = t - end - when token = "SUBCLASS" & has_mixinsubclass = .false & has_inherit = .false then do - has_mixinsubclass = .true - i+=1 - t = tokens[i] - if t = .nil then parser~parseState~error("Missing symbol after SUBCLASS") - class~subclass = t - end - when token = "MIXINCLASS" & has_mixinsubclass = .false & has_inherit = .false then do - has_mixinsubclass = .true - i+=1 - t = tokens[i] - if t = .nil then parser~parseState~error("Missing symbol after MIXINCLASS") - class~mixinclass = t - end - when token = "PRIVATE" & has_visibility = .false & has_inherit = .false then do - has_visibility = .true - class~setPrivate - end - when token = "PUBLIC" & has_visibility = .false & has_inherit = .false then do - has_visibility = .true - class~setPublic - end - when token = "INHERIT" & has_metaclass = .false & has_inherit = .false then do - has_inherit = .true - end - when has_inherit then do - has_inherit_token = .true - class~inherit~append(token) - end - otherwise parser~ParseState~error("Keyword error" token", class" name) - end - i+=1 - end - if has_inherit & \ has_inherit_token then - parser~ParseState~error("Missing symbol after INHERIT") - -::CLASS ConstantDirective SUBCLASS Directive -::METHOD Init - expose parser - use strict arg parser -::ATTRIBUTE name Get -::METHOD parse - expose parser name sourceConstant - use strict arg line, doc, target - parse var line . name value - if name = "" then - parser~parseState("Missing name for constant") - sourceConstant = .SourceConstant~new(name, "", doc, target) - sourceConstant~setValue(value) - -::METHOD getObject - expose sourceConstant - return sourceConstant - -::CLASS MethodDirective SUBCLASS Directive -::METHOD Init - expose parser - use strict arg parser -::METHOD name - expose name - return name -::METHOD getObject - expose method - return method -::METHOD parse - expose name method parser - use strict arg line, rxdoc, target - name = line~word(2) - method = .SourceMethod~new(name, "", rxdoc, target) - has_guarded = .false - has_protected = .false - has_private = .false - has_class = .false - has_abstract = .false - has_attribute = .false - do j = 3 to line~words - modifier = line~word(j)~upper - select - when modifier = "GUARDED" & has_guarded = .false then do - has_guarded = .true - method~setGuarded - end - when modifier = "UNGUARDED" & has_guarded = .false then do - has_guarded = .true - method~setUnguarded - end - when modifier = "PROTECTED" & has_protected = .false then do - has_protected = .true - method~setProtected - end - when modifier = "UNPROTECTED" & has_protected = .false then do - has_protected = .true - method~setUnprotected - end - when modifier = "PRIVATE" & has_private = .false then do - has_private = .true - method~setPrivate - end - when modifier = "PUBLIC" & has_private = .false then do - has_private = .true - method~setPublic - end - when modifier = "CLASS" & has_class = .false then do - has_class = .true - method~setClassMethod - end - when modifier = "ATTRIBUTE" & has_attribute = .false & has_abstract = .false then do - has_attribute = .true - method~setAttribute - end - when modifier = "ABSTRACT" & has_abstract = .false & has_attribute = .false then do - has_abstract = .true - method~setAbstract - end - otherwise do - flags = "(" - if has_guarded then - if method~isGuarded then flags="Guarded " - else flags="Unguarded " - if has_protected then - if method~isProtected then flags||="Protected " - else flags||="Unptotected " - if has_private then - if method~isPrivate then flags||="Private " - else flags||="Public " - if has_class then flags||="Class " - if has_attribute then flags||="Attribute " - if has_abstract then flags||="Abstract " - flags ||= ")" - if flags = "()" then flags = "" - parser~ParseState~warn("Keyword error" modifier "method" name flags) - end - end - end - -::CLASS RequiresDirective SUBCLASS Directive -::METHOD Init - expose parser options - use strict arg parser, options -::ATTRIBUTE name Get -::METHOD getObject - expose sourceRequires - use strict arg - return sourceRequires -::METHOD parse - expose parser name sourceRequires options - use strict arg line, rxdoc, parent - parse var line '"'name'"' - if name = "" then parse var line . name - sourceRequires = .SourceRequires~new(name, rxdoc, parent, options) - -::CLASS RoutineDirective SUBCLASS Directive -::METHOD Init - expose parser options - use strict arg parser, options -::ATTRIBUTE name Get -::METHOD getObject - expose sourceRoutine - use strict arg - return sourceRoutine -::METHOD parse - expose parser name sourceRoutine options - use strict arg line, rxdoc, parent - parse var line . name visibility - sourceRoutine = .SourceRoutine~new(name,"",rxdoc,parent) - if visibility \= "" then - if visibility~caselessEquals("PRIVATE") then - sourceRoutine~setPrivate - else if visibility~caselessEquals("PUBLIC") then - sourceRoutine~setPublic - else parser~ParseState~error("Invalid option" visibility "on routine" name) - -::CLASS Tag -::METHOD name ABSTRACT -::METHOD parse ABSTRACT -::CLASS paramTag SUBCLASS Tag -::CLASS returnTag SUBCLASS Tag -::CLASS sinceTag SUBCLASS Tag -::CLASS seeTag SUBCLASS TAg - - -::CLASS SourceElement -::METHOD INIT - expose name source doc parent - doc = .nil - parent = .nil - source = .nil - use strict arg name source doc parent - -::ATTRIBUTE Name Get -::ATTRIBUTE Source Get -::ATTRIBUTE Doc -::ATTRIBUTE Parent Get - -::METHOD resolve ABSTRACT - -::CLASS SourceFile SUBCLASS SourceElement -::METHOD INIT - expose classes methods routines packageDoc name requires - classes = .set~new - methods = .set~new - routines = .set~new - requires = .set~new - - if arg() = 1 then use strict arg name - else forward class (super) - -::ATTRIBUTE Classes Get -::ATTRIBUTE Methods Get -::ATTRIBUTE Routines Get -::ATTRIBUTE Requires Get - -::METHOD resolve - expose classes methods requires routines - do require over requires - require~resolve - end - do class over classes - class~resolve - end - do method over methods - method~resolve - end - do routine over routines - routine~resolve - end - -/** Recursive method to find a class with a matching name - * This method searches the whole parse tree for a matching class. - * It tries to reassemble the class resolution code from the ooRexx - * interpreter. - **/ -::METHOD getClass - expose classes requires - use strict arg name, include_private = .true, recurse = .true - found = .false - if name = .nil then return "NIL" - -- search local classes - do class over classes - if class~name~caselessEquals(name) then do - if class~isPublic | include_private then do - found = .true - leave - end - end - end - if \ found then do - if recurse then - do req over requires - file = req~getFile - if file \= .nil then - class = file~getClass(name,.false, .false) - end - if self~parent \= .nil then - class = self~parent~getClass(name,false, .false) - else class = name - end --- if \ class~isinstanceOf(.string) then say class~name --- else say "not found:"name - return class - -::CLASS SourceClass SUBCLASS SourceElement -::METHOD INIT - expose methods attributes private inherit metaclass subclass mixinclass constants - methods = .set~new - attributes = .set~new - constants = .set~new - inherit = .list~new - private = .true - metaclass = .nil - subclass = "OBJECT" - mixinclass = .nil - forward class (super) - -::METHOD resolve - expose methods attributes metaclass subclass mixinclass inherit - do method over methods - method~resolve - end - do attribute over attributes - attribute~resolve - end - if metaclass \= .nil then - metaclass = self~parent~getClass(metaclass) - subclass = self~parent~getClass(subclass) - mixinclass = self~parent~getClass(mixinclass) - new_inherit = .list~new - do i over inherit - new_inherit~append(self~parent~getClass(i)) - end - inherit = new_inherit - -::ATTRIBUTE Methods Get -::ATTRIBUTE attributes Get -::ATTRIBUTE constants Get - -::ATTRIBUTE Metaclass -::ATTRIBUTE Subclass -::ATTRIBUTE Mixinclass -::METHOD isPrivate - expose private; return private -::METHOD setPrivate - expose private; private = .true -::METHOD isPublic - expose private; return \private -::METHOD setPublic - expose private; private = .false -::ATTRIBUTE Inherit GET - --- this method must be enhanced to seach super classes -::METHOD getMethod - expose methods - use strict arg name - do sm over methods - if sm~name~caselessEquals(name) then if \ sm~isClassMethod then return sm - end - return .nil --- are class methods inheritable??? -::METHOD getClassMethod - expose methods - use strict arg name - do sm over methods - if sm~name~caselessEquals(name) then if \ sm~isClassMethod then return sm - end - return .nil - -::CLASS SourceAbstractMethod SUBCLASS SourceElement -::METHOD Init - expose guarded protected private - guarded = .true - protected = .false - private = .false - class = .false - abstract = .false - forward class (super) - -::METHOD resolve -::METHOD isGuarded - expose guarded; return guarded -::METHOD isUnguarded - expose guarded; return \guarded - -::METHOD setGuarded - expose guarded; guarded = .true -::METHOD setUnguarded - expose guarded; guarded = .false - -::METHOD isProtected - expose protected; return protected -::METHOD isUnprotect - expose protected; return \protected -::METHOD setProtected - expose protected; protected = .true -::METHOD setUnprotected - expose protected; protected = .false - -::METHOD isPrivate - expose private; return private -::METHOD isPublic - expose private; return \private -::METHOD setPrivate - expose private; private = .true -::METHOD setPublic - expose private; private = .false - -::METHOD isClassMethod - expoes class; return class -::METHOD setClassMethod - expose class; class = .true - -::CLASS SourceMethod SUBCLASS SourceAbstractMethod -::METHOD Init - expose attribute - attribute = .false - forward class (super) - -::METHOD isAttribute - expose attribute; return attribute -::METHOD setAttribute - expose attribute; attribute = .true - -::METHOD isAbstract - expose abstract; return abstract -::METHOD setAbstract - expose abstract; abstract = .true - -::CLASS SourceAttribute SUBCLASS SourceElement -::METHOD Init - expose access - access = "SET/GET" - forward class (super) - -::METHOD setAccess - expose access; use arg access -::METHOD getAccess - expose access; use arg access -::METHOD resolve - -::CLASS SourceConstant SUBCLASS SourceElement -::METHOD resolve -::METHOD setValue - expose value; use strict arg value -::METHOD getValue - expose value; return value - -::CLASS SourceRoutine SUBCLASS SourceElement -::METHOD Init - expose private - private = .false - forward class (super) -::METHOD resolve -::METHOD isPrivate - expose private; return private -::METHOD isPublic - expose private; return \ private -::METHOD setPublic - expose private; private = .false -::METHOD setPrivate - expose private; private = .true -::CLASS SourceProcedure SUBCLASS SourceElement -::METHOD resolve - -::CLASS SourceRequires SUBCLASS SourceElement -::METHOD Init - expose options sourceFile - use strict arg name,rxdoc, target, options - sourceFile = .nil - forward class (super) array (name, "", rxdoc, target) -::METHOD resolve - expose options sourceFile - if options~follow.requires then do - sourceFile = .FileParser~new(self~name,options,self~parent)~~parse~tree - -- the fileParse does not do this automatically here - sourceFile~resolve - end -::METHOD getFile - expose sourceFile - return sourceFile \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wda...@us...> - 2008-01-24 23:20:04
|
Revision: 2302 http://oorexx.svn.sourceforge.net/oorexx/?rev=2302&view=rev Author: wdashley Date: 2008-01-24 15:20:06 -0800 (Thu, 24 Jan 2008) Log Message: ----------- ArtifactID: None Comment: Added some functions to convert strings to type values and the reverse. Modified Paths: -------------- sandbox/david/Makefile sandbox/david/Makefile.win sandbox/david/rexxgtk.c sandbox/david/rexxgtk.cls sandbox/david/test5-3.rex sandbox/david/test5-3a.rex sandbox/david/test5-6.rex sandbox/david/test5-6a.rex sandbox/david/test5-7.rex sandbox/david/test5-8.rex sandbox/david/test5-8a.rex Added Paths: ----------- sandbox/david/grxconstants.c Modified: sandbox/david/Makefile =================================================================== --- sandbox/david/Makefile 2008-01-24 19:33:51 UTC (rev 2301) +++ sandbox/david/Makefile 2008-01-24 23:20:06 UTC (rev 2302) @@ -64,7 +64,8 @@ grxfilefilter.o \ grximage.o \ grxdialog.o \ - grxglib.o + grxglib.o \ + grxconstants.o # Build the shared library @@ -136,8 +137,11 @@ grxglib.o: grxglib.c rexxgtk.h gcc -c $(GRXCFLAGS) grxglib.c +grxconstants.o: grxconstants.c rexxgtk.h + gcc -c $(GRXCFLAGS) grxconstants.c + clean: rm *.so *.o Modified: sandbox/david/Makefile.win =================================================================== --- sandbox/david/Makefile.win 2008-01-24 19:33:51 UTC (rev 2301) +++ sandbox/david/Makefile.win 2008-01-24 23:20:06 UTC (rev 2302) @@ -116,7 +116,8 @@ grxfilefilter.obj \ grximage.obj \ grxdialog.obj \ - grxglib.obj + grxglib.obj \ + grxconstants.obj # Build the DLL rexxgtk.dll: $(OBJECTS) rexxgtk.def @@ -186,7 +187,10 @@ grxglib.obj: grxglib.c rexxgtk.h cl -c $(GRXCFLAGS) grxglib.c +grxconstants.obj: grxconstants.c rexxgtk.h + cl -c $(GRXCFLAGS) grxconstants.c + clean: del *.dll *.obj *.pdb *.lib *.exp *.map Added: sandbox/david/grxconstants.c =================================================================== --- sandbox/david/grxconstants.c (rev 0) +++ sandbox/david/grxconstants.c 2008-01-24 23:20:06 UTC (rev 2302) @@ -0,0 +1,178 @@ +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2007-2008 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Authors; */ +/* W. David Ashley <da...@us...> */ +/* */ +/*----------------------------------------------------------------------------*/ + + +/* include the linux headers and our local stuff */ +#include "rexxgtk.h" + + +/*----------------------------------------------------------------------------*/ +/* Private variables */ +/*----------------------------------------------------------------------------*/ + +typedef struct _constants { + const gchar * name; + const gint value; +} CONSTANTS; + +CONSTANTS constResponse[] = { + "GTK_RESPONSE_NONE" , GTK_RESPONSE_NONE, + "GTK_RESPONSE_REJECT", GTK_RESPONSE_REJECT, + "GTK_RESPONSE_ACCEPT", GTK_RESPONSE_ACCEPT, + "GTK_RESPONSE_OK", GTK_RESPONSE_OK, + "GTK_RESPONSE_CANCEL", GTK_RESPONSE_CANCEL, + "GTK_RESPONSE_CLOSE", GTK_RESPONSE_CLOSE, + "GTK_RESPONSE_YES", GTK_RESPONSE_YES, + "GTK_RESPONSE_NO", GTK_RESPONSE_NO, + "GTK_RESPONSE_APPLY", GTK_RESPONSE_APPLY, + "GTK_RESPONSE_HELP", GTK_RESPONSE_HELP, + NULL, 0, +}; + + + + + + + +/*----------------------------------------------------------------------------*/ +/* Local Definitions */ +/*----------------------------------------------------------------------------*/ + + +/*============================================================================*/ +/* Private Functions */ +/*============================================================================*/ + + +/*============================================================================*/ +/* Public Functions */ +/*============================================================================*/ + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxConstantString2Value */ +/* Description: Return the numeric value for a constant */ +/* Rexx Args: Constant group string */ +/* Constant string */ +/*----------------------------------------------------------------------------*/ + +APIRET APIENTRY GrxConstantString2Value(const char * Name, + const size_t Argc, const RXSTRING Argv[], + const char * Queuename, PRXSTRING Retstr) +{ + CONSTANTS *constants; + gint value = 0, i = 0; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + // Get the correct structure address + if (strcmp(Argv[0].strptr, "GTK_RESPONSE_TYPE") == 0) + constants = constResponse; +// else if (strcmp(Argv[0].strptr, "GTK_JUSTIFY_RIGHT") == 0) +// jtype = GTK_JUSTIFY_RIGHT; + else + return RXFUNC_BADCALL; + + // Get the value + while (constants[i].name != NULL) { + if (strcmp(constants[i].name, Argv[1].strptr) == 0) { + value = constants[i].value; + break; + } + i++; + } + + /* Set up the Rexx return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d", value); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxValue2ConstantString */ +/* Description: Return constant string from the numeric value */ +/* Rexx Args: Constant group string */ +/* Numeric value */ +/*----------------------------------------------------------------------------*/ + +APIRET APIENTRY GrxValue2ConstantString(const char * Name, + const size_t Argc, const RXSTRING Argv[], + const char * Queuename, PRXSTRING Retstr) +{ + CONSTANTS * constants; + gint value, i = 0; + const gchar *str = "\0"; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + // Get the correct structure address + if (strcmp(Argv[0].strptr, "GTK_RESPONSE_TYPE") == 0) + constants = constResponse; +// else if (strcmp(Argv[0].strptr, "GTK_JUSTIFY_RIGHT") == 0) +// jtype = GTK_JUSTIFY_RIGHT; + else + return RXFUNC_BADCALL; + sscanf(Argv[1].strptr, "%d", &value); + + // Get the value + while (constants[i].name != NULL) { + if (constants[i].value == value) { + str = constants[i].name; + break; + } + i++; + } + + /* Set up the Rexx return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%s", str); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + Property changes on: sandbox/david/grxconstants.c ___________________________________________________________________ Name: svn:eol-style + native Modified: sandbox/david/rexxgtk.c =================================================================== --- sandbox/david/rexxgtk.c 2008-01-24 19:33:51 UTC (rev 2301) +++ sandbox/david/rexxgtk.c 2008-01-24 23:20:06 UTC (rev 2302) @@ -141,6 +141,8 @@ "GrxVersion", "GrxMain", "GrxMainIteration", + "GrxValue2ConstantString", + "GrxConstantString2Value", // RexxGTK specific functions "GrxSetRexxQueueName", @@ -162,17 +164,6 @@ "GrxGListInsert", "GrxGListItem", "GrxGListNext", -// "GrxCListNew", -// "GrxCListUninit", -// "GrxCListSelected", -// "GrxCListSetColumnTitle", -// "GrxCListGetColumnTitle", -// "GrxCListSetText", -// "GrxCListGetText", -// "GrxCListAppend", -// "GrxCListPrepend", -// "GrxCListInsert", -// "GrxCListSetColumnWidth", // Widget functions "GrxWidgetShow", Modified: sandbox/david/rexxgtk.cls =================================================================== --- sandbox/david/rexxgtk.cls 2008-01-24 19:33:51 UTC (rev 2301) +++ sandbox/david/rexxgtk.cls 2008-01-24 23:20:06 UTC (rev 2302) @@ -80,6 +80,24 @@ /*============================================================================*/ +/* Routine: String2Value */ +/*============================================================================*/ + +::routine String2Value public +use strict arg group, str +return GrxConstantString2Value(upper(group), upper(str)) + + +/*============================================================================*/ +/* Routine: Value2String */ +/*============================================================================*/ + +::routine Value2String public +use strict arg group, num +return GrxValue2ConstantString(upper(group), num) + + +/*============================================================================*/ /* Class: GtkWidget */ /*============================================================================*/ Modified: sandbox/david/test5-3.rex =================================================================== --- sandbox/david/test5-3.rex 2008-01-24 19:33:51 UTC (rev 2301) +++ sandbox/david/test5-3.rex 2008-01-24 23:20:06 UTC (rev 2302) @@ -84,7 +84,7 @@ dialog~show_all() retc = dialog~run_dialog() -if retc = -5 /* GTK_RESPONSE_OK */ then do +if Value2String('GTK_RESPONSE_TYPE', retc) = 'GTK_RESPONSE_OK' then do say 'User Name:' user~get_text() say 'Real Name:' real~get_text() say 'Home Folder:' home~get_text() Modified: sandbox/david/test5-3a.rex =================================================================== --- sandbox/david/test5-3a.rex 2008-01-24 19:33:51 UTC (rev 2301) +++ sandbox/david/test5-3a.rex 2008-01-24 23:20:06 UTC (rev 2302) @@ -84,7 +84,7 @@ dialog~show_all() retc = dialog~run_dialog() -if retc = -5 /* GTK_RESPONSE_OK */ then do +if Value2String('GTK_RESPONSE_TYPE', retc) = 'GTK_RESPONSE_OK' then do say 'User Name:' user~text say 'Real Name:' real~text say 'Home Folder:' home~text Modified: sandbox/david/test5-6.rex =================================================================== --- sandbox/david/test5-6.rex 2008-01-24 19:33:51 UTC (rev 2301) +++ sandbox/david/test5-6.rex 2008-01-24 23:20:06 UTC (rev 2302) @@ -82,7 +82,7 @@ dialog~add_button('gtk-save', 'GTK_RESPONSE_ACCEPT') retc = dialog~run_dialog() -if retc = -3 then do +if Value2String('GTK_RESPONSE_TYPE', retc) = 'GTK_RESPONSE_ACCEPT' then do filename = dialog~get_filename() self~set_label(filename) end Modified: sandbox/david/test5-6a.rex =================================================================== --- sandbox/david/test5-6a.rex 2008-01-24 19:33:51 UTC (rev 2301) +++ sandbox/david/test5-6a.rex 2008-01-24 23:20:06 UTC (rev 2302) @@ -82,7 +82,7 @@ dialog~add_button('gtk-save', 'GTK_RESPONSE_ACCEPT') retc = dialog~run_dialog() -if retc = -3 then do +if Value2String('GTK_RESPONSE_TYPE', retc) = 'GTK_RESPONSE_ACCEPT' then do filename = dialog~filename self~label = filename end Modified: sandbox/david/test5-7.rex =================================================================== --- sandbox/david/test5-7.rex 2008-01-24 19:33:51 UTC (rev 2301) +++ sandbox/david/test5-7.rex 2008-01-24 23:20:06 UTC (rev 2302) @@ -50,7 +50,7 @@ dialog~add_button('gtk-ok', 'GTK_RESPONSE_OK') retc = dialog~run_dialog() -if retc = -5 then do +if Value2String('GTK_RESPONSE_TYPE', retc) = 'GTK_RESPONSE_OK' then do filename = dialog~get_filename() say 'Creating directory:' filename end Modified: sandbox/david/test5-8.rex =================================================================== --- sandbox/david/test5-8.rex 2008-01-24 19:33:51 UTC (rev 2301) +++ sandbox/david/test5-8.rex 2008-01-24 23:20:06 UTC (rev 2302) @@ -52,7 +52,7 @@ dialog~set_select_multiple(.true) retc = dialog~run_dialog() -if retc = -3 then do +if Value2String('GTK_RESPONSE_TYPE', retc) = 'GTK_RESPONSE_ACCEPT' then do filenames = dialog~get_filenames() do filename over filenames say filename 'was selected:' Modified: sandbox/david/test5-8a.rex =================================================================== --- sandbox/david/test5-8a.rex 2008-01-24 19:33:51 UTC (rev 2301) +++ sandbox/david/test5-8a.rex 2008-01-24 23:20:06 UTC (rev 2302) @@ -52,7 +52,7 @@ dialog~select_multiple = .true retc = dialog~run_dialog() -if retc = -3 then do +if Value2String('GTK_RESPONSE_TYPE', retc) = 'GTK_RESPONSE_ACCEPT' then do filenames = dialog~filenames do filename over filenames say filename 'was selected:' This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wda...@us...> - 2008-01-24 19:33:45
|
Revision: 2301 http://oorexx.svn.sourceforge.net/oorexx/?rev=2301&view=rev Author: wdashley Date: 2008-01-24 11:33:51 -0800 (Thu, 24 Jan 2008) Log Message: ----------- ArtifactID: None Comment: Added GtkFileChooserDialog and test scripts. Modified Paths: -------------- sandbox/david/grxdialog.c sandbox/david/grxglib.c sandbox/david/grxinterfaces.c sandbox/david/rexxgtk.c sandbox/david/rexxgtk.cls sandbox/david/test5-5.rex sandbox/david/test5-5a.rex Added Paths: ----------- sandbox/david/test5-6.rex sandbox/david/test5-6a.rex sandbox/david/test5-7.rex sandbox/david/test5-8.rex sandbox/david/test5-8a.rex Modified: sandbox/david/grxdialog.c =================================================================== --- sandbox/david/grxdialog.c 2008-01-24 02:46:15 UTC (rev 2300) +++ sandbox/david/grxdialog.c 2008-01-24 19:33:51 UTC (rev 2301) @@ -470,6 +470,54 @@ /*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxFileChooserDialogNew */ +/* Description: Create a file chooser dialog */ +/* Rexx Args: Title */ +/* : Parent window pointer */ +/* Message type */ +/* Button set */ +/* Message text */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxFileChooserDialogNew(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GtkWindow *parentWindow; + GtkWidget *myWidget; + GtkFileChooserAction action; + gint resptype; + + /* Check for valid arguments */ + if (GrxCheckArgs(5, Argc, Argv)) + return RXFUNC_BADCALL; + + /* Initialize function parameters */ + sscanf(Argv[1].strptr, "%p", &parentWindow); + if (!strcmp(Argv[2].strptr, "GTK_FILE_CHOOSER_ACTION_OPEN")) + action = GTK_FILE_CHOOSER_ACTION_OPEN; + else if (!strcmp(Argv[2].strptr, "GTK_FILE_CHOOSER_ACTION_SAVE")) + action = GTK_FILE_CHOOSER_ACTION_SAVE; + else if (!strcmp(Argv[2].strptr, "GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER")) + action = GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER; + else if (!strcmp(Argv[2].strptr, "GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER")) + action = GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER; + else + sscanf(Argv[2].strptr, "%d", &action); + resptype = str2resp(Argv[4].strptr); + + myWidget = gtk_file_chooser_dialog_new(Argv[0].strptr, parentWindow, + action, Argv[3].strptr, + resptype, NULL); + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ /* Rexx External Function: GrxFontSelectionDialog */ /* Description: Create a font selection dialog */ /* Rexx Args: None */ Modified: sandbox/david/grxglib.c =================================================================== --- sandbox/david/grxglib.c 2008-01-24 02:46:15 UTC (rev 2300) +++ sandbox/david/grxglib.c 2008-01-24 19:33:51 UTC (rev 2301) @@ -170,3 +170,361 @@ return RXFUNC_OK; } + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxGSListUninit */ +/* Description: Free list storage */ +/* Rexx Args: Pointer to the list head */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxGSListUninit(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GSList *myList; + + /* Check for valid arguments */ + if (GrxCheckArgs(1, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myList); + + g_slist_free(myList); + + /* Set up the REXX return code */ + *(Retstr->strptr) = '0'; + Retstr->strlength = 1; + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxGSListAppend */ +/* Description: Append an item to the list. */ +/* Rexx Args: Group list head */ +/* Item string */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxGSListAppend(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GSList *head; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &head); + + head = g_slist_append(head, Argv[1].strptr); + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", head); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxGSListPrepend */ +/* Description: Prepend an item to the list. */ +/* Rexx Args: Group list head */ +/* Item string */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxGSListPrepend(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GSList *head; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &head); + + head = g_slist_prepend(head, Argv[1].strptr); + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", head); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxGSListInsert */ +/* Description: Insert an item to the list. */ +/* Rexx Args: Group list head */ +/* Item string */ +/* Position (one-based) */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxGSListInsert(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GSList *head; + gint pos; + + /* Check for valid arguments */ + if (GrxCheckArgs(3, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &head); + sscanf(Argv[2].strptr, "%d", &pos); + + head = g_slist_insert(head, Argv[1].strptr, pos - 1); + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", head); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxGSListItem */ +/* Description: Get the list item */ +/* Rexx Args: Item pointer */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxGSListItem(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GSList *item; + + /* Check for valid arguments */ + if (GrxCheckArgs(1, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &item); + + /* Set up the REXX return code */ + if (strlen(item->data) > RXAUTOBUFLEN) { + Retstr->strptr = (char *) RexxAllocateMemory(strlen(item->data) + 1); + } + strcpy(Retstr->strptr, item->data); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxGSListNext */ +/* Description: Get the pointer to the next list item */ +/* Rexx Args: Item pointer */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxGSListNext(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GSList *item; + + /* Check for valid arguments */ + if (GrxCheckArgs(1, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &item); + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", item->next); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxGListUninit */ +/* Description: Free list storage */ +/* Rexx Args: Pointer to the list head */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxGListUninit(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GList *myList; + + /* Check for valid arguments */ + if (GrxCheckArgs(1, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myList); + + g_list_free(myList); + + /* Set up the REXX return code */ + *(Retstr->strptr) = '0'; + Retstr->strlength = 1; + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxGListAppend */ +/* Description: Append an item to the list. */ +/* Rexx Args: Group list head */ +/* Item string */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxGListAppend(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GList *head; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &head); + + head = g_list_append(head, Argv[1].strptr); + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", head); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxGListPrepend */ +/* Description: Prepend an item to the list. */ +/* Rexx Args: Group list head */ +/* Item string */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxGListPrepend(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GList *head; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &head); + + head = g_list_prepend(head, Argv[1].strptr); + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", head); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxGListInsert */ +/* Description: Insert an item to the list. */ +/* Rexx Args: Group list head */ +/* Item string */ +/* Position (one-based) */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxGListInsert(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GList *head; + gint pos; + + /* Check for valid arguments */ + if (GrxCheckArgs(3, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &head); + sscanf(Argv[2].strptr, "%d", &pos); + + head = g_list_insert(head, Argv[1].strptr, pos - 1); + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", head); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxGListItem */ +/* Description: Get the list item */ +/* Rexx Args: Item pointer */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxGListItem(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GList *item; + + /* Check for valid arguments */ + if (GrxCheckArgs(1, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &item); + + /* Set up the REXX return code */ + if (strlen(item->data) > RXAUTOBUFLEN) { + Retstr->strptr = (char *) RexxAllocateMemory(strlen(item->data) + 1); + } + strcpy(Retstr->strptr, item->data); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxGListNext */ +/* Description: Get the pointer to the next list item */ +/* Rexx Args: Item pointer */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxGListNext(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GList *item; + + /* Check for valid arguments */ + if (GrxCheckArgs(1, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &item); + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", item->next); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + Modified: sandbox/david/grxinterfaces.c =================================================================== --- sandbox/david/grxinterfaces.c 2008-01-24 02:46:15 UTC (rev 2300) +++ sandbox/david/grxinterfaces.c 2008-01-24 19:33:51 UTC (rev 2301) @@ -115,6 +115,41 @@ /*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxFileChooserSetSelectMultiple */ +/* Description: Set the multiple selection flag . */ +/* Rexx Args: Pointer to the widget */ +/* flag */ +/*----------------------------------------------------------------------------*/ + +APIRET APIENTRY GrxFileChooserSetSelectMultiple(const char * Name, + const size_t Argc, const RXSTRING Argv[], + const char * Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + gboolean flag; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myWidget); + sscanf(Argv[1].strptr, "%d", &flag); + + if (GTK_IS_WIDGET(GTK_OBJECT(myWidget))) { + gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(myWidget), flag); + } + + /* Set up the REXX return code */ + *(Retstr->strptr) = '0'; + Retstr->strlength = 1; + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ /* Rexx External Function: GrxFileChooserAddFilter */ /* Description: Add a filter to the widget. */ /* Rexx Args: Pointer to the widget */ @@ -189,6 +224,39 @@ /*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxFileChooserGetFilenames */ +/* Description: Get the current selected filenames */ +/* Rexx Args: Pointer to the chooser */ +/*----------------------------------------------------------------------------*/ + +APIRET APIENTRY GrxFileChooserGetFilenames(const char * Name, + const size_t Argc, const RXSTRING Argv[], + const char * Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + GSList * list; + + /* Check for valid arguments */ + if (GrxCheckArgs(1, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myWidget); + + if (GTK_IS_WIDGET(GTK_OBJECT(myWidget))) { + list = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(myWidget)); + } + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", list); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ /* Rexx External Function: GrxFileChooserConnectSignal */ /* Description: Connect a signal function to the Widget */ /* Rexx Args: Pointer to the widget */ Modified: sandbox/david/rexxgtk.c =================================================================== --- sandbox/david/rexxgtk.c 2008-01-24 02:46:15 UTC (rev 2300) +++ sandbox/david/rexxgtk.c 2008-01-24 19:33:51 UTC (rev 2301) @@ -150,17 +150,29 @@ "GrxGetRealName", "GrxGetHomeDir", "GrxGetHostName", -// "GrxCListNew", -// "GrxCListUninit", -// "GrxCListSelected", -// "GrxCListSetColumnTitle", -// "GrxCListGetColumnTitle", -// "GrxCListSetText", -// "GrxCListGetText", -// "GrxCListAppend", -// "GrxCListPrepend", -// "GrxCListInsert", -// "GrxCListSetColumnWidth", + "GrxGSListUninit", + "GrxGSListAppend", + "GrxGSListPrepend", + "GrxGSListInsert", + "GrxGSListItem", + "GrxGSListNext", + "GrxGListUninit", + "GrxGListAppend", + "GrxGListPrepend", + "GrxGListInsert", + "GrxGListItem", + "GrxGListNext", +// "GrxCListNew", +// "GrxCListUninit", +// "GrxCListSelected", +// "GrxCListSetColumnTitle", +// "GrxCListGetColumnTitle", +// "GrxCListSetText", +// "GrxCListGetText", +// "GrxCListAppend", +// "GrxCListPrepend", +// "GrxCListInsert", +// "GrxCListSetColumnWidth", // Widget functions "GrxWidgetShow", @@ -204,6 +216,7 @@ "GrxAboutDialogSetArtists", "GrxAboutDialogSetDocumenters", "GrxAboutDialogSetLogo", + "GrxFileChooserDialogNew", // Button functions "GrxButtonNew", @@ -367,21 +380,14 @@ "GrxFileChooserSetCurrentFolder", "GrxFileChooserAddFilter", "GrxFileChooserGetFilename", + "GrxFileChooserGetFilenames", + "GrxFileChooserSetSelectMultiple", "GrxFileChooserConnectSignal", // Filter filter functions "GrxFileFilterNew", "GrxFileFilterSetName", "GrxFileFilterAddPattern", -// -// "GrxGSListUninit", -// "GrxGSListAppend", -// "GrxGSListPrepend", -// "GrxGSListInsert", -// "GrxGListUninit", -// "GrxGListAppend", -// "GrxGListPrepend", -// "GrxGListInsert", // Event box functions (not used) "GrxEventBoxNew", Modified: sandbox/david/rexxgtk.cls =================================================================== --- sandbox/david/rexxgtk.cls 2008-01-24 02:46:15 UTC (rev 2300) +++ sandbox/david/rexxgtk.cls 2008-01-24 19:33:51 UTC (rev 2301) @@ -763,6 +763,21 @@ /*============================================================================*/ +/* Class: GtkFileChooserDialog */ +/*============================================================================*/ + +::class GtkFileChooserDialog public subclass GtkDialog inherit GtkFileChooser + +::method init +use strict arg title, parent, action, btext, bresp +if parent = .nil then ptr = 0 +else ptr = parent~pointer +self~pointer = GrxFileChooserDialogNew(title, ptr, action, btext, bresp) +self~vbox = .nil +return + + +/*============================================================================*/ /* Class: GtkLabel */ /*============================================================================*/ @@ -2184,6 +2199,127 @@ /*============================================================================*/ /*============================================================================*/ /*============================================================================*/ +/* These are classes specific to Glib. */ +/*============================================================================*/ +/*============================================================================*/ +/*============================================================================*/ + + +/*============================================================================*/ +/* Class: GSList */ +/*============================================================================*/ + +::class GSList public + +::method init +use strict arg self~head = 0 +return + +::method uninit +call GrxGSListUninit self~head +return + +::method append +-- append an item string to the list +use strict arg item +self~head = GrxGSListAppend(self~head, item) +return + +::method head +-- return the head of the list +expose head +use strict arg +return head + +::method 'head=' +-- set the head of the list +expose head +use strict arg head +return + +::method insert +-- append an item string to the list +use strict arg item, position +self~head = GrxGSListInsert(self~head, item, position) +return + +::method toArray +-- convert the list to an array +use strict arg +ptr = self~head +list = .Array~new() +do while ptr <> '(nil)' + list~append(GrxGSListItem(ptr)) + ptr = GrxGSListNext(ptr) + end +return list + +::method prepend +-- prepend an item string to the list +use strict arg item +self~head = GrxGSListPrepend(self~head, item) +return + + +/*============================================================================*/ +/* Class: GList */ +/*============================================================================*/ + +::class GList public subclass object + +::method init +use strict arg self~head = 0 +return + +::method uninit +call GrxGListUninit self~head +return + +::method append +-- append an item string to the list +use arg strict item +self~head = GrxGListAppend(self~head, item) +return + +::method head +-- return the head of the list +expose head +use strict arg +return head + +::method 'head=' +-- set the head of the list +expose head +use strict arg head +return + +::method insert +-- insert an item string to the list +use strict arg item, position +self~head = GrxGListInsert(self~head, item, position) +return + +::method toArray +-- convert the list to an array +use strict arg +ptr = self~head +list = .Array~new() +do while ptr <> 0 + list~append(GrxGSListItem(ptr)) + ptr = GrxGSListNext(ptr) + end +return list + +::method prepend +-- prepend an item string to the list +use strict arg item +self~head = GrxGListPrepend(self~head, item) +return + + +/*============================================================================*/ +/*============================================================================*/ +/*============================================================================*/ /* These are helper classes. Most of these just provide interfaces for other */ /* classes to use. Some are just standalone classes. */ /*============================================================================*/ @@ -2219,6 +2355,23 @@ ::method get_filename return self~filename +::method filenames +ptr = GrxFileChooserGetFileNames(self~pointer) +list = .GSList~new(ptr) +return list~toArray() + +::method get_filenames +return self~filenames() + +::method 'select_multiple=' +use strict arg flag +call GrxFileChooserSetSelectMultiple self~pointer, flag +return + +::method set_select_multiple +use strict arg self~select_multiple +return + ::method signal_connect use strict arg event select Modified: sandbox/david/test5-5.rex =================================================================== --- sandbox/david/test5-5.rex 2008-01-24 02:46:15 UTC (rev 2300) +++ sandbox/david/test5-5.rex 2008-01-24 19:33:51 UTC (rev 2301) @@ -61,6 +61,8 @@ dialog~set_authors('W. David Ashley', 'Mark Miesfeld') dialog~set_documenters('W. David Ashley') +-- the following statement is not in the original example +dialog~set_artists('Julian Choy') dialog~show_all() Modified: sandbox/david/test5-5a.rex =================================================================== --- sandbox/david/test5-5a.rex 2008-01-24 02:46:15 UTC (rev 2300) +++ sandbox/david/test5-5a.rex 2008-01-24 19:33:51 UTC (rev 2301) @@ -61,6 +61,8 @@ dialog~set_authors('W. David Ashley', 'Mark Miesfeld') dialog~set_documenters('W. David Ashley') +-- the following statement is not in the original example +dialog~set_artists('Julian Choy') dialog~show_all() Added: sandbox/david/test5-6.rex =================================================================== --- sandbox/david/test5-6.rex (rev 0) +++ sandbox/david/test5-6.rex 2008-01-24 19:33:51 UTC (rev 2301) @@ -0,0 +1,91 @@ +#!/usr/bin/rexx +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2007-2008 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Authors; */ +/* W. David Ashley <da...@us...> */ +/* */ +/*----------------------------------------------------------------------------*/ + + +-- Derived from Listing 5-6 +-- Foundations of GTK+ Development +-- by Andrew Krause + +window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window~set_title('Save a File') +window~signal_connect("destroy") +window~set_border_width(10) + +window~set_size_request(200, 100) + +button = .MyButton~new('Save a File') + +-- save data for the callback +button~user_data = window + +button~signal_connect('clicked') + +window~add(button) +window~show_all() + +call gtk_main +return + + +::requires 'rexxgtk.cls' + +::class myMainWindow subclass GtkWindow + +::method signal_destroy +.local['GTK_Quit'] = .true +return + +::class MyButton subclass GtkButton_With_Label + +::method signal_clicked +dialog = .GtkFileChooserDialog~new('Save File As ...', self~user_data,, + 'GTK_FILE_CHOOSER_ACTION_SAVE',, + 'gtk-cancel', 'GTK_RESPONSE_CANCEL') +dialog~add_button('gtk-save', 'GTK_RESPONSE_ACCEPT') + +retc = dialog~run_dialog() +if retc = -3 then do + filename = dialog~get_filename() + self~set_label(filename) + end +dialog~destroy() +return + Property changes on: sandbox/david/test5-6.rex ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native Added: sandbox/david/test5-6a.rex =================================================================== --- sandbox/david/test5-6a.rex (rev 0) +++ sandbox/david/test5-6a.rex 2008-01-24 19:33:51 UTC (rev 2301) @@ -0,0 +1,91 @@ +#!/usr/bin/rexx +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2007-2008 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Authors; */ +/* W. David Ashley <da...@us...> */ +/* */ +/*----------------------------------------------------------------------------*/ + + +-- Derived from Listing 5-6 +-- Foundations of GTK+ Development +-- by Andrew Krause + +window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window~title = 'Save a File' +window~signal_connect("destroy") +window~set_border_width(10) + +window~set_size_request(200, 100) + +button = .MyButton~new('Save a File') + +-- save data for the callback +button~user_data = window + +button~signal_connect('clicked') + +window~add(button) +window~show_all() + +call gtk_main +return + + +::requires 'rexxgtk.cls' + +::class myMainWindow subclass GtkWindow + +::method signal_destroy +.local['GTK_Quit'] = .true +return + +::class MyButton subclass GtkButton_With_Label + +::method signal_clicked +dialog = .GtkFileChooserDialog~new('Save File As ...', self~user_data,, + 'GTK_FILE_CHOOSER_ACTION_SAVE',, + 'gtk-cancel', 'GTK_RESPONSE_CANCEL') +dialog~add_button('gtk-save', 'GTK_RESPONSE_ACCEPT') + +retc = dialog~run_dialog() +if retc = -3 then do + filename = dialog~filename + self~label = filename + end +dialog~destroy() +return + Property changes on: sandbox/david/test5-6a.rex ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native Added: sandbox/david/test5-7.rex =================================================================== --- sandbox/david/test5-7.rex (rev 0) +++ sandbox/david/test5-7.rex 2008-01-24 19:33:51 UTC (rev 2301) @@ -0,0 +1,62 @@ +#!/usr/bin/rexx +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2007-2008 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Authors; */ +/* W. David Ashley <da...@us...> */ +/* */ +/*----------------------------------------------------------------------------*/ + + +-- Derived from Listing 5-7 +-- Foundations of GTK+ Development +-- by Andrew Krause + +dialog = .GtkFileChooserDialog~new('Create a Folder ...', .nil,, + 'GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER',, + 'gtk-cancel', 'GTK_RESPONSE_CANCEL') +dialog~add_button('gtk-ok', 'GTK_RESPONSE_OK') + +retc = dialog~run_dialog() +if retc = -5 then do + filename = dialog~get_filename() + say 'Creating directory:' filename + end +dialog~destroy() +return + + +::requires 'rexxgtk.cls' + Property changes on: sandbox/david/test5-7.rex ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native Added: sandbox/david/test5-8.rex =================================================================== --- sandbox/david/test5-8.rex (rev 0) +++ sandbox/david/test5-8.rex 2008-01-24 19:33:51 UTC (rev 2301) @@ -0,0 +1,66 @@ +#!/usr/bin/rexx +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2007-2008 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Authors; */ +/* W. David Ashley <da...@us...> */ +/* */ +/*----------------------------------------------------------------------------*/ + + +-- Derived from Listing 5-8 +-- Foundations of GTK+ Development +-- by Andrew Krause + +dialog = .GtkFileChooserDialog~new('Open File(s) ...', .nil,, + 'GTK_FILE_CHOOSER_ACTION_OPEN',, + 'gtk-cancel', 'GTK_RESPONSE_CANCEL') +dialog~add_button('gtk-open', 'GTK_RESPONSE_ACCEPT') + +dialog~set_select_multiple(.true) + +retc = dialog~run_dialog() +if retc = -3 then do + filenames = dialog~get_filenames() + do filename over filenames + say filename 'was selected:' + end + end +dialog~destroy() +return + + +::requires 'rexxgtk.cls' + Property changes on: sandbox/david/test5-8.rex ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native Added: sandbox/david/test5-8a.rex =================================================================== --- sandbox/david/test5-8a.rex (rev 0) +++ sandbox/david/test5-8a.rex 2008-01-24 19:33:51 UTC (rev 2301) @@ -0,0 +1,66 @@ +#!/usr/bin/rexx +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2007-2008 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Authors; */ +/* W. David Ashley <da...@us...> */ +/* */ +/*----------------------------------------------------------------------------*/ + + +-- Derived from Listing 5-8 +-- Foundations of GTK+ Development +-- by Andrew Krause + +dialog = .GtkFileChooserDialog~new('Open File(s) ...', .nil,, + 'GTK_FILE_CHOOSER_ACTION_OPEN',, + 'gtk-cancel', 'GTK_RESPONSE_CANCEL') +dialog~add_button('gtk-open', 'GTK_RESPONSE_ACCEPT') + +dialog~select_multiple = .true + +retc = dialog~run_dialog() +if retc = -3 then do + filenames = dialog~filenames + do filename over filenames + say filename 'was selected:' + end + end +dialog~destroy() +return + + +::requires 'rexxgtk.cls' + Property changes on: sandbox/david/test5-8a.rex ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wda...@us...> - 2008-01-24 02:46:10
|
Revision: 2300 http://oorexx.svn.sourceforge.net/oorexx/?rev=2300&view=rev Author: wdashley Date: 2008-01-23 18:46:15 -0800 (Wed, 23 Jan 2008) Log Message: ----------- ArtifactID : None Comment: Added the GtkAboutDialog class and test scripts. Modified Paths: -------------- sandbox/david/grxdialog.c sandbox/david/rexxgtk.c sandbox/david/rexxgtk.cls Added Paths: ----------- sandbox/david/oorexx.jpg sandbox/david/test5-5.rex sandbox/david/test5-5a.rex Modified: sandbox/david/grxdialog.c =================================================================== --- sandbox/david/grxdialog.c 2008-01-24 01:09:20 UTC (rev 2299) +++ sandbox/david/grxdialog.c 2008-01-24 02:46:15 UTC (rev 2300) @@ -483,9 +483,8 @@ char *font = NULL; /* Check for valid arguments */ - if (Argc > 1) { + if (GrxCheckArgs(1, Argc, Argv)) return RXFUNC_BADCALL; - } /* display and run the dialog */ myWidget = gtk_font_selection_dialog_new(Argv[0].strptr); @@ -500,3 +499,409 @@ return RXFUNC_OK; } + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxAboutDialogNew */ +/* Description: Create an about dialog */ +/* Rexx Args: None */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxAboutDialogNew(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + + /* Check for valid arguments */ + if (GrxCheckArgs(0, Argc, Argv)) + return RXFUNC_BADCALL; + + myWidget = gtk_about_dialog_new(); + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxAboutDialogSetProgramName */ +/* Description: Set the program name */ +/* Rexx Args: Pointer to the dialog */ +/* Program name */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxAboutDialogSetProgramName(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) + return RXFUNC_BADCALL; + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myWidget); + +// gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(myWidget), Argv[1].strptr); + gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(myWidget), Argv[1].strptr); + + /* Set up the REXX return code */ + *(Retstr->strptr) = '0'; + Retstr->strlength = 1; + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxAboutDialogSetVersion */ +/* Description: Set the version */ +/* Rexx Args: Pointer to the dialog */ +/* Version */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxAboutDialogSetVersion(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) + return RXFUNC_BADCALL; + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myWidget); + + gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(myWidget), Argv[1].strptr); + + /* Set up the REXX return code */ + *(Retstr->strptr) = '0'; + Retstr->strlength = 1; + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxAboutDialogSetCopyright */ +/* Description: Set the copyright notice */ +/* Rexx Args: Pointer to the dialog */ +/* Copyright */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxAboutDialogSetCopyright(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) + return RXFUNC_BADCALL; + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myWidget); + + gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(myWidget), Argv[1].strptr); + + /* Set up the REXX return code */ + *(Retstr->strptr) = '0'; + Retstr->strlength = 1; + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxAboutDialogSetComments */ +/* Description: Set the comments */ +/* Rexx Args: Pointer to the dialog */ +/* Comment */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxAboutDialogSetComments(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) + return RXFUNC_BADCALL; + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myWidget); + + gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(myWidget), Argv[1].strptr); + + /* Set up the REXX return code */ + *(Retstr->strptr) = '0'; + Retstr->strlength = 1; + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxAboutDialogSetLicense */ +/* Description: Set the license */ +/* Rexx Args: Pointer to the dialog */ +/* License */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxAboutDialogSetLicense(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) + return RXFUNC_BADCALL; + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myWidget); + + gtk_about_dialog_set_license(GTK_ABOUT_DIALOG(myWidget), Argv[1].strptr); + + /* Set up the REXX return code */ + *(Retstr->strptr) = '0'; + Retstr->strlength = 1; + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxAboutDialogSetWrapLicense */ +/* Description: Set the wrap license flag */ +/* Rexx Args: Pointer to the dialog */ +/* Flag */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxAboutDialogSetWrapLicense(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + gboolean flag; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) + return RXFUNC_BADCALL; + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myWidget); + sscanf(Argv[1].strptr, "%d", &flag); + + gtk_about_dialog_set_wrap_license(GTK_ABOUT_DIALOG(myWidget), flag); + + /* Set up the REXX return code */ + *(Retstr->strptr) = '0'; + Retstr->strlength = 1; + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxAboutDialogSetWebsite */ +/* Description: Set the website */ +/* Rexx Args: Pointer to the dialog */ +/* Website */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxAboutDialogSetWebsite(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) + return RXFUNC_BADCALL; + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myWidget); + + gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(myWidget), Argv[1].strptr); + + /* Set up the REXX return code */ + *(Retstr->strptr) = '0'; + Retstr->strlength = 1; + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxAboutDialogSetWebsiteLabel */ +/* Description: Set the website label */ +/* Rexx Args: Pointer to the dialog */ +/* Website */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxAboutDialogSetWebsiteLabel(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) + return RXFUNC_BADCALL; + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myWidget); + + gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(myWidget), Argv[1].strptr); + + /* Set up the REXX return code */ + *(Retstr->strptr) = '0'; + Retstr->strlength = 1; + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxAboutDialogSetAuthors */ +/* Description: Set the authors */ +/* Rexx Args: Pointer to the dialog */ +/* Author (could repeat) */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxAboutDialogSetAuthors(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + const gchar **authors; + size_t i; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, 2, Argv)) + return RXFUNC_BADCALL; + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myWidget); + authors = (const gchar **)g_malloc(sizeof(void *) * Argc); + for (i = 0; i < Argc - 1; i++) { + authors[i] = Argv[i + 1].strptr; + } + authors[i] = NULL; + + gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(myWidget), authors); + + g_free(authors); + + /* Set up the REXX return code */ + *(Retstr->strptr) = '0'; + Retstr->strlength = 1; + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxAboutDialogSetArtists */ +/* Description: Set the artists */ +/* Rexx Args: Pointer to the dialog */ +/* Author (could repeat) */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxAboutDialogSetArtists(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + const gchar **authors; + size_t i; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, 2, Argv)) + return RXFUNC_BADCALL; + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myWidget); + authors = (const gchar **)g_malloc(sizeof(void *) * Argc); + for (i = 0; i < Argc - 1; i++) { + authors[i] = Argv[i + 1].strptr; + } + authors[i] = NULL; + + gtk_about_dialog_set_artists(GTK_ABOUT_DIALOG(myWidget), authors); + + g_free(authors); + + /* Set up the REXX return code */ + *(Retstr->strptr) = '0'; + Retstr->strlength = 1; + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxAboutDialogSetDocumenters */ +/* Description: Set the documenters */ +/* Rexx Args: Pointer to the dialog */ +/* Author (could repeat) */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxAboutDialogSetDocumenters(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + const gchar **authors; + size_t i; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, 2, Argv)) + return RXFUNC_BADCALL; + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myWidget); + authors = (const gchar **)g_malloc(sizeof(void *) * Argc); + for (i = 0; i < Argc - 1; i++) { + authors[i] = Argv[i + 1].strptr; + } + authors[i] = NULL; + + gtk_about_dialog_set_documenters(GTK_ABOUT_DIALOG(myWidget), authors); + + g_free(authors); + + /* Set up the REXX return code */ + *(Retstr->strptr) = '0'; + Retstr->strlength = 1; + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxAboutDialogSetLogo */ +/* Description: Set the logo */ +/* Rexx Args: Pointer to the dialog */ +/* Logo (filename) */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxAboutDialogSetLogo(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + GdkPixbuf *logo; + GError *error = NULL; // we will just ignore this error + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) + return RXFUNC_BADCALL; + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myWidget); + logo = gdk_pixbuf_new_from_file(Argv[1].strptr, &error); + + gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(myWidget), logo); + + /* Set up the REXX return code */ + *(Retstr->strptr) = '0'; + Retstr->strlength = 1; + + return RXFUNC_OK; +} + Added: sandbox/david/oorexx.jpg =================================================================== (Binary files differ) Property changes on: sandbox/david/oorexx.jpg ___________________________________________________________________ Name: svn:mime-type + image/jpeg Modified: sandbox/david/rexxgtk.c =================================================================== --- sandbox/david/rexxgtk.c 2008-01-24 01:09:20 UTC (rev 2299) +++ sandbox/david/rexxgtk.c 2008-01-24 02:46:15 UTC (rev 2300) @@ -191,6 +191,19 @@ "GrxDialogConnectSignal", "GrxMessageDialogNew", "GrxFontSelectionDialog", + "GrxAboutDialogNew", + "GrxAboutDialogSetProgramName", + "GrxAboutDialogSetVersion", + "GrxAboutDialogSetCopyright", + "GrxAboutDialogSetComments", + "GrxAboutDialogSetLicense", + "GrxAboutDialogSetWrapLicense", + "GrxAboutDialogSetWebsite", + "GrxAboutDialogSetWebsiteLabel", + "GrxAboutDialogSetAuthors", + "GrxAboutDialogSetArtists", + "GrxAboutDialogSetDocumenters", + "GrxAboutDialogSetLogo", // Button functions "GrxButtonNew", Modified: sandbox/david/rexxgtk.cls =================================================================== --- sandbox/david/rexxgtk.cls 2008-01-24 01:09:20 UTC (rev 2299) +++ sandbox/david/rexxgtk.cls 2008-01-24 02:46:15 UTC (rev 2300) @@ -645,6 +645,124 @@ /*============================================================================*/ +/* Class: GtkAboutDialog */ +/*============================================================================*/ + +::class GtkAboutDialog public subclass GtkDialog + +::method init +use strict arg +self~pointer = GrxAboutDialogNew() +self~vbox = .nil +return + +::method 'program_name=' +use strict arg pgmname +call GrxAboutDialogSetProgramName self~pointer, pgmname +return + +::method set_program_name +use strict arg self~program_name +return + +::method 'version=' +use strict arg v +call GrxAboutDialogSetVersion self~pointer, v +return + +::method set_version +use strict arg self~version +return + +::method 'copyright=' +use strict arg copyright +call GrxAboutDialogSetCopyright self~pointer, copyright +return + +::method set_copyright +use strict arg self~copyright +return + +::method 'comments=' +use strict arg comments +call GrxAboutDialogSetComments self~pointer, comments +return + +::method set_comments +use strict arg self~comments +return + +::method 'license=' +use strict arg license +call GrxAboutDialogSetLicense self~pointer, license +return + +::method set_license +use strict arg self~license +return + +::method 'wrap_license=' +use strict arg wraplicense +call GrxAboutDialogSetWrapLicense self~pointer, wraplicense +return + +::method set_wrap_license +use strict arg self~wrap_license +return + +::method 'website=' +use strict arg website +call GrxAboutDialogSetWebsite self~pointer, website +return + +::method set_website +use strict arg self~website +return + +::method 'website_label=' +use strict arg label +call GrxAboutDialogSetWebsiteLabel self~pointer, label +return + +::method set_website_label +use strict arg self~website_label +return + +::method set_authors +stmt = 'call GrxAboutDialogSetAuthors self~pointer' +do i = 1 to arg() + stmt = stmt',' arg(i) + end +interpret stmt +return + +::method set_artists +stmt = 'call GrxAboutDialogSetArtists self~pointer' +do i = 1 to arg() + stmt = stmt',' arg(i) + end +interpret stmt +return + +::method set_documenters +stmt = 'call GrxAboutDialogSetDocumenters self~pointer' +do i = 1 to arg() + stmt = stmt',' arg(i) + end +interpret stmt +return + +::method 'logo=' +use strict arg logo +call GrxAboutDialogSetLogo self~pointer, logo +return + +::method set_logo +use strict arg self~logo +return + + +/*============================================================================*/ /* Class: GtkLabel */ /*============================================================================*/ Added: sandbox/david/test5-5.rex =================================================================== --- sandbox/david/test5-5.rex (rev 0) +++ sandbox/david/test5-5.rex 2008-01-24 02:46:15 UTC (rev 2300) @@ -0,0 +1,74 @@ +#!/usr/bin/rexx +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2007-2008 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Authors; */ +/* W. David Ashley <da...@us...> */ +/* */ +/*----------------------------------------------------------------------------*/ + + +-- Derived from Listing 5-5 +-- Foundations of GTK+ Development +-- by Andrew Krause + +dialog = .GtkAboutDialog~new() + +logo = './oorexx.jpg' + +dialog~set_logo(logo) + +dialog~set_program_name('GtkAboutDialog') +dialog~set_version(GrxVersion()) +dialog~set_copyright('(c) 2008 Rexx Language Association. All rights reserved.') +dialog~set_comments('All About GtkAboutDialog') + +dialog~set_license('License: CPL v1.0') +dialog~set_website('http://www.oorexx.org/') +dialog~set_website_label('ooRexx Web Site') + +dialog~set_authors('W. David Ashley', 'Mark Miesfeld') +dialog~set_documenters('W. David Ashley') + +dialog~show_all() + +dialog~run_dialog() + +dialog~destroy() +return + + +::requires 'rexxgtk.cls' + Property changes on: sandbox/david/test5-5.rex ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native Added: sandbox/david/test5-5a.rex =================================================================== --- sandbox/david/test5-5a.rex (rev 0) +++ sandbox/david/test5-5a.rex 2008-01-24 02:46:15 UTC (rev 2300) @@ -0,0 +1,74 @@ +#!/usr/bin/rexx +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2007-2008 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Authors; */ +/* W. David Ashley <da...@us...> */ +/* */ +/*----------------------------------------------------------------------------*/ + + +-- Derived from Listing 5-5 +-- Foundations of GTK+ Development +-- by Andrew Krause + +dialog = .GtkAboutDialog~new() + +logo = './oorexx.jpg' + +dialog~set_logo(logo) + +dialog~program_name = 'GtkAboutDialog' +dialog~version = GrxVersion() +dialog~copyright = '(c) 2008 Rexx Language Association. All rights reserved.' +dialog~comments = 'All About GtkAboutDialog' + +dialog~license = 'License: CPL v1.0' +dialog~website = 'http://www.oorexx.org/' +dialog~website_label = 'ooRexx Web Site' + +dialog~set_authors('W. David Ashley', 'Mark Miesfeld') +dialog~set_documenters('W. David Ashley') + +dialog~show_all() + +dialog~run_dialog() + +dialog~destroy() +return + + +::requires 'rexxgtk.cls' + Property changes on: sandbox/david/test5-5a.rex ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bi...@us...> - 2008-01-24 01:09:15
|
Revision: 2299 http://oorexx.svn.sourceforge.net/oorexx/?rev=2299&view=rev Author: bigrixx Date: 2008-01-23 17:09:20 -0800 (Wed, 23 Jan 2008) Log Message: ----------- incremental checkin Modified Paths: -------------- sandbox/rick/init/api/platform/windows/rexxapitypes.h sandbox/rick/init/kernel/runtime/RexxStartup.cpp sandbox/rick/init/lib/RexxInternalApis.h Modified: sandbox/rick/init/api/platform/windows/rexxapitypes.h =================================================================== --- sandbox/rick/init/api/platform/windows/rexxapitypes.h 2008-01-24 01:00:00 UTC (rev 2298) +++ sandbox/rick/init/api/platform/windows/rexxapitypes.h 2008-01-24 01:09:20 UTC (rev 2299) @@ -68,7 +68,7 @@ #ifdef __cplusplus extern "C" { #endif -typedef size_t (RexxEntry *REXXPFN)(); +typedef size_t (REXXENTRY *REXXPFN)(); #ifdef __cplusplus } #endif Modified: sandbox/rick/init/kernel/runtime/RexxStartup.cpp =================================================================== --- sandbox/rick/init/kernel/runtime/RexxStartup.cpp 2008-01-24 01:00:00 UTC (rev 2298) +++ sandbox/rick/init/kernel/runtime/RexxStartup.cpp 2008-01-24 01:09:20 UTC (rev 2299) @@ -262,7 +262,7 @@ * @return true if this object was held in the target context, false if * it was not found. */ -bool REXXENTRY RexxReleaseScriptReference(const char *contextName, REXXOBJECT obj) +int REXXENTRY RexxReleaseScriptReference(const char *contextName, REXXOBJECT obj) { // get an instance and the current activity InterpreterInstance *instance = Interpreter::createInterpreterInstance(); Modified: sandbox/rick/init/lib/RexxInternalApis.h =================================================================== --- sandbox/rick/init/lib/RexxInternalApis.h 2008-01-24 01:00:00 UTC (rev 2298) +++ sandbox/rick/init/lib/RexxInternalApis.h 2008-01-24 01:09:20 UTC (rev 2299) @@ -60,7 +60,7 @@ void REXXENTRY RexxDestroyScriptContext(const char *contextName); -bool REXXENTRY RexxReleaseScriptReference(const char *contextName, REXXOBJECT obj); +int REXXENTRY RexxReleaseScriptReference(const char *contextName, REXXOBJECT obj); APIRET REXXENTRY RexxCreateMethod(const char *context, PCONSTRXSTRING sourceData, REXXOBJECT *pmethod, RexxConditionData *pRexxCondData); @@ -68,11 +68,11 @@ REXXOBJECT (REXXENTRY *callbackFunction)(void *), PRXSYSEXIT exit_list, REXXOBJECT *presult, REXXOBJECT securityManager, RexxConditionData *pRexxCondData); -APIRET REXXENTRY RexxLoadSubcom(const char *, const char *); +APIRET REXXENTRY RexxLoadSubcom(const char *, const char *); /*** RexxCallSubcom - Execute a command in an environment */ -APIRET REXXENTRY RexxCallSubcom(const char *, const char *, PCONSTRXSTRING, - unsigned short *, wholenumber_t *, PRXSTRING ); +APIRET REXXENTRY RexxCallSubcom(const char *, const char *, PCONSTRXSTRING, + unsigned short *, wholenumber_t *, PRXSTRING ); #ifdef __cplusplus } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bi...@us...> - 2008-01-24 00:59:58
|
Revision: 2298 http://oorexx.svn.sourceforge.net/oorexx/?rev=2298&view=rev Author: bigrixx Date: 2008-01-23 17:00:00 -0800 (Wed, 23 Jan 2008) Log Message: ----------- Linux cleanup Modified Paths: -------------- sandbox/rick/init/api/platform/unix/rexxapitypes.h sandbox/rick/init/api/platform/unix/rexxplatformapis.h sandbox/rick/init/api/platform/windows/rexxapitypes.h sandbox/rick/init/api/platform/windows/rexxplatformapis.h sandbox/rick/init/api/rexx.h sandbox/rick/init/kernel/platform/unix/ExternalFunctions.cpp sandbox/rick/init/kernel/platform/unix/FileSystem.cpp sandbox/rick/init/kernel/platform/unix/RexxMain.cpp sandbox/rick/init/kernel/platform/unix/RexxQueues.cpp sandbox/rick/init/kernel/platform/unix/SystemCommands.cpp sandbox/rick/init/kernel/platform/unix/SystemInterpreter.cpp sandbox/rick/init/kernel/platform/unix/SystemInterpreter.hpp sandbox/rick/init/kernel/platform/unix/VariablePool.cpp sandbox/rick/init/kernel/platform/windows/ExternalFunctions.cpp sandbox/rick/init/kernel/platform/windows/PlatformDefinitions.h sandbox/rick/init/kernel/platform/windows/RexxCompiler.cpp sandbox/rick/init/kernel/platform/windows/RexxMain.cpp sandbox/rick/init/kernel/platform/windows/RexxQueues.cpp sandbox/rick/init/kernel/platform/windows/SystemCommands.cpp sandbox/rick/init/kernel/platform/windows/VariablePool.cpp sandbox/rick/init/kernel/runtime/RexxStartup.cpp sandbox/rick/init/lib/RexxInternalApis.h sandbox/rick/init/platform/unix/RexxCompiler.cpp sandbox/rick/init/platform/unix/rexx.cpp sandbox/rick/init/platform/windows/ole/events.cpp sandbox/rick/init/platform/windows/ole/events.h sandbox/rick/init/platform/windows/ole/orexxole.c sandbox/rick/init/platform/windows/oodialog/oovbmp.c sandbox/rick/init/platform/windows/oodialog/oovdata.c sandbox/rick/init/platform/windows/oodialog/oovdeskt.c sandbox/rick/init/platform/windows/oodialog/oovdraw.c sandbox/rick/init/platform/windows/oodialog/oovmsg.c sandbox/rick/init/platform/windows/oodialog/oovother.c sandbox/rick/init/platform/windows/oodialog/oovscrll.c sandbox/rick/init/platform/windows/oodialog/oovtext.c sandbox/rick/init/platform/windows/oodialog/oovtools.c sandbox/rick/init/platform/windows/oodialog/oovuser.c sandbox/rick/init/platform/windows/oodialog/oovutil.c sandbox/rick/init/platform/windows/oodialog/oovutil.h sandbox/rick/init/platform/windows/orxscrpt/eng2rexx.cpp sandbox/rick/init/platform/windows/orxscrpt/eng2rexx.hpp sandbox/rick/init/platform/windows/orxscrpt/orxidispatch.cpp sandbox/rick/init/platform/windows/rexx.c sandbox/rick/init/platform/windows/rexxc.c sandbox/rick/init/platform/windows/rexxhide.c sandbox/rick/init/platform/windows/rexxpaws.c sandbox/rick/init/platform/windows/winlist.c sandbox/rick/init/platform/windows/winlist.h sandbox/rick/init/rexutils/rxmath.cpp sandbox/rick/init/rexutils/rxsock.cpp sandbox/rick/init/rexutils/rxsockfn.cpp sandbox/rick/init/rexutils/unix/rexxutil.cpp sandbox/rick/init/rexutils/windows/rexxutil.cpp sandbox/rick/init/rexutils/windows/rxwinsys.c sandbox/rick/init/rexxapi/unix/MacroSpace.cpp sandbox/rick/init/rexxapi/unix/QueuesAPI.cpp sandbox/rick/init/rexxapi/unix/RexxAPIManager.cpp sandbox/rick/init/rexxapi/unix/SUBCOMCommand.cpp sandbox/rick/init/rexxapi/unix/SubcommandAPI.cpp sandbox/rick/init/rexxapi/unix/SubcommandAPI.h sandbox/rick/init/rexxapi/windows/MacroSpace.c sandbox/rick/init/rexxapi/windows/QueuesAPI.c sandbox/rick/init/rexxapi/windows/RexxAPIManager.c sandbox/rick/init/rexxapi/windows/RexxAPIManager.h sandbox/rick/init/rexxapi/windows/SUBCOMCommand.c sandbox/rick/init/rexxapi/windows/SubcommandAPI.c sandbox/rick/init/rexxapi/windows/SubcommandAPI.h sandbox/rick/init/samples/unix/api/wpipe1/rexxasp1.c sandbox/rick/init/samples/unix/api/wpipe2/rexxasp2.c sandbox/rick/init/samples/unix/api/wpipe3/rexxasp3.c sandbox/rick/init/samples/windows/api/callrxwn/callrxwn.c sandbox/rick/init/samples/windows/api/callrxwn/callrxwn.h sandbox/rick/init/samples/windows/api/rexxexit/rexxexit.c sandbox/rick/init/samples/windows/api/wpipe/wpipe1/rexxapi1.c sandbox/rick/init/samples/windows/api/wpipe/wpipe2/rexxapi2.c sandbox/rick/init/samples/windows/api/wpipe/wpipe3/rexxapi3.c Modified: sandbox/rick/init/api/platform/unix/rexxapitypes.h =================================================================== --- sandbox/rick/init/api/platform/unix/rexxapitypes.h 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/api/platform/unix/rexxapitypes.h 2008-01-24 01:00:00 UTC (rev 2298) @@ -54,9 +54,7 @@ #undef __REXX64__ #endif -#define APIENTRY -#define RexxEntry APIENTRY -#define REXXENTRY APIENTRY +#define REXXENTRY typedef void *REXXPFN; typedef pid_t process_id_t; Modified: sandbox/rick/init/api/platform/unix/rexxplatformapis.h =================================================================== --- sandbox/rick/init/api/platform/unix/rexxplatformapis.h 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/api/platform/unix/rexxplatformapis.h 2008-01-24 01:00:00 UTC (rev 2298) @@ -54,12 +54,12 @@ /*** RexxPullQueue - Retrieve data from an External Data Queue */ -APIRET APIENTRY RexxPullQueue ( +APIRET REXXENTRY RexxPullQueue ( const char *, /* Name of queue to read from */ PRXSTRING, /* RXSTRING to receive data */ REXXDATETIME *, /* Stor for data date/time */ size_t); /* wait status (WAIT|NOWAIT) */ -typedef APIRET (APIENTRY *PFNREXXPULLQUEUE)(const char *, PCONSTRXSTRING, REXXDATETIME *, +typedef APIRET (REXXENTRY *PFNREXXPULLQUEUE)(const char *, PCONSTRXSTRING, REXXDATETIME *, size_t); #endif /* REXXPLATFORMAPIS_INCLUDED */ Modified: sandbox/rick/init/api/platform/windows/rexxapitypes.h =================================================================== --- sandbox/rick/init/api/platform/windows/rexxapitypes.h 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/api/platform/windows/rexxapitypes.h 2008-01-24 01:00:00 UTC (rev 2298) @@ -63,7 +63,6 @@ typedef DWORD thread_id_t; typedef DWORD process_id_t; -#define RexxEntry APIENTRY #define REXXENTRY APIENTRY #ifdef __cplusplus Modified: sandbox/rick/init/api/platform/windows/rexxplatformapis.h =================================================================== --- sandbox/rick/init/api/platform/windows/rexxplatformapis.h 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/api/platform/windows/rexxplatformapis.h 2008-01-24 01:00:00 UTC (rev 2298) @@ -40,12 +40,12 @@ /*** RexxPullQueue - Retrieve data from an External Data Queue */ -APIRET APIENTRY RexxPullQueue ( +APIRET REXXENTRY RexxPullQueue ( const char *, /* Name of queue to read from */ PRXSTRING, /* RXSTRING to receive data */ SYSTEMTIME *, /* Stor for data date/time */ unsigned int); /* wait status (WAIT|NOWAIT) */ -typedef APIRET (APIENTRY *PFNREXXPULLQUEUE)(const char *, PCONSTRXSTRING, SYSTEMTIME *, +typedef APIRET (REXXENTRY *PFNREXXPULLQUEUE)(const char *, PCONSTRXSTRING, SYSTEMTIME *, unsigned int); #endif /* REXXPLATFORMAPIS_INCLUDED */ Modified: sandbox/rick/init/api/rexx.h =================================================================== --- sandbox/rick/init/api/rexx.h 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/api/rexx.h 2008-01-24 01:00:00 UTC (rev 2298) @@ -174,7 +174,7 @@ extern "C" { #endif -int APIENTRY RexxStart ( +int REXXENTRY RexxStart ( size_t, /* Num of args passed to rexx */ PCONSTRXSTRING, /* Array of args passed to rex */ const char *, /* [d:][path] filename[.ext] */ @@ -184,7 +184,7 @@ PRXSYSEXIT, /* SysExit env. names & codes */ short *, /* Ret code from if numeric */ PRXSTRING ); /* Retvalue from the rexx proc */ -typedef APIRET (APIENTRY *PFNREXXSTART)(size_t, PCONSTRXSTRING, const char *, PRXSTRING, +typedef APIRET (REXXENTRY *PFNREXXSTART)(size_t, PCONSTRXSTRING, const char *, PRXSTRING, const char *, int, PRXSYSEXIT, short *, PRXSTRING); #define REXXSTART RexxStart @@ -196,14 +196,14 @@ PRXSYSEXIT); // system exits to use during translation -typedef APIRET (APIENTRY *PFNREXXTRANSLATEPROGRAM)(const char *, const char *, PRXSYSEXIT); +typedef APIRET (REXXENTRY *PFNREXXTRANSLATEPROGRAM)(const char *, const char *, PRXSYSEXIT); #define REXXTRANSLATEPROGRAM RexxTranslateProgram char *REXXENTRY RexxGetVersionInformation(); -typedef char *(APIENTRY *PFNGETVERSIONINFORMATION)(); +typedef char *(REXXENTRY *PFNGETVERSIONINFORMATION)(); #define REXXGETVERSIONINFORMATON RexxGetVersionInformation @@ -213,20 +213,20 @@ /*----------------------------------------------------------------------------*/ /* This typedef simplifies coding of a Subcommand handler. */ -typedef APIRET APIENTRY RexxSubcomHandler(PCONSTRXSTRING, +typedef APIRET REXXENTRY RexxSubcomHandler(PCONSTRXSTRING, unsigned short *, PRXSTRING); /*** RexxRegisterSubcomDll -- Register a DLL entry point */ /*** as a Subcommand handler */ -APIRET APIENTRY RexxRegisterSubcomDll ( +APIRET REXXENTRY RexxRegisterSubcomDll ( const char *, /* Name of subcom handler */ const char *, /* Name of DLL */ const char *, /* Name of procedure in DLL */ const char *, /* User area */ size_t ); /* Drop authority. */ -typedef APIRET (APIENTRY *PFNREXXREGISTERSUBCOMDLL)(const char *, const char *, const char *, +typedef APIRET (REXXENTRY *PFNREXXREGISTERSUBCOMDLL)(const char *, const char *, const char *, char *, size_t); #define REXXREGISTERSUBCOMDLL RexxRegisterSubcomDll @@ -234,22 +234,22 @@ /*** RexxRegisterSubcomExe -- Register an EXE entry point */ /*** as a Subcommand handler */ -APIRET APIENTRY RexxRegisterSubcomExe ( +APIRET REXXENTRY RexxRegisterSubcomExe ( const char *, /* Name of subcom handler */ REXXPFN, /* address of handler in EXE */ const char *); /* User area */ -typedef APIRET (APIENTRY *PFNREXXREGISTERSUBCOMEXE)(const char *, REXXPFN, char *); +typedef APIRET (REXXENTRY *PFNREXXREGISTERSUBCOMEXE)(const char *, REXXPFN, char *); #define REXXREGISTERSUBCOMEXE RexxRegisterSubcomExe /*** RexxQuerySubcom - Query an environment for Existance */ -APIRET APIENTRY RexxQuerySubcom( +APIRET REXXENTRY RexxQuerySubcom( const char *, /* Name of the Environment */ const char *, /* DLL Module Name */ unsigned short *, /* Stor for existance code */ char *); /* Stor for user word */ -typedef APIRET (APIENTRY *PFNREXXQUERYSUBCOM)(const char *, const char *, unsigned short *, +typedef APIRET (REXXENTRY *PFNREXXQUERYSUBCOM)(const char *, const char *, unsigned short *, char *); #define REXXQUERYSUBCOM RexxQuerySubcom @@ -257,10 +257,10 @@ /*** RexxDeregisterSubcom - Drop registration of a Subcommand */ /*** environment */ -APIRET APIENTRY RexxDeregisterSubcom( +APIRET REXXENTRY RexxDeregisterSubcom( const char *, /* Name of the Environment */ const char * ); /* DLL Module Name */ -typedef APIRET (APIENTRY *PFNREXXDEREGISTERSUBCOM)(const char *, const char *); +typedef APIRET (REXXENTRY *PFNREXXDEREGISTERSUBCOM)(const char *, const char *); #define REXXDEREGISTERSUBCOM RexxDeregisterSubcom @@ -270,9 +270,9 @@ /*** RexxVariablePool - Request Variable Pool Service */ -APIRET APIENTRY RexxVariablePool( +APIRET REXXENTRY RexxVariablePool( PSHVBLOCK); /* Pointer to list of SHVBLOCKs*/ -typedef APIRET (APIENTRY *PFNREXXVARIABLEPOOL)(PSHVBLOCK); +typedef APIRET (REXXENTRY *PFNREXXVARIABLEPOOL)(PSHVBLOCK); #define REXXVARIABLEPOOL RexxVariablePool @@ -282,7 +282,7 @@ /* This typedef simplifies coding of an External Function. */ -typedef unsigned int APIENTRY RexxFunctionHandler(const char *, +typedef unsigned int REXXENTRY RexxFunctionHandler(const char *, size_t, PCONSTRXSTRING, const char *, @@ -290,36 +290,36 @@ /*** RexxRegisterFunctionDll - Register a function in the AFT */ -APIRET APIENTRY RexxRegisterFunctionDll ( +APIRET REXXENTRY RexxRegisterFunctionDll ( const char *, /* Name of function to add */ const char *, /* Dll file name (if in dll) */ const char *); /* Entry in dll */ -typedef APIRET (APIENTRY *PFNREXXREGISTERFUNCTIONDLL)(const char *, const char *, const char *); +typedef APIRET (REXXENTRY *PFNREXXREGISTERFUNCTIONDLL)(const char *, const char *, const char *); #define REXXREGISTERFUNCTIONDLL RexxRegisterFunctionDll /*** RexxRegisterFunctionExe - Register a function in the AFT */ -APIRET APIENTRY RexxRegisterFunctionExe ( +APIRET REXXENTRY RexxRegisterFunctionExe ( const char *, /* Name of function to add */ REXXPFN); /* Entry point in EXE */ -typedef APIRET (APIENTRY *PFNREXXREGISTERFUNCTIONEXE)(const char *, REXXPFN); +typedef APIRET (REXXENTRY *PFNREXXREGISTERFUNCTIONEXE)(const char *, REXXPFN); #define REXXREGISTERFUNCTIONEXE RexxRegisterFunctionExe /*** RexxDeregisterFunction - Delete a function from the AFT */ -APIRET APIENTRY RexxDeregisterFunction ( +APIRET REXXENTRY RexxDeregisterFunction ( const char * ); /* Name of function to remove */ -typedef APIRET (APIENTRY *PFNREXXDEREGISTERFUNCTION)(const char *); +typedef APIRET (REXXENTRY *PFNREXXDEREGISTERFUNCTION)(const char *); #define REXXDEREGISTERFUNCTION RexxDeregisterFunction /*** RexxQueryFunction - Scan the AFT for a function */ -APIRET APIENTRY RexxQueryFunction ( +APIRET REXXENTRY RexxQueryFunction ( const char * ); /* Name of function to find */ -typedef APIRET (APIENTRY *PFNREXXQUERYFUNCTION)(const char *); +typedef APIRET (REXXENTRY *PFNREXXQUERYFUNCTION)(const char *); #define REXXQUERYFUNCTION RexxQueryFunction @@ -494,48 +494,48 @@ } RXVALCALL_PARM; /* This typedef simplifies coding of an Exit handler. */ -typedef int APIENTRY RexxExitHandler(int, int, PEXIT); +typedef int REXXENTRY RexxExitHandler(int, int, PEXIT); /*** RexxRegisterExitDll - Register a system exit. */ -APIRET APIENTRY RexxRegisterExitDll ( +APIRET REXXENTRY RexxRegisterExitDll ( const char *, /* Name of the exit handler */ const char *, /* Name of the DLL */ const char *, /* Name of the procedure */ const char *, /* User area */ size_t); /* Drop authority */ -typedef APIRET (APIENTRY *PFNREXXREGISTEREXITDLL)(const char *, const char *, const char *, +typedef APIRET (REXXENTRY *PFNREXXREGISTEREXITDLL)(const char *, const char *, const char *, char *, size_t); #define REXXREGISTEREXITDLL RexxRegisterExitDll /*** RexxRegisterExitExe - Register a system exit. */ -APIRET APIENTRY RexxRegisterExitExe ( +APIRET REXXENTRY RexxRegisterExitExe ( const char *, /* Name of the exit handler */ REXXPFN, /* Address of exit handler */ const char *); /* User area */ -typedef APIRET (APIENTRY *PFNREXXREGISTEREXITEXE)(const char *, REXXPFN, char *); +typedef APIRET (REXXENTRY *PFNREXXREGISTEREXITEXE)(const char *, REXXPFN, char *); #define REXXREGISTEREXITEXE RexxRegisterExitExe /*** RexxDeregisterExit - Drop registration of a system exit. */ -APIRET APIENTRY RexxDeregisterExit ( +APIRET REXXENTRY RexxDeregisterExit ( const char *, /* Exit name */ const char * ) ; /* DLL module name */ -typedef APIRET (APIENTRY *PFNREXXDEREGISTEREXIT)(const char *, const char *); +typedef APIRET (REXXENTRY *PFNREXXDEREGISTEREXIT)(const char *, const char *); #define REXXDEREGISTEREXIT RexxDeregisterExit /*** RexxQueryExit - Query an exit for existance. */ -APIRET APIENTRY RexxQueryExit ( +APIRET REXXENTRY RexxQueryExit ( const char *, /* Exit name */ const char *, /* DLL Module name. */ unsigned short *, /* Existance flag. */ char * ); /* User data. */ -typedef APIRET (APIENTRY *PFNREXXQUERYEXIT)(const char *, const char *, unsigned short *, char *); +typedef APIRET (REXXENTRY *PFNREXXQUERYEXIT)(const char *, const char *, unsigned short *, char *); #define REXXQUERYEXIT RexxQueryExit @@ -545,28 +545,28 @@ /*** RexxSetHalt - Request Program Halt */ -APIRET APIENTRY RexxSetHalt( +APIRET REXXENTRY RexxSetHalt( process_id_t, /* Process Id */ thread_id_t); /* Thread Id */ -typedef APIRET (APIENTRY *PFNREXXSETHALT)(process_id_t, thread_id_t); +typedef APIRET (REXXENTRY *PFNREXXSETHALT)(process_id_t, thread_id_t); #define REXXSETHALT RexxSetHalt /*** RexxSetTrace - Request Program Trace */ -APIRET APIENTRY RexxSetTrace( +APIRET REXXENTRY RexxSetTrace( process_id_t, /* Process Id */ thread_id_t); /* Thread Id */ -typedef APIRET (APIENTRY *PFNREXXSETTRACE)(process_id_t, thread_id_t); +typedef APIRET (REXXENTRY *PFNREXXSETTRACE)(process_id_t, thread_id_t); #define REXXSETTRACE RexxSetTrace /*** RexxResetTrace - Turn Off Program Trace */ -APIRET APIENTRY RexxResetTrace( +APIRET REXXENTRY RexxResetTrace( process_id_t, /* Process Id */ thread_id_t); /* Thread Id */ -typedef APIRET (APIENTRY *PFNREXXRESETTRACE)(process_id_t, thread_id_t); +typedef APIRET (REXXENTRY *PFNREXXRESETTRACE)(process_id_t, thread_id_t); #define REXXRESETTRACE RexxResetTrace @@ -576,66 +576,66 @@ /*** RexxAddMacro - Register a function in the Macro Space */ -APIRET APIENTRY RexxAddMacro( +APIRET REXXENTRY RexxAddMacro( const char *, /* Function to add or change */ const char *, /* Name of file to get function*/ size_t); /* Flag indicating search pos */ -typedef APIRET (APIENTRY *PFNREXXADDMACRO)(const char *, const char *, size_t); +typedef APIRET (REXXENTRY *PFNREXXADDMACRO)(const char *, const char *, size_t); #define REXXADDMACRO RexxAddMacro /*** RexxDropMacro - Remove a function from the Macro Space */ -APIRET APIENTRY RexxDropMacro ( +APIRET REXXENTRY RexxDropMacro ( const char * ); /* Name of function to remove */ -typedef APIRET (APIENTRY *PFNREXXDROPMACRO)(const char *); +typedef APIRET (REXXENTRY *PFNREXXDROPMACRO)(const char *); #define REXXDROPMACRO RexxDropMacro /*** RexxSaveMacroSpace - Save Macro Space functions to a file */ -APIRET APIENTRY RexxSaveMacroSpace ( +APIRET REXXENTRY RexxSaveMacroSpace ( size_t, /* Argument count (0==save all)*/ const char * *, /* List of funct names to save */ const char *); /* File to save functions in */ -typedef APIRET (APIENTRY * PFNREXXSAVEMACROSPACE)(size_t, const char * *, const char *); +typedef APIRET (REXXENTRY * PFNREXXSAVEMACROSPACE)(size_t, const char * *, const char *); #define REXXSAVEMACROSPACE RexxSaveMacroSpace /*** RexxLoadMacroSpace - Load Macro Space functions from a file */ -APIRET APIENTRY RexxLoadMacroSpace ( +APIRET REXXENTRY RexxLoadMacroSpace ( size_t, /* Argument count (0==load all)*/ const char * *, /* List of funct names to load */ const char *); /* File to load functions from */ -typedef APIRET (APIENTRY *PFNREXXLOADMACROSPACE)(size_t, const char * *, const char *); +typedef APIRET (REXXENTRY *PFNREXXLOADMACROSPACE)(size_t, const char * *, const char *); #define REXXLOADMACROSPACE RexxLoadMacroSpace /*** RexxQueryMacro - Find a function's search-order position */ -APIRET APIENTRY RexxQueryMacro ( +APIRET REXXENTRY RexxQueryMacro ( const char *, /* Function to search for */ unsigned short * ); /* Ptr for position flag return*/ -typedef APIRET (APIENTRY *PFNREXXQUERYMACRO)(const char *, unsigned short *); +typedef APIRET (REXXENTRY *PFNREXXQUERYMACRO)(const char *, unsigned short *); #define REXXQUERYMACRO RexxQueryMacro /*** RexxReorderMacro - Change a function's search-order */ /*** position */ -APIRET APIENTRY RexxReorderMacro( +APIRET REXXENTRY RexxReorderMacro( const char *, /* Name of funct change order */ size_t); /* New position for function */ -typedef APIRET (APIENTRY *PFNREXXREORDERMACRO)(const char *, size_t); +typedef APIRET (REXXENTRY *PFNREXXREORDERMACRO)(const char *, size_t); #define REXXREORDERMACRO RexxReorderMacro /*** RexxClearMacroSpace - Remove all functions from a MacroSpace */ -APIRET APIENTRY RexxClearMacroSpace( +APIRET REXXENTRY RexxClearMacroSpace( void ); /* No Arguments. */ -typedef APIRET (APIENTRY *PFNREXXCLEARMACROSPACE)(void); +typedef APIRET (REXXENTRY *PFNREXXCLEARMACROSPACE)(void); #define REXXCLEARMACROSPACE RexxClearMacroSpace @@ -645,45 +645,45 @@ /*** RexxCreateQueue - Create an External Data Queue */ -APIRET APIENTRY RexxCreateQueue ( +APIRET REXXENTRY RexxCreateQueue ( char *, /* Name of queue created */ size_t, /* Size of buf for ret name */ const char *, /* Requested name for queue */ size_t *); /* Duplicate name flag. */ -typedef APIRET (APIENTRY *PFNREXXCREATEQUEUE)(char *, size_t, const char *, size_t); +typedef APIRET (REXXENTRY *PFNREXXCREATEQUEUE)(char *, size_t, const char *, size_t); /*** RexxDeleteQueue - Delete an External Data Queue */ -APIRET APIENTRY RexxDeleteQueue ( +APIRET REXXENTRY RexxDeleteQueue ( const char * ); /* Name of queue to be deleted */ -typedef APIRET (APIENTRY *PFNREXXDELETEQUEUE)(const char *); +typedef APIRET (REXXENTRY *PFNREXXDELETEQUEUE)(const char *); /*** RexxQueryQueue - Query an External Data Queue for number of */ /*** entries */ -APIRET APIENTRY RexxQueryQueue ( +APIRET REXXENTRY RexxQueryQueue ( const char *, /* Name of queue to query */ size_t *); /* Place to put element count */ -typedef APIRET (APIENTRY *PFNREXXQUERYQUEUE)(const char *, size_t *); +typedef APIRET (REXXENTRY *PFNREXXQUERYQUEUE)(const char *, size_t *); /*** RexxAddQueue - Add an entry to an External Data Queue */ -APIRET APIENTRY RexxAddQueue ( +APIRET REXXENTRY RexxAddQueue ( const char *, /* Name of queue to add to */ PCONSTRXSTRING, /* Data string to add */ size_t); /* Queue type (FIFO|LIFO) */ -typedef APIRET (APIENTRY *PFNREXXADDQUEUE)(const char *, PCONSTRXSTRING, size_t); +typedef APIRET (REXXENTRY *PFNREXXADDQUEUE)(const char *, PCONSTRXSTRING, size_t); #include "rexxplatformapis.h" -APIRET APIENTRY RexxShutDownAPI(void); +APIRET REXXENTRY RexxShutDownAPI(void); -typedef APIRET (APIENTRY *PFNREXXSHUTDOWNAPI)(void); +typedef APIRET (REXXENTRY *PFNREXXSHUTDOWNAPI)(void); #define REXXSHUTDOWNAPI RexxShutDownAPI @@ -693,17 +693,17 @@ /*** RexxAllocateMemory */ -void *APIENTRY RexxAllocateMemory( +void *REXXENTRY RexxAllocateMemory( size_t); /* number of bytes to allocate */ -typedef void *(APIENTRY *PFNREXXALLOCATEMEMORY)(size_t ); +typedef void *(REXXENTRY *PFNREXXALLOCATEMEMORY)(size_t ); /*** RexxFreeMemory */ -APIRET APIENTRY RexxFreeMemory( +APIRET REXXENTRY RexxFreeMemory( void *); /* pointer to the memory returned by */ /* RexxAllocateMemory */ -typedef APIRET (APIENTRY *PFNREXXFREEMEMORY)(void *); +typedef APIRET (REXXENTRY *PFNREXXFREEMEMORY)(void *); #ifdef __cplusplus Modified: sandbox/rick/init/kernel/platform/unix/ExternalFunctions.cpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/ExternalFunctions.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/kernel/platform/unix/ExternalFunctions.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -77,13 +77,13 @@ #include "MethodClass.hpp" #include "SourceFile.hpp" #include "RexxNativeAPI.h" /* Lot's of useful REXX macros */ -#include "SubcommandAPI.h" +#include "RexxInternalApis.h" /* Get private REXXAPI API's */ #include "RexxAPIManager.h" #include "APIUtilities.h" #include "ActivityManager.hpp" #include "ProtectedObject.hpp" #include "StringUtil.hpp" -#include "SystemDirectory.hpp" +#include "SystemInterpreter.hpp" #define CMDBUFSIZE 1024 /* Max size of executable cmd */ @@ -303,8 +303,12 @@ else rc = chdir(dir); /* change to the new directory */ } - - return SystemInterpreter::getCurrentWorkingDirectory(); + // update our working directory and return it. + if (rc == 0) + { + SystemInterpreter::updateCurrentWorkingDirectory(); + } + return ooRexxString(SystemInterpreter::currentWorkingDirectory); } @@ -436,13 +440,11 @@ if (!(curr_dir=(char *)malloc(CCHMAXPATH+2)))/* malloc storage for cwd*/ reportException(Error_System_service); - if (!getcwd(curr_dir,CCHMAXPATH)) /* get current directory */ - { - strncpy( achRexxCurDir, getenv("PWD"), CCHMAXPATH); - achRexxCurDir[CCHMAXPATH - 1] = '\0'; - if (achRexxCurDir[0] != '/' ) - reportException(Error_System_service);/* Complain if it fails*/ - } + // make sure we have a working directory + SystemInterpreter::updateCurrentWorkingDirectory(); + // start with a copy of that + strcpy(curr_dir, SystemInterpreter::currentWorkingDirectory); + size += strlen(curr_dir); /* add the space for curr dir */ size++; /* and its terminating '\0' */ size += 4; /* this is for the size itself*/ Modified: sandbox/rick/init/kernel/platform/unix/FileSystem.cpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/FileSystem.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/kernel/platform/unix/FileSystem.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -50,6 +50,7 @@ #include "BufferClass.hpp" #include "RexxNativeAPI.h" #include "ProtectedObject.hpp" +#include "SystemInterpreter.hpp" #include <string.h> #include <stdio.h> #include <stddef.h> @@ -73,8 +74,6 @@ #define DEFEXT1 ".cmd" //#define TEMPEXT ".ORX" /* Temporary development extension */ -extern char achRexxCurDir[ CCHMAXPATH+2 ]; /* Save current working direct */ - RexxString * LocateProgram(RexxString *, const char *[], int); const char * SearchFileName(const char *, char); FILE * SysBinaryFilemode(FILE *); @@ -242,7 +241,7 @@ const char *Name, /* name of rexx proc to check */ char chCont ) /* Control char for search and output */ { - char achFullName[CCHMAXPATH + 2]; /* temporary name buffer */ + static char achFullName[CCHMAXPATH + 2]; /* temporary name buffer */ char achTempName[CCHMAXPATH + 2]; /* temporary name buffer */ char * p; char * q; @@ -323,7 +322,7 @@ if ( achFullName[0] == '\0' ) { enddir=strrchr(SystemInterpreter::currentWorkingDirectory,'/'); /* Copy path */ - memcpy(achFullName, SystemInterpreter::currentWorkingDirectory, enddir-(&achRexxCurDir[0])); + memcpy(achFullName, SystemInterpreter::currentWorkingDirectory, enddir-(&SystemInterpreter::currentWorkingDirectory[0])); achFullName[enddir-(&SystemInterpreter::currentWorkingDirectory[0])] = '\0'; /* Terminate */ } else Modified: sandbox/rick/init/kernel/platform/unix/RexxMain.cpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/RexxMain.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/kernel/platform/unix/RexxMain.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -68,7 +68,6 @@ #include "RexxAPIManager.h" #include "APIDefinitions.h" -#include "SubcommandAPI.h" #include "APIUtilities.h" #include "Interpreter.hpp" @@ -93,7 +92,7 @@ /* Mainline path looks like this: */ /* RexxStart => server_RexxStart */ /******************************************************************************/ -int APIENTRY ApiRexxStart( +int ApiRexxStart( size_t argcount, /* Number of args in arglist */ PCONSTRXSTRING arglist, /* Array of args */ const char *programname, /* REXX program to run */ Modified: sandbox/rick/init/kernel/platform/unix/RexxQueues.cpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/RexxQueues.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/kernel/platform/unix/RexxQueues.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -53,9 +53,8 @@ #include "StreamNative.h" #include "ActivityManager.hpp" #include "RexxNativeActivation.hpp" +#include "RexxInternalApis.h" /* Get private REXXAPI API's */ -#include "SubcommandAPI.h" /* Get private REXX API's */ - /****************************************************************************/ /* Rexx_query_queue */ /****************************************************************************/ Modified: sandbox/rick/init/kernel/platform/unix/SystemCommands.cpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/SystemCommands.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/kernel/platform/unix/SystemCommands.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -62,9 +62,10 @@ #include "RexxActivity.hpp" #include "RexxNativeAPI.h" /* Lot's of useful REXX macros */ #include "ActivityManager.hpp" +#include "SystemInterpreter.hpp" #include "SystemCommands.h" -#include "SubcommandAPI.h" /* Get private REXX API's */ +#include "RexxInternalApis.h" #include <sys/types.h> #include <pwd.h> #include <limits.h> @@ -567,14 +568,8 @@ *rc = chdir(dir_buf); free(dir_buf); - - if (!getcwd(SystemInterpreter::currentWorkingDirectory, CCHMAXPATH)) /* Save current working direct */ - { - strncpy( SystemInterpreter::currentWorkingDirectory, getenv("PWD"), CCHMAXPATH); - SystemInterpreter::currentWorkingDirectory[CCHMAXPATH - 1] = '\0'; - if (SystemInterpreter::currentWorkingDirectory[0] != '/' ) - reportException(Error_System_service); /* Complain if it fails */ - } + // update our current working dir. + SystemInterpreter::updateCurrentWorkingDirectory(); return true; } Modified: sandbox/rick/init/kernel/platform/unix/SystemInterpreter.cpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/SystemInterpreter.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/kernel/platform/unix/SystemInterpreter.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -51,9 +51,21 @@ #include "Interpreter.hpp" #include "RexxAPIManager.h" +#if defined( HAVE_SIGNAL_H ) +# include <signal.h> +#endif +#if defined( HAVE_SYS_SIGNAL_H ) +# include <sys/signal.h> +#endif + +void RxExitClear(int); +void RxExitClearNormal(); + class InterpreterInstance; +// the saved current working directory. +char SystemInterpreter::currentWorkingDirectory[CCHMAXPATH+2]; void SystemInterpreter::processStartup() { @@ -91,25 +103,17 @@ void SystemInterpreter::startInterpreter() { - int lRC; /* Return Code */ - if (!getcwd(currentWorkingDirectory, CCHMAXPATH)) /* Save current working direct */ + // save the working directory, and raise an error if we can't get this + updateCurrentWorkingDirectory(); + if (strlen(currentWorkingDirectory) == 0) { - strncpy( currentWorkingDirectory, getenv("PWD"), CCHMAXPATH); - currentWorkingDirectory[CCHMAXPATH - 1] = '\0'; - if (currentWorkingDirectory[0] != '/' ) - { - logicError(" *** ERROR: No current working directory for REXX!\n"); - } - else - { - lRC = RxAPIHOMEset(); /* Set the REXX HOME */ - } + logic_error(" *** ERROR: No current working directory for REXX!\n"); } - lRC = RxAPIHOMEset(); /* Set the REXX HOME */ - if ( lRC ) + // make sure we have the home set appropriately + if ( RxAPIHOMEset() ) { - logicError(" *** ERROR: No HOME or RXHOME directory for REXX!\n"); + logic_error(" *** ERROR: No HOME or RXHOME directory for REXX!\n"); } } @@ -147,17 +151,15 @@ * * @return The current working directory as a Rexx string. */ -RexxString *SystemInterpreter::getCurrentWorkingDirectory() +void SystemInterpreter::updateCurrentWorkingDirectory() { - if (!getcwd(currentWorkingDirector, CCHMAXPATH) || (rc != 0)) /* Get current working direct */ + if (!getcwd(currentWorkingDirectory, CCHMAXPATH)) /* Get current working direct */ { strncpy(currentWorkingDirectory, getenv("PWD"), CCHMAXPATH); currentWorkingDirectory[CCHMAXPATH - 1] = '\0'; - if ((achRexxCurDir[0] != '/' ) || (rc != 0)) + if (currentWorkingDirectory[0] != '/' ) { - return ooRexxString(""); /* No directory returned */ + currentWorkingDirectory[0] = '\0'; } } - return ooRexxString(currentWorkingDirectory); /* Return the current directory*/ - } Modified: sandbox/rick/init/kernel/platform/unix/SystemInterpreter.hpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/SystemInterpreter.hpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/kernel/platform/unix/SystemInterpreter.hpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -69,12 +69,10 @@ static void initializeInstance(InterpreterInstance *instance); static void terminateInstance(InterpreterInstance *instance); - static RexxString *getCurrentWorkingDirectory(); + static void updateCurrentWorkingDirectory(); -protected: - // saved current working directory - char currentWorkingDirectory[CCHMAXPATH+2]; + static char currentWorkingDirectory[CCHMAXPATH+2]; }; Modified: sandbox/rick/init/kernel/platform/unix/VariablePool.cpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/VariablePool.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/kernel/platform/unix/VariablePool.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -72,7 +72,7 @@ #include <stdlib.h> extern "C" { - APIRET APIENTRY RexxStemSort(const char *stemname, int order, int type, + APIRET REXXENTRY RexxStemSort(const char *stemname, int order, int type, size_t start, size_t end, size_t firstcol, size_t lastcol); } @@ -112,7 +112,7 @@ /* rc - Composite return code for all request blocks (individual rc's are */ /* set within the shvret fields of each request block). */ /******************************************************************************/ -APIRET APIENTRY RexxVariablePool(PSHVBLOCK pshvblock) +APIRET REXXENTRY RexxVariablePool(PSHVBLOCK pshvblock) { if (!RexxQuery()) /* Are we up? */ Modified: sandbox/rick/init/kernel/platform/windows/ExternalFunctions.cpp =================================================================== --- sandbox/rick/init/kernel/platform/windows/ExternalFunctions.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/kernel/platform/windows/ExternalFunctions.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -69,7 +69,7 @@ #include "MethodClass.hpp" #include "SourceFile.hpp" #include "RexxNativeAPI.h" /* Lot's of useful REXX macros */ -#include "SubcommandAPI.h" /* Get private REXXAPI API's */ +#include "RexxInternalApis.h" /* Get private REXXAPI API's */ #include "RexxAPIManager.h" #include "ProtectedObject.hpp" #include "StringUtil.hpp" Modified: sandbox/rick/init/kernel/platform/windows/PlatformDefinitions.h =================================================================== --- sandbox/rick/init/kernel/platform/windows/PlatformDefinitions.h 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/kernel/platform/windows/PlatformDefinitions.h 2008-01-24 01:00:00 UTC (rev 2298) @@ -124,21 +124,6 @@ typedef void (* PTHREADFN)(void *); /* define a thread function */ /******************************************************************************/ -/* REQUIRED: Define any special requirements for external entry calls back */ -/* into the interpreter. The default is no special requirements. */ -/******************************************************************************/ - -#define REXXENTRY APIENTRY - -/******************************************************************************/ -/* REQUIRED: This was needed for Windows. Any entry points containing */ -/* variable length arguments need to use __cdecl calling convention. */ -/******************************************************************************/ - -#define VLAREXXENTRY __cdecl /* external entry points */ -#define VLAENTRY __cdecl /* internal entry points */ - -/******************************************************************************/ /* REQUIRED: Definitions for REXX semaphore functions. These default to */ /* the REXX library semaphore package, but can be redefined to map directly */ /* to system specific functions too. */ Modified: sandbox/rick/init/kernel/platform/windows/RexxCompiler.cpp =================================================================== --- sandbox/rick/init/kernel/platform/windows/RexxCompiler.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/kernel/platform/windows/RexxCompiler.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -48,6 +48,7 @@ #include "rexx.h" #include "PlatformDefinitions.h" #include "RexxErrorCodes.h" +#include "RexxInternalApis.h" #define DLLNAME "rexx.dll" @@ -55,9 +56,6 @@ // TODO: Add these to the official API list -extern "C" APIRET APIENTRY RexxTranslateProgram(const char *, const char *, PRXSYSEXIT); -extern "C" char * APIENTRY RexxGetVersionInformation(); - void DisplayError(HINSTANCE hDll, int err_no) { char str[BUFFERLEN]; Modified: sandbox/rick/init/kernel/platform/windows/RexxMain.cpp =================================================================== --- sandbox/rick/init/kernel/platform/windows/RexxMain.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/kernel/platform/windows/RexxMain.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -63,7 +63,7 @@ #include "IntegerClass.hpp" #include "RexxNativeAPI.h" /* REXX interface/native method code */ #include "APIServiceTables.h" -#include "SubcommandAPI.h" +#include "RexxInternalApis.h" /* Get private REXXAPI API's */ #include "RexxAPIManager.h" #include "Interpreter.hpp" #include "ProtectedObject.hpp" @@ -120,7 +120,7 @@ } -BOOL APIENTRY RexxSetProcessMessages(BOOL onoff) +BOOL REXXENTRY RexxSetProcessMessages(BOOL onoff) { bool old; old = UseMessageLoop; Modified: sandbox/rick/init/kernel/platform/windows/RexxQueues.cpp =================================================================== --- sandbox/rick/init/kernel/platform/windows/RexxQueues.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/kernel/platform/windows/RexxQueues.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -49,7 +49,7 @@ #include "RexxNativeAPI.h" /* Lot's of useful REXX macros */ #include "StreamNative.h" #include "ActivityManager.hpp" -#include "SubcommandAPI.h" /* Get private REXXAPI API's */ +#include "RexxInternalApis.h" /* Get private REXXAPI API's */ /********************************************************************************************/ /* Rexx_query_queue */ Modified: sandbox/rick/init/kernel/platform/windows/SystemCommands.cpp =================================================================== --- sandbox/rick/init/kernel/platform/windows/SystemCommands.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/kernel/platform/windows/SystemCommands.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -56,13 +56,13 @@ #include "RexxNativeAPI.h" /* Lot's of useful REXX macros */ #include "ActivityManager.hpp" #include "ProtectedObject.hpp" +#include "RexxInternalApis.h" /* Get private REXXAPI API's */ #define CMDBUFSIZE32S 260 /* Max size of executable cmd */ #define CMDBUFSIZENT 8092 /* Max size of executable cmd */ #define CMDDEFNAME32S "COMMAND.COM" /* Default Win 95 cmd handler */ #define CMDDEFNAMENT "CMD.EXE" /* Default Win NT cmd handler */ #define DEFEXT "REX" /* Default Win REXX program ext */ -#include "SubcommandAPI.h" /* Get private REXXAPI API's */ #define UNKNOWN_COMMAND 1 /* unknown command return code */ #include "direct.h" Modified: sandbox/rick/init/kernel/platform/windows/VariablePool.cpp =================================================================== --- sandbox/rick/init/kernel/platform/windows/VariablePool.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/kernel/platform/windows/VariablePool.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -63,7 +63,7 @@ #include "ExpressionBaseVariable.hpp" #include "RexxNativeAPI.h" /* Get C-method declares, etc. */ -APIRET APIENTRY RexxStemSort(const char *stemname, int order, int type, +APIRET REXXENTRY RexxStemSort(const char *stemname, int order, int type, size_t start, size_t end, size_t firstcol, size_t lastcol); #define IS_EQUAL(s,l) (s->strCompare(l)) Modified: sandbox/rick/init/kernel/runtime/RexxStartup.cpp =================================================================== --- sandbox/rick/init/kernel/runtime/RexxStartup.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/kernel/runtime/RexxStartup.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -126,7 +126,7 @@ /* and runs the requested program. */ /* */ /******************************************************************************/ -int APIENTRY RexxStart( +int REXXENTRY RexxStart( size_t argcount, /* Number of args in arglist */ PCONSTRXSTRING arglist, /* Array of args */ const char *programname, /* REXX program to run */ @@ -506,7 +506,7 @@ * * @param precision The current precision. */ -size_t RexxGetCurrentPrecision() +size_t REXXENTRY RexxGetCurrentPrecision() { NativeContextBlock context; // get the digits setting from the current context. Modified: sandbox/rick/init/lib/RexxInternalApis.h =================================================================== --- sandbox/rick/init/lib/RexxInternalApis.h 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/lib/RexxInternalApis.h 2008-01-24 01:00:00 UTC (rev 2298) @@ -46,15 +46,15 @@ extern "C" { #endif -int APIENTRY RexxResolveExit(const char *, REXXPFN *); +int REXXENTRY RexxResolveExit(const char *, REXXPFN *); -APIRET APIENTRY RexxCallFunction (const char *, size_t, PCONSTRXSTRING, int *, PRXSTRING, const char *); +APIRET REXXENTRY RexxCallFunction (const char *, size_t, PCONSTRXSTRING, int *, PRXSTRING, const char *); -APIRET APIENTRY RexxExecuteMacroFunction (const char *, PRXSTRING ); +APIRET REXXENTRY RexxExecuteMacroFunction (const char *, PRXSTRING ); void REXXENTRY RexxCreateInterpreterImage(); -size_t RexxGetCurrentPrecision(); +size_t REXXENTRY RexxGetCurrentPrecision(); void REXXENTRY RexxCreateScriptContext(const char *contextName); @@ -68,6 +68,12 @@ REXXOBJECT (REXXENTRY *callbackFunction)(void *), PRXSYSEXIT exit_list, REXXOBJECT *presult, REXXOBJECT securityManager, RexxConditionData *pRexxCondData); +APIRET REXXENTRY RexxLoadSubcom(const char *, const char *); + +/*** RexxCallSubcom - Execute a command in an environment */ +APIRET REXXENTRY RexxCallSubcom(const char *, const char *, PCONSTRXSTRING, + unsigned short *, wholenumber_t *, PRXSTRING ); + #ifdef __cplusplus } #endif Modified: sandbox/rick/init/platform/unix/RexxCompiler.cpp =================================================================== --- sandbox/rick/init/platform/unix/RexxCompiler.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/platform/unix/RexxCompiler.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -75,7 +75,7 @@ #ifdef __cplusplus extern "C" { #endif -APIRET APIENTRY RexxTranslateProgram(const char *, const char *); +APIRET REXXENTRY RexxTranslateProgram(const char *, const char *); #ifdef __cplusplus } #endif Modified: sandbox/rick/init/platform/unix/rexx.cpp =================================================================== --- sandbox/rick/init/platform/unix/rexx.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/platform/unix/rexx.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -62,14 +62,6 @@ #include "rexx.h" -#ifdef __cplusplus -extern "C" { -#endif -bool APIENTRY RexxInitialize (void); -#ifdef __cplusplus -} -#endif - #if defined(AIX) #define SYSINITIALADDRESS "ksh" #elif defined(OPSYS_SUN) Modified: sandbox/rick/init/platform/windows/ole/events.cpp =================================================================== --- sandbox/rick/init/platform/windows/ole/events.cpp 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/platform/windows/ole/events.cpp 2008-01-24 01:00:00 UTC (rev 2298) @@ -144,7 +144,7 @@ STDMETHODIMP OLEObjectEvent::GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, unsigned int cNames, LCID lcid, - DISPID FAR *rgDispId) + DISPID *rgDispId) { //fprintf(stderr,"OLEObjectEvent::GetIDsOfNames\n"); return ResultFromScode(E_OUTOFMEMORY); Modified: sandbox/rick/init/platform/windows/ole/events.h =================================================================== --- sandbox/rick/init/platform/windows/ole/events.h 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/platform/windows/ole/events.h 2008-01-24 01:00:00 UTC (rev 2298) @@ -58,7 +58,7 @@ VARTYPE *pOptVt; PUSHORT pusOptFlags; struct _OLEFUNCINFO * pNext; -} OLEFUNCINFO, FAR * POLEFUNCINFO, FAR * FAR * PPOLEFUNCINFO; +} OLEFUNCINFO, * POLEFUNCINFO, * * PPOLEFUNCINFO; // extended structure for events typedef struct _OLEFUNCINFO2 @@ -74,7 +74,7 @@ PUSHORT pusOptFlags; char **pszName; struct _OLEFUNCINFO2 * pNext; -} OLEFUNCINFO2, FAR * POLEFUNCINFO2, FAR * FAR * PPOLEFUNCINFO2; +} OLEFUNCINFO2, * POLEFUNCINFO2, * * PPOLEFUNCINFO2; typedef struct _OLECONSTINFO { @@ -82,7 +82,7 @@ MEMBERID memId; VARIANT sValue; struct _OLECONSTINFO *pNext; -} OLECONSTINFO, FAR * POLECONSTINFO, FAR * FAR * PPOLECONSTINFO; +} OLECONSTINFO, * POLECONSTINFO, * * PPOLECONSTINFO; typedef struct _OLECLASSINFO { @@ -96,14 +96,14 @@ int iInstances; BOOL fUsed; -} OLECLASSINFO, FAR * POLECLASSINFO, FAR * FAR * PPOLECLASSINFO; +} OLECLASSINFO, * POLECLASSINFO, * * PPOLECLASSINFO; typedef struct _TYPELIBLIST { GUID guid; POLECONSTINFO info; struct _TYPELIBLIST *next; -} TYPELIBLIST, FAR * PTYPELIBLIST; +} TYPELIBLIST, * PTYPELIBLIST; /* event handler class */ Modified: sandbox/rick/init/platform/windows/ole/orexxole.c =================================================================== --- sandbox/rick/init/platform/windows/ole/orexxole.c 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/platform/windows/ole/orexxole.c 2008-01-24 01:00:00 UTC (rev 2298) @@ -97,8 +97,8 @@ BOOL fIsRexxArray(REXXOBJECT TestObject); BOOL fIsOLEObject(REXXOBJECT TestObject); BOOL fIsOleVariant(REXXOBJECT TestObject); -BOOL createEmptySafeArray(VARIANT FAR *); -BOOL fRexxArray2SafeArray(REXXOBJECT RxArray, VARIANT FAR *VarArray, size_t iArgPos); +BOOL createEmptySafeArray(VARIANT *); +BOOL fRexxArray2SafeArray(REXXOBJECT RxArray, VARIANT *VarArray, size_t iArgPos); BOOL fExploreTypeAttr( ITypeInfo *pTypeInfo, TYPEATTR *pTypeAttr, POLECLASSINFO pClsInfo ); VARTYPE getUserDefinedVT( ITypeInfo *pTypeInfo, HREFTYPE hrt ); BOOL fExploreTypeInfo( ITypeInfo *pTypeInfo, POLECLASSINFO pClsInfo ); @@ -589,7 +589,7 @@ // of "desperate measure") OleUninitialize() will be called when a PROCESS_DETACH is // sent to DllMain and the instance count is NOT zero. This might still cause trouble. -BOOL APIENTRY DllMain(HANDLE hModule, +BOOL REXXENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { @@ -1695,7 +1695,7 @@ * * @return True always. */ -BOOL createEmptySafeArray(VARIANT FAR *VarArray) +BOOL createEmptySafeArray(VARIANT *VarArray) { SAFEARRAY *pSafeArray; SAFEARRAYBOUND *pArrayBound; @@ -1715,7 +1715,7 @@ } -BOOL fRexxArray2SafeArray(REXXOBJECT RxArray, VARIANT FAR *VarArray, size_t iArgPos) +BOOL fRexxArray2SafeArray(REXXOBJECT RxArray, VARIANT *VarArray, size_t iArgPos) { BOOL fDone = FALSE; LONG lDimensions; Modified: sandbox/rick/init/platform/windows/oodialog/oovbmp.c =================================================================== --- sandbox/rick/init/platform/windows/oodialog/oovbmp.c 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/platform/windows/oodialog/oovbmp.c 2008-01-24 01:00:00 UTC (rev 2298) @@ -411,7 +411,7 @@ /* handle the bitmap buttons that are stored in the bitmap table */ -ULONG APIENTRY BmpButton( +ULONG REXXENTRY BmpButton( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -714,7 +714,7 @@ -ULONG APIENTRY LoadRemoveBitmap( +ULONG REXXENTRY LoadRemoveBitmap( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -754,7 +754,7 @@ -ULONG APIENTRY ScrollTheWindow( +ULONG REXXENTRY ScrollTheWindow( PUCHAR funcname, ULONG argc, RXSTRING argv[], Modified: sandbox/rick/init/platform/windows/oodialog/oovdata.c =================================================================== --- sandbox/rick/init/platform/windows/oodialog/oovdata.c 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/platform/windows/oodialog/oovdata.c 2008-01-24 01:00:00 UTC (rev 2298) @@ -363,7 +363,7 @@ } -ULONG APIENTRY GetItemData( +ULONG REXXENTRY GetItemData( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -468,7 +468,7 @@ -ULONG APIENTRY SetItemData( +ULONG REXXENTRY SetItemData( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -551,7 +551,7 @@ -ULONG APIENTRY SetStemData( +ULONG REXXENTRY SetStemData( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -649,7 +649,7 @@ -ULONG APIENTRY GetStemData( +ULONG REXXENTRY GetStemData( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -746,7 +746,7 @@ } -ULONG APIENTRY DataTable( +ULONG REXXENTRY DataTable( PUCHAR funcname, ULONG argc, RXSTRING argv[], Modified: sandbox/rick/init/platform/windows/oodialog/oovdeskt.c =================================================================== --- sandbox/rick/init/platform/windows/oodialog/oovdeskt.c 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/platform/windows/oodialog/oovdeskt.c 2008-01-24 01:00:00 UTC (rev 2298) @@ -43,7 +43,7 @@ #include "oovutil.h" -ULONG APIENTRY FindTheWindow( +ULONG REXXENTRY FindTheWindow( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -79,7 +79,7 @@ retstr->strlength = strlen(retstr->strptr); } -ULONG APIENTRY Wnd_Desktop( +ULONG REXXENTRY Wnd_Desktop( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -346,7 +346,7 @@ -ULONG APIENTRY WndShow_Pos( +ULONG REXXENTRY WndShow_Pos( PUCHAR funcname, ULONG argc, RXSTRING argv[], Modified: sandbox/rick/init/platform/windows/oodialog/oovdraw.c =================================================================== --- sandbox/rick/init/platform/windows/oodialog/oovdraw.c 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/platform/windows/oodialog/oovdraw.c 2008-01-24 01:00:00 UTC (rev 2298) @@ -78,7 +78,7 @@ /* Get information about window rectangle, redraw and clear a rectangle */ -ULONG APIENTRY WindowRect( +ULONG REXXENTRY WindowRect( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -223,7 +223,7 @@ /* Get and free a device, create pen and brush objects (no font), assign and delete graphic objects */ -ULONG APIENTRY HandleDC_Obj( +ULONG REXXENTRY HandleDC_Obj( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -339,7 +339,7 @@ /* handle all the drawing like SetPixel, LineTo,.... */ -ULONG APIENTRY DCDraw( +ULONG REXXENTRY DCDraw( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -450,7 +450,7 @@ /* Prepares a DC for drawing (like MoveToEx) and gets info from a DC (like GetPixel) */ -ULONG APIENTRY DrawGetSet( +ULONG REXXENTRY DrawGetSet( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -520,7 +520,7 @@ /* Set the background of the dialog or the color of dialog items */ -ULONG APIENTRY SetBackground( +ULONG REXXENTRY SetBackground( PUCHAR funcname, ULONG argc, RXSTRING argv[], Modified: sandbox/rick/init/platform/windows/oodialog/oovmsg.c =================================================================== --- sandbox/rick/init/platform/windows/oodialog/oovmsg.c 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/platform/windows/oodialog/oovmsg.c 2008-01-24 01:00:00 UTC (rev 2298) @@ -356,7 +356,7 @@ #define NARG 7 -ULONG APIENTRY AddUserMessage( +ULONG REXXENTRY AddUserMessage( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -397,7 +397,7 @@ -ULONG APIENTRY SendWinMsg( +ULONG REXXENTRY SendWinMsg( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -512,7 +512,7 @@ -ULONG APIENTRY GetDlgMsg( +ULONG REXXENTRY GetDlgMsg( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -547,7 +547,7 @@ } -ULONG APIENTRY SetLBTabStops( +ULONG REXXENTRY SetLBTabStops( PUCHAR funcname, ULONG argc, RXSTRING argv[], Modified: sandbox/rick/init/platform/windows/oodialog/oovother.c =================================================================== --- sandbox/rick/init/platform/windows/oodialog/oovother.c 2008-01-23 22:31:25 UTC (rev 2297) +++ sandbox/rick/init/platform/windows/oodialog/oovother.c 2008-01-24 01:00:00 UTC (rev 2298) @@ -66,7 +66,7 @@ static void freeSubclassData(SUBCLASSDATA *); static BOOL removeKeyPressSubclass(SUBCLASSDATA *, HWND, INT); -ULONG APIENTRY PlaySoundFile( +ULONG REXXENTRY PlaySoundFile( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -90,7 +90,7 @@ } -ULONG APIENTRY PlaySoundFileInLoop( +ULONG REXXENTRY PlaySoundFileInLoop( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -111,7 +111,7 @@ } -ULONG APIENTRY StopSoundFile( +ULONG REXXENTRY StopSoundFile( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -130,7 +130,7 @@ } -UINT APIENTRY OFNSetForegroundHookProc( +UINT REXXENTRY OFNSetForegroundHookProc( HWND hdlg, // handle to child dialog window UINT uiMsg, // message identifier WPARAM wParam, // message parameter @@ -207,7 +207,7 @@ #define VALIDARG(argn) (argc >= argn) && argv[argn-1].strptr && argv[argn-1].strptr[0] -ULONG APIENTRY GetFileNameWindow( +ULONG REXXENTRY GetFileNameWindow( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -280,7 +280,7 @@ } -ULONG APIENTRY PlaySnd( +ULONG REXXENTRY PlaySnd( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -309,7 +309,7 @@ } -ULONG APIENTRY SleepMS( +ULONG REXXENTRY SleepMS( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -324,7 +324,7 @@ } -ULONG APIENTRY WinTimer( +ULONG REXXENTRY WinTimer( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -528,7 +528,7 @@ } -ULONG APIENTRY HandleTreeCtrl( +ULONG REXXENTRY HandleTreeCtrl( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -1081,7 +1081,7 @@ * 1 the Windows API call failed * > 1 dependent on the function, usually a returned value not a return code */ -ULONG APIENTRY HandleControlEx( +ULONG REXXENTRY HandleControlEx( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -1453,7 +1453,7 @@ * 1 the Windows API call failed * > 1 dependent on the function, usually a returned value not a return code */ -ULONG APIENTRY HandleListCtrlEx( +ULONG REXXENTRY HandleListCtrlEx( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -1577,7 +1577,7 @@ } -ULONG APIENTRY HandleListCtrl( +ULONG REXXENTRY HandleListCtrl( PUCHAR funcname, ULONG argc, RXSTRING argv[], @@ -2097,7 +2097,7 @@ -ULONG APIENTRY HandleOtherNewCtrls( +ULONG REXXENTRY HandleOtherNewCtrls( PUCHAR funcname, ULONG argc, RXSTRING argv[], Modified: ... [truncated message content] |
From: <bi...@us...> - 2008-01-23 22:31:22
|
Revision: 2297 http://oorexx.svn.sourceforge.net/oorexx/?rev=2297&view=rev Author: bigrixx Date: 2008-01-23 14:31:25 -0800 (Wed, 23 Jan 2008) Log Message: ----------- incremental checkin Modified Paths: -------------- sandbox/rick/init/kernel/platform/unix/ExternalFunctions.cpp sandbox/rick/init/kernel/platform/unix/FileSystem.cpp sandbox/rick/init/kernel/platform/unix/MiscSystem.cpp sandbox/rick/init/kernel/platform/unix/PlatformDefinitions.h sandbox/rick/init/kernel/platform/unix/SystemCommands.cpp sandbox/rick/init/kernel/platform/unix/SystemInterpreter.cpp sandbox/rick/init/kernel/platform/unix/SystemInterpreter.hpp Modified: sandbox/rick/init/kernel/platform/unix/ExternalFunctions.cpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/ExternalFunctions.cpp 2008-01-23 21:06:25 UTC (rev 2296) +++ sandbox/rick/init/kernel/platform/unix/ExternalFunctions.cpp 2008-01-23 22:31:25 UTC (rev 2297) @@ -83,6 +83,7 @@ #include "ActivityManager.hpp" #include "ProtectedObject.hpp" #include "StringUtil.hpp" +#include "SystemDirectory.hpp" #define CMDBUFSIZE 1024 /* Max size of executable cmd */ @@ -112,8 +113,6 @@ #define KIOCSOUND 0x4B2F /* start sound generation (0 for off) */ -extern char achRexxCurDir[ CCHMAXPATH+2 ]; /* Save current working direct */ - typedef struct _ENVENTRY { /* setlocal/endlocal structure */ size_t size; /* size of the saved memory */ } ENVENTRY; @@ -305,14 +304,7 @@ rc = chdir(dir); /* change to the new directory */ } - if (!getcwd(achRexxCurDir, CCHMAXPATH) || (rc != 0)) /* Get current working direct */ - { - strncpy( achRexxCurDir, getenv("PWD"), CCHMAXPATH); - achRexxCurDir[CCHMAXPATH - 1] = '\0'; - if ((achRexxCurDir[0] != '/' ) || (rc != 0)) - return ooRexxString(""); /* No directory returned */ - } - return ooRexxString(achRexxCurDir); /* Return the current directory*/ + return SystemInterpreter::getCurrentWorkingDirectory(); } Modified: sandbox/rick/init/kernel/platform/unix/FileSystem.cpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/FileSystem.cpp 2008-01-23 21:06:25 UTC (rev 2296) +++ sandbox/rick/init/kernel/platform/unix/FileSystem.cpp 2008-01-23 22:31:25 UTC (rev 2297) @@ -242,7 +242,7 @@ const char *Name, /* name of rexx proc to check */ char chCont ) /* Control char for search and output */ { - static char achFullName[CCHMAXPATH + 2]; /* temporary name buffer */ + char achFullName[CCHMAXPATH + 2]; /* temporary name buffer */ char achTempName[CCHMAXPATH + 2]; /* temporary name buffer */ char * p; char * q; @@ -289,14 +289,14 @@ case '.': if ( *(p+1) == '\0' ) { - strcpy(achFullName, achRexxCurDir); + strcpy(achFullName, SystemInterpreter::currentWorkingDirectory); strncat( achFullName, (Name+1), ( CCHMAXPATH - strlen(achFullName)) ); break; } if ( *(p+1) == '/' ) { - strcpy(achFullName, achRexxCurDir); + strcpy(achFullName, SystemInterpreter::currentWorkingDirectory); p = p + 2; } if ( ( *(p+1) == '.' ) && ( *(p+2) == '\0' ) ) @@ -304,9 +304,9 @@ p = p + 2; if ( achFullName[0] == '\0' ) { - enddir=strrchr(achRexxCurDir,'/'); /* Copy path */ - memcpy(achFullName, achRexxCurDir, enddir-(&achRexxCurDir[0])); - achFullName[enddir-(&achRexxCurDir[0])] = '\0'; /* Terminate */ + enddir=strrchr(SystemInterpreter::currentWorkingDirectory,'/'); /* Copy path */ + memcpy(achFullName, SystemInterpreter::currentWorkingDirectory, enddir-(&SystemInterpreter::currentWorkingDirectory[0])); + achFullName[enddir-(&SystemInterpreter::currentWorkingDirectory[0])] = '\0'; /* Terminate */ } else { @@ -322,9 +322,9 @@ p = p + 3; if ( achFullName[0] == '\0' ) { - enddir=strrchr(achRexxCurDir,'/'); /* Copy path */ - memcpy(achFullName, achRexxCurDir, enddir-(&achRexxCurDir[0])); - achFullName[enddir-(&achRexxCurDir[0])] = '\0'; /* Terminate */ + enddir=strrchr(SystemInterpreter::currentWorkingDirectory,'/'); /* Copy path */ + memcpy(achFullName, SystemInterpreter::currentWorkingDirectory, enddir-(&achRexxCurDir[0])); + achFullName[enddir-(&SystemInterpreter::currentWorkingDirectory[0])] = '\0'; /* Terminate */ } else { @@ -363,7 +363,7 @@ if ((!stat(Name, &dummy)) || (chCont == 'A')) /* First try current dir */ { - strcpy(achFullName, achRexxCurDir); /* Copy current directory in */ + strcpy(achFullName, SystemInterpreter::currentWorkingDirectory); /* Copy current directory in */ strcat(achFullName,"/"); /* Put in a final slash */ strcat(achFullName, Name); /* Now add name to end */ found = 1; /* Tell caller we found it */ Modified: sandbox/rick/init/kernel/platform/unix/MiscSystem.cpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/MiscSystem.cpp 2008-01-23 21:06:25 UTC (rev 2296) +++ sandbox/rick/init/kernel/platform/unix/MiscSystem.cpp 2008-01-23 22:31:25 UTC (rev 2297) @@ -90,16 +90,9 @@ void RxExitClearNormal(); -extern bool bProcessExitInitFlag; - unsigned int iClauseCounter=0; // count of clauses #define LOADED_OBJECTS 100 -#define CCHMAXPATH PATH_MAX+1 - -char achRexxCurDir[ CCHMAXPATH+2 ]; /* Save current working direct */ -extern int SecureFlag; - void SysTermination(void) /******************************************************************************/ /* Function: Perform system specific termination. */ @@ -107,61 +100,6 @@ { } -void SysInitialize(void) -/******************************************************************************/ -/* Function: Perform system specific initialization. */ -/******************************************************************************/ -{ - int lRC; /* Return Code */ - if (!getcwd(achRexxCurDir, CCHMAXPATH)) /* Save current working direct */ - { - strncpy( achRexxCurDir, getenv("PWD"), CCHMAXPATH); - achRexxCurDir[CCHMAXPATH - 1] = '\0'; - if (achRexxCurDir[0] != '/' ) - { - fprintf(stderr," *** ERROR: No current working directory for REXX!\n"); - exit(-1); /* all done ERROR end */ - } - else - lRC = RxAPIHOMEset(); /* Set the REXX HOME */ - } - lRC = RxAPIHOMEset(); /* Set the REXX HOME */ - - if ( lRC ) - { - fprintf(stderr," *** ERROR: No HOME or RXHOME directory for REXX!\n"); - exit(-1); /* all done ERROR end */ - } - - SecureFlag = 1; - -/* this is for normal process termination */ - if (bProcessExitInitFlag == false) - { - bProcessExitInitFlag = true; - atexit(RxExitClearNormal); - /* Set the cleanup handler for unconditional process termination */ - struct sigaction new_action; - struct sigaction old_action; - - /* Set up the structure to specify the new action */ - new_action.sa_handler = RxExitClear; - old_action.sa_handler = NULL; - sigfillset(&new_action.sa_mask); - new_action.sa_flags = SA_RESTART; - -/* Termination signals are set by Object REXX whenever the signals were not set */ -/* from outside (calling C-routine). The SIGSEGV signal is not set any more, so */ -/* that we now get a coredump instead of a hang up */ - - sigaction(SIGINT, NULL, &old_action); - if (old_action.sa_handler == NULL) /* not set by ext. exit handler*/ - { - sigaction(SIGINT, &new_action, NULL); /* exitClear on SIGTERM signal */ - } - } -} - RexxString *SysVersion(void) /******************************************************************************/ /* Function: Return the system specific version identifier that is stored */ Modified: sandbox/rick/init/kernel/platform/unix/PlatformDefinitions.h =================================================================== --- sandbox/rick/init/kernel/platform/unix/PlatformDefinitions.h 2008-01-23 21:06:25 UTC (rev 2296) +++ sandbox/rick/init/kernel/platform/unix/PlatformDefinitions.h 2008-01-23 22:31:25 UTC (rev 2297) @@ -123,8 +123,6 @@ #define HMTX SMTX #define SEV RexxSemaphore * // semaphore definitions and init -extern int SecureFlag; - /******************************************************************************/ /* REQUIRED: Define the REXX type for exceptions. These can be system */ /* specific exception registration info or any place holder type if this */ Modified: sandbox/rick/init/kernel/platform/unix/SystemCommands.cpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/SystemCommands.cpp 2008-01-23 21:06:25 UTC (rev 2296) +++ sandbox/rick/init/kernel/platform/unix/SystemCommands.cpp 2008-01-23 22:31:25 UTC (rev 2297) @@ -93,8 +93,6 @@ extern int putflag; -extern char achRexxCurDir[ CCHMAXPATH+2 ]; /* Save current working direct */ - char * args[MAX_COMMAND_ARGS+1]; /* Array for argument parsing */ int sys_command(const char *cmd, CMD_TYPE local_env_type); @@ -570,11 +568,11 @@ free(dir_buf); - if (!getcwd(achRexxCurDir, CCHMAXPATH)) /* Save current working direct */ + if (!getcwd(SystemInterpreter::currentWorkingDirectory, CCHMAXPATH)) /* Save current working direct */ { - strncpy( achRexxCurDir, getenv("PWD"), CCHMAXPATH); - achRexxCurDir[CCHMAXPATH - 1] = '\0'; - if (achRexxCurDir[0] != '/' ) + strncpy( SystemInterpreter::currentWorkingDirectory, getenv("PWD"), CCHMAXPATH); + SystemInterpreter::currentWorkingDirectory[CCHMAXPATH - 1] = '\0'; + if (SystemInterpreter::currentWorkingDirectory[0] != '/' ) reportException(Error_System_service); /* Complain if it fails */ } return true; Modified: sandbox/rick/init/kernel/platform/unix/SystemInterpreter.cpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/SystemInterpreter.cpp 2008-01-23 21:06:25 UTC (rev 2296) +++ sandbox/rick/init/kernel/platform/unix/SystemInterpreter.cpp 2008-01-23 22:31:25 UTC (rev 2297) @@ -57,6 +57,26 @@ void SystemInterpreter::processStartup() { + atexit(RxExitClearNormal); + /* Set the cleanup handler for unconditional process termination */ + struct sigaction new_action; + struct sigaction old_action; + + /* Set up the structure to specify the new action */ + new_action.sa_handler = RxExitClear; + old_action.sa_handler = NULL; + sigfillset(&new_action.sa_mask); + new_action.sa_flags = SA_RESTART; + +/* Termination signals are set by Object REXX whenever the signals were not set */ +/* from outside (calling C-routine). The SIGSEGV signal is not set any more, so */ +/* that we now get a coredump instead of a hang up */ + + sigaction(SIGINT, NULL, &old_action); + if (old_action.sa_handler == NULL) /* not set by ext. exit handler*/ + { + sigaction(SIGINT, &new_action, NULL); /* exitClear on SIGTERM signal */ + } // now do the platform independent startup Interpreter::processStartup(); } @@ -71,6 +91,26 @@ void SystemInterpreter::startInterpreter() { + int lRC; /* Return Code */ + if (!getcwd(currentWorkingDirectory, CCHMAXPATH)) /* Save current working direct */ + { + strncpy( currentWorkingDirectory, getenv("PWD"), CCHMAXPATH); + currentWorkingDirectory[CCHMAXPATH - 1] = '\0'; + if (currentWorkingDirectory[0] != '/' ) + { + logicError(" *** ERROR: No current working directory for REXX!\n"); + } + else + { + lRC = RxAPIHOMEset(); /* Set the REXX HOME */ + } + } + lRC = RxAPIHOMEset(); /* Set the REXX HOME */ + + if ( lRC ) + { + logicError(" *** ERROR: No HOME or RXHOME directory for REXX!\n"); + } } @@ -102,3 +142,22 @@ } +/** + * Get the current working directory for the process. + * + * @return The current working directory as a Rexx string. + */ +RexxString *SystemInterpreter::getCurrentWorkingDirectory() +{ + if (!getcwd(currentWorkingDirector, CCHMAXPATH) || (rc != 0)) /* Get current working direct */ + { + strncpy(currentWorkingDirectory, getenv("PWD"), CCHMAXPATH); + currentWorkingDirectory[CCHMAXPATH - 1] = '\0'; + if ((achRexxCurDir[0] != '/' ) || (rc != 0)) + { + return ooRexxString(""); /* No directory returned */ + } + } + return ooRexxString(currentWorkingDirectory); /* Return the current directory*/ + +} Modified: sandbox/rick/init/kernel/platform/unix/SystemInterpreter.hpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/SystemInterpreter.hpp 2008-01-23 21:06:25 UTC (rev 2296) +++ sandbox/rick/init/kernel/platform/unix/SystemInterpreter.hpp 2008-01-23 22:31:25 UTC (rev 2297) @@ -51,6 +51,8 @@ #include "RexxCore.h" +#define CCHMAXPATH PATH_MAX+1 + class InterpreterInstance; class SystemInterpreter @@ -67,6 +69,13 @@ static void initializeInstance(InterpreterInstance *instance); static void terminateInstance(InterpreterInstance *instance); + static RexxString *getCurrentWorkingDirectory(); + +protected: + + // saved current working directory + char currentWorkingDirectory[CCHMAXPATH+2]; + }; #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wda...@us...> - 2008-01-23 21:06:24
|
Revision: 2296 http://oorexx.svn.sourceforge.net/oorexx/?rev=2296&view=rev Author: wdashley Date: 2008-01-23 13:06:25 -0800 (Wed, 23 Jan 2008) Log Message: ----------- ArtifactID: None Comment: Added the GtkMessageDialog class and test scripts. Modified Paths: -------------- sandbox/david/grxdialog.c sandbox/david/rexxgtk.c sandbox/david/rexxgtk.cls Added Paths: ----------- sandbox/david/test5-4.rex sandbox/david/test5-4a.rex Modified: sandbox/david/grxdialog.c =================================================================== --- sandbox/david/grxdialog.c 2008-01-23 17:11:50 UTC (rev 2295) +++ sandbox/david/grxdialog.c 2008-01-23 21:06:25 UTC (rev 2296) @@ -398,3 +398,105 @@ return RXFUNC_OK; } + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxMessageDialogNew */ +/* Description: Create a message dialog */ +/* Rexx Args: Parent window pointer */ +/* Message type */ +/* Button set */ +/* Message text */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxMessageDialogNew(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GtkWindow *parentWindow; + GtkWidget *myWidget; + gint flags; + GtkMessageType type; + GtkButtonsType btype; + + /* Check for valid arguments */ + if (GrxCheckArgs(5, Argc, Argv)) + return RXFUNC_BADCALL; + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &parentWindow); + if (!strcmp(Argv[1].strptr, "GTK_DIALOG_MODAL")) + flags = GTK_DIALOG_MODAL; + else if (!strcmp(Argv[1].strptr, "GTK_DIALOG_DESTROY_WITH_PARENT")) + flags = GTK_DIALOG_DESTROY_WITH_PARENT; + else if (!strcmp(Argv[1].strptr, "GTK_DIALOG_NO_SEPARATOR")) + flags = GTK_DIALOG_NO_SEPARATOR; + else + sscanf(Argv[1].strptr, "%d", &flags); + if (!strcmp(Argv[2].strptr, "GTK_MESSAGE_INFO")) + type = GTK_MESSAGE_INFO; + else if (!strcmp(Argv[2].strptr, "GTK_MESSAGE_WARNING")) + type = GTK_MESSAGE_WARNING; + else if (!strcmp(Argv[2].strptr, "GTK_MESSAGE_QUESTION")) + type = GTK_MESSAGE_QUESTION; + else if (!strcmp(Argv[2].strptr, "GTK_MESSAGE_ERROR")) + type = GTK_MESSAGE_ERROR; + else if (!strcmp(Argv[2].strptr, "GTK_MESSAGE_OTHER")) + type = GTK_MESSAGE_OTHER; + else + sscanf(Argv[2].strptr, "%d", &type); + if (!strcmp(Argv[3].strptr, "GTK_BUTTONS_NONE")) + btype = GTK_BUTTONS_NONE; + else if (!strcmp(Argv[3].strptr, "GTK_BUTTONS_OK")) + btype = GTK_BUTTONS_OK; + else if (!strcmp(Argv[3].strptr, "GTK_BUTTONS_CLOSE")) + btype = GTK_BUTTONS_CLOSE; + else if (!strcmp(Argv[3].strptr, "GTK_BUTTONS_CANCEL")) + btype = GTK_BUTTONS_CANCEL; + else if (!strcmp(Argv[3].strptr, "GTK_BUTTONS_YES_NO")) + btype = GTK_BUTTONS_YES_NO; + else if (!strcmp(Argv[3].strptr, "GTK_BUTTONS_OK_CANCEL")) + btype = GTK_BUTTONS_OK_CANCEL; + else + sscanf(Argv[3].strptr, "%d", &btype); + + myWidget = gtk_message_dialog_new(parentWindow, flags, + type, btype, Argv[4].strptr); + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p %p", myWidget, GTK_DIALOG(myWidget)->vbox); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxFontSelectionDialog */ +/* Description: Create a font selection dialog */ +/* Rexx Args: None */ +/*----------------------------------------------------------------------------*/ + +ULONG APIENTRY GrxFontSelectionDialog(PSZ Name, LONG Argc, RXSTRING Argv[], + PSZ Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + gint response; + char *font = NULL; + + /* Check for valid arguments */ + if (Argc > 1) { + return RXFUNC_BADCALL; + } + + /* display and run the dialog */ + myWidget = gtk_font_selection_dialog_new(Argv[0].strptr); + + gtk_font_selection_dialog_set_preview_text(GTK_FONT_SELECTION_DIALOG(myWidget), + "abcdefghijk ABCDEFGKIJK 1234567890"); + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p %p", myWidget, GTK_DIALOG(myWidget)->vbox); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + Modified: sandbox/david/rexxgtk.c =================================================================== --- sandbox/david/rexxgtk.c 2008-01-23 17:11:50 UTC (rev 2295) +++ sandbox/david/rexxgtk.c 2008-01-23 21:06:25 UTC (rev 2296) @@ -137,20 +137,32 @@ { static const char *EntryPoint[] = { + // Some general GTK functions "GrxVersion", "GrxMain", "GrxMainIteration", + // RexxGTK specific functions "GrxSetRexxQueueName", -// -// "GrxGSListUninit", -// "GrxGSListAppend", -// "GrxGSListPrepend", -// "GrxGSListInsert", -// "GrxGListUninit", -// "GrxGListAppend", -// "GrxGListPrepend", -// "GrxGListInsert", + + // GLib functions + "GrxGetUserName", + "GrxGetRealName", + "GrxGetHomeDir", + "GrxGetHostName", +// "GrxCListNew", +// "GrxCListUninit", +// "GrxCListSelected", +// "GrxCListSetColumnTitle", +// "GrxCListGetColumnTitle", +// "GrxCListSetText", +// "GrxCListGetText", +// "GrxCListAppend", +// "GrxCListPrepend", +// "GrxCListInsert", +// "GrxCListSetColumnWidth", + + // Widget functions "GrxWidgetShow", "GrxWidgetShowAll", "GrxWidgetHide", @@ -168,9 +180,8 @@ "GrxWidgetGetTopLevel", "GrxWidgetModifyBG", "GrxWidgetModifyFG", -// "GrxMessageDialog", -// "GrxFileSelectionDialog", -// "GrxFontSelectionDialog", + + // Dialog functions "GrxDialogNew", "GrxDialogNewWithButtons", "GrxDialogRun", @@ -178,10 +189,10 @@ "GrxDialogSetHasSeparator", "GrxDialogSetDefaultResponse", "GrxDialogConnectSignal", -// "GrxDialogSetTitle", -// "GrxDialogRun", -// "GrxDialogGetVBox", -// "GrxDialogSetTimeout", + "GrxMessageDialogNew", + "GrxFontSelectionDialog", + + // Button functions "GrxButtonNew", "GrxButtonSetLabel", "GrxButtonGetLabel", @@ -214,6 +225,11 @@ "GrxFontButtonSetTitle", "GrxFontButtonGetFontName", "GrxFontButtonConnectSignal", + "GrxSpinButtonNew", + "GrxSpinButtonNewWithRange", + "GrxSpinButtonConnectSignal", + + // Container functions "GrxContainerAdd", "GrxContainerRemove", "GrxContainerSetBorderWidth", @@ -222,6 +238,19 @@ "GrxBoxPackEnd", "GrxVBoxNew", "GrxHBoxNew", + "GrxPanedAdd1", + "GrxPanedAdd2", + "GrxPanedPack1", + "GrxPanedPack2", + "GrxHPanedNew", + "GrxVPanedNew", + "GrxTableNew", + "GrxTableAttach", + "GrxTableSetRowSpacings", + "GrxTableSetColSpacings", + "GrxFixedNew", + "GrxFixedPut", + "GrxFixedMove", // "GrxTextViewNew", // "GrxTextViewSetText", // "GrxTextViewGetText", @@ -230,6 +259,8 @@ // "GrxFrameNew", // "GrxScrolledWindowNew", // "GrxScrolledWindowSetPolicy", + + //Entry functions "GrxEntryNew", "GrxEntrySetMaxLength", "GrxEntryGetMaxLength", @@ -240,25 +271,13 @@ "GrxEntryGetInvisibleChar", "GrxEntrySetInvisibleChar", "GrxEntrySetWidthChars", + + // Label functions "GrxLabelNew", "GrxLabelSetText", "GrxLabelSetJustify", "GrxLabelSetSelectable", "GrxLabelConnectSignal", - "GrxSpinButtonNew", - "GrxSpinButtonNewWithRange", - "GrxSpinButtonConnectSignal", -// "GrxCListNew", -// "GrxCListUninit", -// "GrxCListSelected", -// "GrxCListSetColumnTitle", -// "GrxCListGetColumnTitle", -// "GrxCListSetText", -// "GrxCListGetText", -// "GrxCListAppend", -// "GrxCListPrepend", -// "GrxCListInsert", -// "GrxCListSetColumnWidth", // "GrxHSeparatorNew", // "GrxVSeparatorNew", // "GrxComboNew", @@ -276,6 +295,8 @@ // "GrxAccessGetRoleDescription", // "GrxAccessGetLocalRoleDescription", // + + // Notebook functions "GrxNotebookNew", "GrxNotebookAppendPage", "GrxNotebookPrependPage", @@ -294,28 +315,11 @@ "GrxNotebookPopupDisable", "GrxNotebookGetCurrentPage", "GrxNotebookSetCurrentPage", -// -// "GrxSignalConnect", -// "GrxDialogWait", -// "GrxDialogStart", -// "GrxGetSignal", + // Window functions "GrxWindowNew", "GrxWindowSetTitle", "GrxWindowConnectSignal", - "GrxPanedAdd1", - "GrxPanedAdd2", - "GrxPanedPack1", - "GrxPanedPack2", - "GrxHPanedNew", - "GrxVPanedNew", - "GrxTableNew", - "GrxTableAttach", - "GrxTableSetRowSpacings", - "GrxTableSetColSpacings", - "GrxFixedNew", - "GrxFixedPut", - "GrxFixedMove", "GrxExpanderNew", "GrxExpanderSetExpanded", "GrxExpanderSetLabel", @@ -328,11 +332,8 @@ "GrxHandleBoxSetHandlePosition", "GrxHandleBoxSetSnapEdge", "GrxHandleBoxConnectSignal", - "GrxEventBoxNew", - "GrxEventBoxSetAboveChild", - "GrxEventBoxGetAboveChild", - "GrxEventBoxSetVisibleWindow", - "GrxEventBoxGetVisibleWindow", + + // Range, Scale, and Slider functions "GrxRangeConnectSignal", "GrxScaleSetDigits", "GrxScaleGetDigits", @@ -342,6 +343,8 @@ "GrxHScaleNewWithRange", "GrxVScaleNew", "GrxVScaleNewWithRange", + + // Image functions "GrxImageNew", "GrxImageSetFromFile", "GrxImageSetFromStock", @@ -352,14 +355,27 @@ "GrxFileChooserAddFilter", "GrxFileChooserGetFilename", "GrxFileChooserConnectSignal", + + // Filter filter functions "GrxFileFilterNew", "GrxFileFilterSetName", "GrxFileFilterAddPattern", +// +// "GrxGSListUninit", +// "GrxGSListAppend", +// "GrxGSListPrepend", +// "GrxGSListInsert", +// "GrxGListUninit", +// "GrxGListAppend", +// "GrxGListPrepend", +// "GrxGListInsert", - "GrxGetUserName", - "GrxGetRealName", - "GrxGetHomeDir", - "GrxGetHostName", + // Event box functions (not used) + "GrxEventBoxNew", + "GrxEventBoxSetAboveChild", + "GrxEventBoxGetAboveChild", + "GrxEventBoxSetVisibleWindow", + "GrxEventBoxGetVisibleWindow", }; Modified: sandbox/david/rexxgtk.cls =================================================================== --- sandbox/david/rexxgtk.cls 2008-01-23 17:11:50 UTC (rev 2295) +++ sandbox/david/rexxgtk.cls 2008-01-23 21:06:25 UTC (rev 2296) @@ -630,6 +630,21 @@ /*============================================================================*/ +/* Class: GtkMessageDialog */ +/*============================================================================*/ + +::class GtkMessageDialog public subclass GtkDialog + +::method init +use strict arg parent, flags, type, button, text +if parent = .nil then ptr = 0 +else ptr = parent~pointer +ptrs = GrxMessageDialogNew(ptr, flags, type, button, text) +parse var ptrs self~pointer self~vbox . +return + + +/*============================================================================*/ /* Class: GtkLabel */ /*============================================================================*/ Added: sandbox/david/test5-4.rex =================================================================== --- sandbox/david/test5-4.rex (rev 0) +++ sandbox/david/test5-4.rex 2008-01-23 21:06:25 UTC (rev 2296) @@ -0,0 +1,85 @@ +#!/usr/bin/rexx +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2007-2008 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Authors; */ +/* W. David Ashley <da...@us...> */ +/* */ +/*----------------------------------------------------------------------------*/ + + +-- Derived from Listing 5-4 +-- Foundations of GTK+ Development +-- by Andrew Krause + +window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window~set_title('Message Dialogs') +window~signal_connect("destroy") +window~set_border_width(10) + +button = .MyButton~new('_Click Me') + +-- save data for the callback +button~user_data = window + +button~signal_connect('clicked') + +window~add(button) +window~show_all() + +call gtk_main +return + + +::requires 'rexxgtk.cls' + +::class myMainWindow subclass GtkWindow + +::method signal_destroy +.local['GTK_Quit'] = .true +return + +::class MyButton subclass GtkButton_With_Mnemonic + +::method signal_clicked +dialog = .GtkMessageDialog~new(self~user_data, 'GTK_DIALOG_MODAL',, + 'GTK_MESSAGE_INFO', 'GTK_BUTTONS_OK',, + 'The button was clicked!') +dialog~set_title('Information') + +dialog~run_dialog() +dialog~destroy() +return + Property changes on: sandbox/david/test5-4.rex ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native Added: sandbox/david/test5-4a.rex =================================================================== --- sandbox/david/test5-4a.rex (rev 0) +++ sandbox/david/test5-4a.rex 2008-01-23 21:06:25 UTC (rev 2296) @@ -0,0 +1,85 @@ +#!/usr/bin/rexx +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2007-2008 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Authors; */ +/* W. David Ashley <da...@us...> */ +/* */ +/*----------------------------------------------------------------------------*/ + + +-- Derived from Listing 5-4 +-- Foundations of GTK+ Development +-- by Andrew Krause + +window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window~title = 'Message Dialogs' +window~signal_connect("destroy") +window~set_border_width(10) + +button = .MyButton~new('_Click Me') + +-- save data for the callback +button~user_data = window + +button~signal_connect('clicked') + +window~add(button) +window~show_all() + +call gtk_main +return + + +::requires 'rexxgtk.cls' + +::class myMainWindow subclass GtkWindow + +::method signal_destroy +.local['GTK_Quit'] = .true +return + +::class MyButton subclass GtkButton_With_Mnemonic + +::method signal_clicked +dialog = .GtkMessageDialog~new(self~user_data, 'GTK_DIALOG_MODAL',, + 'GTK_MESSAGE_INFO', 'GTK_BUTTONS_OK',, + 'The button was clicked!') +dialog~title = 'Information' + +dialog~run_dialog() +dialog~destroy() +return + Property changes on: sandbox/david/test5-4a.rex ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wda...@us...> - 2008-01-23 17:11:47
|
Revision: 2295 http://oorexx.svn.sourceforge.net/oorexx/?rev=2295&view=rev Author: wdashley Date: 2008-01-23 09:11:50 -0800 (Wed, 23 Jan 2008) Log Message: ----------- ArtifactID: None Comment: Replaced some dummy functions with glib functions. Modified Paths: -------------- sandbox/david/test4-10.rex sandbox/david/test4-10a.rex Modified: sandbox/david/test4-10.rex =================================================================== --- sandbox/david/test4-10.rex 2008-01-23 16:43:37 UTC (rev 2294) +++ sandbox/david/test4-10.rex 2008-01-23 17:11:50 UTC (rev 2295) @@ -61,8 +61,8 @@ chooser1~signal_connect('selection_changed') chooser2~signal_connect('selection_changed') -chooser1~set_current_folder('/home/'userid()) -chooser2~set_current_folder('/home/'userid()) +chooser1~set_current_folder(GrxGetHomeDir()) +chooser2~set_current_folder(GrxGetUserName()) filter1 = .GtkFileFilter~new() filter2 = .GtkFileFilter~new() Modified: sandbox/david/test4-10a.rex =================================================================== --- sandbox/david/test4-10a.rex 2008-01-23 16:43:37 UTC (rev 2294) +++ sandbox/david/test4-10a.rex 2008-01-23 17:11:50 UTC (rev 2295) @@ -65,8 +65,8 @@ chooser1~signal_connect('selection_changed') chooser2~signal_connect('selection_changed') -chooser1~set_current_folder('/home/'userid()) -chooser2~set_current_folder('/home/'userid()) +chooser1~set_current_folder(GrxGetHomeDir()) +chooser2~set_current_folder(GrxGetUserName()) filter1 = .GtkFileFilter~new() filter2 = .GtkFileFilter~new() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wda...@us...> - 2008-01-23 16:43:37
|
Revision: 2294 http://oorexx.svn.sourceforge.net/oorexx/?rev=2294&view=rev Author: wdashley Date: 2008-01-23 08:43:37 -0800 (Wed, 23 Jan 2008) Log Message: ----------- ArtifactID: None Comment: Added support for some glib functions. Added new test script. Modified Paths: -------------- sandbox/david/Makefile sandbox/david/Makefile.win sandbox/david/grxdialog.c sandbox/david/rexxgtk.c sandbox/david/rexxgtk.cls Added Paths: ----------- sandbox/david/grxglib.c sandbox/david/test5-3.rex sandbox/david/test5-3a.rex Modified: sandbox/david/Makefile =================================================================== --- sandbox/david/Makefile 2008-01-23 15:15:09 UTC (rev 2293) +++ sandbox/david/Makefile 2008-01-23 16:43:37 UTC (rev 2294) @@ -63,7 +63,8 @@ grxinterfaces.o \ grxfilefilter.o \ grximage.o \ - grxdialog.o + grxdialog.o \ + grxglib.o # Build the shared library @@ -132,8 +133,11 @@ grxdialog.o: grxdialog.c rexxgtk.h gcc -c $(GRXCFLAGS) grxdialog.c +grxglib.o: grxglib.c rexxgtk.h + gcc -c $(GRXCFLAGS) grxglib.c + clean: rm *.so *.o Modified: sandbox/david/Makefile.win =================================================================== --- sandbox/david/Makefile.win 2008-01-23 15:15:09 UTC (rev 2293) +++ sandbox/david/Makefile.win 2008-01-23 16:43:37 UTC (rev 2294) @@ -115,7 +115,8 @@ grxinterfaces.obj \ grxfilefilter.obj \ grximage.obj \ - grxdialog.obj + grxdialog.obj \ + grxglib.obj # Build the DLL rexxgtk.dll: $(OBJECTS) rexxgtk.def @@ -182,7 +183,10 @@ grxdialog.obj: grxdialog.c rexxgtk.h cl -c $(GRXCFLAGS) grxdialog.c +grxglib.obj: grxglib.c rexxgtk.h + cl -c $(GRXCFLAGS) grxglib.c + clean: del *.dll *.obj *.pdb *.lib *.exp *.map Modified: sandbox/david/grxdialog.c =================================================================== --- sandbox/david/grxdialog.c 2008-01-23 15:15:09 UTC (rev 2293) +++ sandbox/david/grxdialog.c 2008-01-23 16:43:37 UTC (rev 2294) @@ -290,6 +290,39 @@ /*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxDialogSetDefaultResponse */ +/* Description: Toggle the seperator */ +/* Rexx Args: Pointer to the dialog */ +/* Response id */ +/*----------------------------------------------------------------------------*/ + +APIRET APIENTRY GrxDialogSetDefaultResponse(const char * Name, + const size_t Argc, const RXSTRING Argv[], + const char * Queuename, PRXSTRING Retstr) +{ + GtkWidget *myWidget; + gint resptype; + + /* Check for valid arguments */ + if (GrxCheckArgs(2, Argc, Argv)) + return RXFUNC_BADCALL; + + /* Initialize function parameters */ + sscanf(Argv[0].strptr, "%p", &myWidget); + resptype = str2resp(Argv[1].strptr); + + // add the button + gtk_dialog_set_default_response(GTK_DIALOG(myWidget), resptype); + + /* Set up the REXX return code */ + *(Retstr->strptr) = '0'; + Retstr->strlength = 1; + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ /* Rexx External Function: GrxDialogRun */ /* Description: Run the dialog */ /* Rexx Args: Pointer to the dialog */ Added: sandbox/david/grxglib.c =================================================================== --- sandbox/david/grxglib.c (rev 0) +++ sandbox/david/grxglib.c 2008-01-23 16:43:37 UTC (rev 2294) @@ -0,0 +1,172 @@ +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2007-2008 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Authors; */ +/* W. David Ashley <da...@us...> */ +/* */ +/*----------------------------------------------------------------------------*/ + + +/* include the linux headers and our local stuff */ +#include "rexxgtk.h" + + +/*----------------------------------------------------------------------------*/ +/* Global variables */ +/*----------------------------------------------------------------------------*/ + + +/*----------------------------------------------------------------------------*/ +/* Local Definitions */ +/*----------------------------------------------------------------------------*/ + + +/*============================================================================*/ +/* Private Functions */ +/*============================================================================*/ + + +/*============================================================================*/ +/* Public Functions */ +/*============================================================================*/ + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxGetUserName */ +/* Description: Return the user name. */ +/* Rexx Args: None */ +/*----------------------------------------------------------------------------*/ + +APIRET APIENTRY GrxGetUserName(const char * Name, + const size_t Argc, const RXSTRING Argv[], + const char * Queuename, PRXSTRING Retstr) +{ + const gchar * user; + + /* Check for valid arguments */ + if (GrxCheckArgs(0, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + user = g_get_user_name(); + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%s", user); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxGetRealName */ +/* Description: Return the user name. */ +/* Rexx Args: None */ +/*----------------------------------------------------------------------------*/ + +APIRET APIENTRY GrxGetRealName(const char * Name, + const size_t Argc, const RXSTRING Argv[], + const char * Queuename, PRXSTRING Retstr) +{ + const gchar * user; + + /* Check for valid arguments */ + if (GrxCheckArgs(0, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + user = g_get_real_name(); + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%s", user); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxGetHomeDir */ +/* Description: Return the user name. */ +/* Rexx Args: None */ +/*----------------------------------------------------------------------------*/ + +APIRET APIENTRY GrxGetHomeDir(const char * Name, + const size_t Argc, const RXSTRING Argv[], + const char * Queuename, PRXSTRING Retstr) +{ + const gchar * user; + + /* Check for valid arguments */ + if (GrxCheckArgs(0, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + user = g_get_home_dir(); + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%s", user); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + + +/*----------------------------------------------------------------------------*/ +/* Rexx External Function: GrxGetHostName */ +/* Description: Return the user name. */ +/* Rexx Args: None */ +/*----------------------------------------------------------------------------*/ + +APIRET APIENTRY GrxGetHostName(const char * Name, + const size_t Argc, const RXSTRING Argv[], + const char * Queuename, PRXSTRING Retstr) +{ + const gchar * user; + + /* Check for valid arguments */ + if (GrxCheckArgs(0, Argc, Argv)) { + return RXFUNC_BADCALL; + } + + user = g_get_host_name(); + + /* Set up the REXX return code */ + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%s", user); + Retstr->strlength = strlen(Retstr->strptr); + + return RXFUNC_OK; +} + Property changes on: sandbox/david/grxglib.c ___________________________________________________________________ Name: svn:eol-style + native Modified: sandbox/david/rexxgtk.c =================================================================== --- sandbox/david/rexxgtk.c 2008-01-23 15:15:09 UTC (rev 2293) +++ sandbox/david/rexxgtk.c 2008-01-23 16:43:37 UTC (rev 2294) @@ -176,6 +176,7 @@ "GrxDialogRun", "GrxDialogAddButton", "GrxDialogSetHasSeparator", + "GrxDialogSetDefaultResponse", "GrxDialogConnectSignal", // "GrxDialogSetTitle", // "GrxDialogRun", @@ -355,6 +356,11 @@ "GrxFileFilterSetName", "GrxFileFilterAddPattern", + "GrxGetUserName", + "GrxGetRealName", + "GrxGetHomeDir", + "GrxGetHostName", + }; int f; Modified: sandbox/david/rexxgtk.cls =================================================================== --- sandbox/david/rexxgtk.cls 2008-01-23 15:15:09 UTC (rev 2293) +++ sandbox/david/rexxgtk.cls 2008-01-23 16:43:37 UTC (rev 2294) @@ -578,6 +578,15 @@ self~has_separator = flag return +::method 'default_response=' +use strict arg resp +call GrxDialogSetDefaultResponse self~pointer, resp +return + +::method set_default_response +use strict arg self~default_response +return + ::method add_button use strict arg text, resp call GrxDialogAddButton self~pointer, text, resp @@ -613,7 +622,9 @@ ::method init use strict arg title, parent, type, button_text, button_resp -ptrs = GrxDialogNewWithButtons(title, parent~pointer, type, button_text, button_resp) +if parent = .nil then ptr = 0 +else ptr = parent~pointer +ptrs = GrxDialogNewWithButtons(title, ptr, type, button_text, button_resp) parse var ptrs self~pointer self~vbox . return @@ -1202,6 +1213,12 @@ xopt, yopt, xpad, ypad return +::method attach_defaults +use strict arg widget, left, right, top, bottom +call GrxTableAttach self~pointer, widget~pointer, left, right, top, bottom,, + 5, 5, 0, 0 +return + ::method 'row_spacings=' use strict arg spacing call GrxTableSetRowSpacings self~pointer, spacing @@ -1272,6 +1289,11 @@ use strict arg return GrxEntryGetText(self~pointer) +::method get_text +-- get the text in the object +use strict arg +return self~text + ::method 'text=' -- set the text in the object use strict arg text Added: sandbox/david/test5-3.rex =================================================================== --- sandbox/david/test5-3.rex (rev 0) +++ sandbox/david/test5-3.rex 2008-01-23 16:43:37 UTC (rev 2294) @@ -0,0 +1,99 @@ +#!/usr/bin/rexx +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2007-2008 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Authors; */ +/* W. David Ashley <da...@us...> */ +/* */ +/*----------------------------------------------------------------------------*/ + + +-- Derived from Listing 5-3 +-- Foundations of GTK+ Development +-- by Andrew Krause + +dialog = .GtkDialog_With_Buttons~new('Edit User Information', .nil,, + 'GTK_DIALOG_MODAL',, + 'gtk-ok', 'GTK_RESPONSE_OK') +dialog~add_button('gtk-cancel', 'GTK_RESPONSE_CANCEL') +dialog~set_default_response("GTK_RESPONSE_OK") + +lbl1 = .GtkLabel~new('User Name') +lbl2 = .GtkLabel~new('Real Name') +lbl3 = .GtkLabel~new('Home Dir') +lbl4 = .GtkLabel~new('Host Name') + +user = .GtkEntry~new() +real = .GtkEntry~new() +home = .GtkEntry~new() +host = .GtkEntry~new() + +user~set_text(GrxGetUserName()) +real~set_text(GrxGetRealName()) +home~set_text(GrxGetHomeDir()) +host~set_text(GrxGetHostName()) + +table = .GtkTable~new(4, 2, .false) +table~attach_defaults(lbl1, 0, 1, 0, 1) +table~attach_defaults(lbl2, 0, 1, 1, 2) +table~attach_defaults(lbl3, 0, 1, 2, 3) +table~attach_defaults(lbl4, 0, 1, 3, 4) + +table~attach_defaults(user, 1, 2, 0, 1) +table~attach_defaults(real, 1, 2, 1, 2) +table~attach_defaults(home, 1, 2, 2, 3) +table~attach_defaults(host, 1, 2, 3, 4) + +table~set_row_spacings(5) +table~set_col_spacings(5) +table~set_border_width(5) + +dialog~vbox~pack_start_defaults(table) +dialog~show_all() + +retc = dialog~run_dialog() +if retc = -5 /* GTK_RESPONSE_OK */ then do + say 'User Name:' user~get_text() + say 'Real Name:' real~get_text() + say 'Home Folder:' home~get_text() + say 'Host Name:' host~get_text() + end + +dialog~destroy() +return + + +::requires 'rexxgtk.cls' + Property changes on: sandbox/david/test5-3.rex ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native Added: sandbox/david/test5-3a.rex =================================================================== --- sandbox/david/test5-3a.rex (rev 0) +++ sandbox/david/test5-3a.rex 2008-01-23 16:43:37 UTC (rev 2294) @@ -0,0 +1,99 @@ +#!/usr/bin/rexx +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2007-2008 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Authors; */ +/* W. David Ashley <da...@us...> */ +/* */ +/*----------------------------------------------------------------------------*/ + + +-- Derived from Listing 5-3 +-- Foundations of GTK+ Development +-- by Andrew Krause + +dialog = .GtkDialog_With_Buttons~new('Edit User Information', .nil,, + 'GTK_DIALOG_MODAL',, + 'gtk-ok', 'GTK_RESPONSE_OK') +dialog~add_button('gtk-cancel', 'GTK_RESPONSE_CANCEL') +dialog~set_default_response("GTK_RESPONSE_OK") + +lbl1 = .GtkLabel~new('User Name') +lbl2 = .GtkLabel~new('Real Name') +lbl3 = .GtkLabel~new('Home Dir') +lbl4 = .GtkLabel~new('Host Name') + +user = .GtkEntry~new() +real = .GtkEntry~new() +home = .GtkEntry~new() +host = .GtkEntry~new() + +user~set_text(GrxGetUserName()) +real~set_text(GrxGetRealName()) +home~set_text(GrxGetHomeDir()) +host~set_text(GrxGetHostName()) + +table = .GtkTable~new(4, 2, .false) +table~attach_defaults(lbl1, 0, 1, 0, 1) +table~attach_defaults(lbl2, 0, 1, 1, 2) +table~attach_defaults(lbl3, 0, 1, 2, 3) +table~attach_defaults(lbl4, 0, 1, 3, 4) + +table~attach_defaults(user, 1, 2, 0, 1) +table~attach_defaults(real, 1, 2, 1, 2) +table~attach_defaults(home, 1, 2, 2, 3) +table~attach_defaults(host, 1, 2, 3, 4) + +table~row_spacings = 5 +table~col_spacings = 5 +table~border_width = 5 + +dialog~vbox~pack_start_defaults(table) +dialog~show_all() + +retc = dialog~run_dialog() +if retc = -5 /* GTK_RESPONSE_OK */ then do + say 'User Name:' user~text + say 'Real Name:' real~text + say 'Home Folder:' home~text + say 'Host Name:' host~text + end + +dialog~destroy() +return + + +::requires 'rexxgtk.cls' + Property changes on: sandbox/david/test5-3a.rex ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wda...@us...> - 2008-01-23 15:15:04
|
Revision: 2293 http://oorexx.svn.sourceforge.net/oorexx/?rev=2293&view=rev Author: wdashley Date: 2008-01-23 07:15:09 -0800 (Wed, 23 Jan 2008) Log Message: ----------- ArtifactID: None Comment: Replaced almost all strcpy function calls with g_snprintf function calls. Modified Paths: -------------- sandbox/david/grxbutton.c sandbox/david/grxinterfaces.c sandbox/david/grxqueue.c sandbox/david/grxwidget.c Modified: sandbox/david/grxbutton.c =================================================================== --- sandbox/david/grxbutton.c 2008-01-23 15:06:33 UTC (rev 2292) +++ sandbox/david/grxbutton.c 2008-01-23 15:15:09 UTC (rev 2293) @@ -951,7 +951,7 @@ font = gtk_font_button_get_font_name(GTK_FONT_BUTTON(myWidget)); /* Set up the REXX return code */ - strcpy(Retstr->strptr, font); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%s", font); Retstr->strlength = strlen(Retstr->strptr);; return RXFUNC_OK; Modified: sandbox/david/grxinterfaces.c =================================================================== --- sandbox/david/grxinterfaces.c 2008-01-23 15:06:33 UTC (rev 2292) +++ sandbox/david/grxinterfaces.c 2008-01-23 15:15:09 UTC (rev 2293) @@ -181,7 +181,7 @@ if (strlen(file) > RXAUTOBUFLEN) { Retstr->strptr = (gchar *)RexxAllocateMemory(strlen(file) + 1); } - strcpy(Retstr->strptr, file); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%s", file); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/grxqueue.c =================================================================== --- sandbox/david/grxqueue.c 2008-01-23 15:06:33 UTC (rev 2292) +++ sandbox/david/grxqueue.c 2008-01-23 15:15:09 UTC (rev 2293) @@ -81,7 +81,7 @@ return RXFUNC_BADCALL; } - strcpy(RexxQueueName, Argv[0].strptr); + g_snprintf(RexxQueueName, sizeof(RexxQueueName), "%s", Argv[0].strptr); *Retstr->strptr = '0'; Retstr->strlength = 1; Modified: sandbox/david/grxwidget.c =================================================================== --- sandbox/david/grxwidget.c 2008-01-23 15:06:33 UTC (rev 2292) +++ sandbox/david/grxwidget.c 2008-01-23 15:15:09 UTC (rev 2293) @@ -443,7 +443,7 @@ name = gtk_widget_get_name(myWidget); /* Set up the REXX return code */ - strcpy(Retstr->strptr, name); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%s", name); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wda...@us...> - 2008-01-23 15:06:56
|
Revision: 2292 http://oorexx.svn.sourceforge.net/oorexx/?rev=2292&view=rev Author: wdashley Date: 2008-01-23 07:06:33 -0800 (Wed, 23 Jan 2008) Log Message: ----------- ArtifactID: None Comment: Replaced all sprintf finction calls with g_snprintf function calls. Modified Paths: -------------- sandbox/david/grxbutton.c sandbox/david/grxcontainer.c sandbox/david/grxdialog.c sandbox/david/grxentry.c sandbox/david/grxeventbox.c sandbox/david/grxexpander.c sandbox/david/grxfilefilter.c sandbox/david/grxfixed.c sandbox/david/grxhandlebox.c sandbox/david/grximage.c sandbox/david/grxinterfaces.c sandbox/david/grxlabel.c sandbox/david/grxnotebook.c sandbox/david/grxpaned.c sandbox/david/grxrange.c sandbox/david/grxtable.c sandbox/david/grxwidget.c sandbox/david/grxwindow.c sandbox/david/rexxgtk.c Modified: sandbox/david/grxbutton.c =================================================================== --- sandbox/david/grxbutton.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxbutton.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -64,11 +64,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s", window, data); -#else - snprintf(buffer, sizeof(buffer), "%p %s", window, data); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s", window, data); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -104,8 +100,8 @@ myWidget = gtk_button_new(); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); - Retstr->strlength = strlen(Retstr->strptr); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); + Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; } @@ -132,8 +128,8 @@ myWidget = gtk_button_new_from_stock(Argv[0].strptr); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); - Retstr->strlength = strlen(Retstr->strptr); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); + Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; } @@ -306,8 +302,8 @@ myWidget = gtk_toggle_button_new(); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); - Retstr->strlength = strlen(Retstr->strptr); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); + Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; } @@ -339,7 +335,7 @@ } /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%d", (int)mode); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d", (int)mode); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -407,7 +403,7 @@ } /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%d", (int)state); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d", (int)state); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -475,7 +471,7 @@ } /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%d", (int)state); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d", (int)state); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -543,7 +539,7 @@ } /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -575,7 +571,7 @@ myWidget = gtk_radio_button_new(head); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -605,7 +601,7 @@ myWidget = gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(srcWidget)); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -638,7 +634,7 @@ } /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", head); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", head); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -699,7 +695,7 @@ myWidget = gtk_color_button_new(); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -729,7 +725,7 @@ myWidget = gtk_color_button_new_with_color(&color); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -792,11 +788,7 @@ gtk_color_button_get_color(GTK_COLOR_BUTTON(myWidget), &color); /* Set up the REXX return code */ -#ifdef WIN32 - sprintf(Retstr->strptr, "#%04X%04X%04", color.red, color.green, color.blue); -#else snprintf(Retstr->strptr, RXAUTOBUFLEN, "#%04X%04X%04X", color.red, color.green, color.blue); -#endif Retstr->strlength = strlen(Retstr->strptr);; return RXFUNC_OK; @@ -870,7 +862,7 @@ myWidget = gtk_file_chooser_button_new(Argv[0].strptr, action); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -897,7 +889,7 @@ myWidget = gtk_font_button_new(); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/grxcontainer.c =================================================================== --- sandbox/david/grxcontainer.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxcontainer.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -64,11 +64,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s", window, data); -#else - snprintf(buffer, sizeof(buffer), "%p %s", window, data); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s", window, data); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -86,11 +82,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %p", window, data, widget); -#else - snprintf(buffer, sizeof(buffer), "%p %s %p", window, data, widget); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %p", window, data, widget); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -326,7 +318,7 @@ myWidget = gtk_vbox_new(homogeneous, spacing); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -359,7 +351,7 @@ myWidget = gtk_hbox_new(homogeneous, spacing); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/grxdialog.c =================================================================== --- sandbox/david/grxdialog.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxdialog.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -64,11 +64,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s", window, data); -#else - snprintf(buffer, sizeof(buffer), "%p %s", window, data); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s", window, data); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -87,11 +83,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %d", window, data); -#else - snprintf(buffer, sizeof(buffer), "%p %s", window, data, arg1); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s", window, data, arg1); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -159,7 +151,7 @@ myWidget = gtk_dialog_new(); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p %p", myWidget, GTK_DIALOG(myWidget)->vbox); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p %p", myWidget, GTK_DIALOG(myWidget)->vbox); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -223,7 +215,7 @@ } /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p %p", myWidget, GTK_DIALOG(myWidget)->vbox); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p %p", myWidget, GTK_DIALOG(myWidget)->vbox); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -321,7 +313,7 @@ resp = gtk_dialog_run(GTK_DIALOG(myWidget)); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%d", resp); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d", resp); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/grxentry.c =================================================================== --- sandbox/david/grxentry.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxentry.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -64,11 +64,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s", window, data); -#else - snprintf(buffer, sizeof(buffer), "%p %s", window, data); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s", window, data); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -86,11 +82,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %s", window, data, arg1); -#else - snprintf(buffer, sizeof(buffer), "%p %s %s", window, data, arg1); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %s", window, data, arg1); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -108,11 +100,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %p", window, data, menu); -#else - snprintf(buffer, sizeof(buffer), "%p %s %p", window, data, menu); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %p", window, data, menu); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -130,11 +118,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %d", window, data, arg1); -#else - snprintf(buffer, sizeof(buffer), "%p %s %d", window, data, arg1); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %d", window, data, arg1); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -153,11 +137,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %d %d", window, data, type, arg2); -#else - snprintf(buffer, sizeof(buffer), "%p %s %d %d", window, data, type, arg2); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %d %d", window, data, type, arg2); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -177,11 +157,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %d %d %d", window, data, step, arg2, arg3); -#else - snprintf(buffer, sizeof(buffer), "%p %s %d %d", window, data, step, arg2, arg3); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %d %d", window, data, step, arg2, arg3); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -217,7 +193,7 @@ myWidget = gtk_entry_new(); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -285,7 +261,7 @@ } /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%d", maxlen); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d", maxlen); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -354,7 +330,7 @@ if (strlen(text) > RXAUTOBUFLEN - 1) { Retstr->strptr = RexxAllocateMemory(strlen(text) + 1); } - sprintf(Retstr->strptr, "%s", text); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%s", text); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -422,7 +398,7 @@ } /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%d", flag); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d", flag); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -652,7 +628,7 @@ // g_free(adj); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -687,7 +663,7 @@ myWidget = gtk_spin_button_new_with_range(lower, upper, step_increment); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/grxeventbox.c =================================================================== --- sandbox/david/grxeventbox.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxeventbox.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -83,7 +83,7 @@ myWidget = gtk_event_box_new(); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -151,7 +151,7 @@ } /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%d", flag); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d", flag); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -219,7 +219,7 @@ } /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%d", flag); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d", flag); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/grxexpander.c =================================================================== --- sandbox/david/grxexpander.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxexpander.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -64,11 +64,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s", window, data); -#else - snprintf(buffer, sizeof(buffer), "%p %s", window, data); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s", window, data); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -104,8 +100,8 @@ myWidget = gtk_expander_new(Argv[0].strptr); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); - Retstr->strlength = strlen(Retstr->strptr); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); + Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; } Modified: sandbox/david/grxfilefilter.c =================================================================== --- sandbox/david/grxfilefilter.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxfilefilter.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -83,7 +83,7 @@ filter = gtk_file_filter_new(); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", filter); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", filter); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/grxfixed.c =================================================================== --- sandbox/david/grxfixed.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxfixed.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -83,7 +83,7 @@ myWidget = gtk_fixed_new(); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/grxhandlebox.c =================================================================== --- sandbox/david/grxhandlebox.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxhandlebox.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -65,11 +65,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %p", window, data, widget); -#else - snprintf(buffer, sizeof(buffer), "%p %s %p", window, data, widget); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %p", window, data, widget); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -105,8 +101,8 @@ myWidget = gtk_handle_box_new(); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); - Retstr->strlength = strlen(Retstr->strptr); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); + Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; } Modified: sandbox/david/grximage.c =================================================================== --- sandbox/david/grximage.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grximage.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -83,7 +83,7 @@ myWidget = gtk_image_new(); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/grxinterfaces.c =================================================================== --- sandbox/david/grxinterfaces.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxinterfaces.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -64,11 +64,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s", window, data); -#else - snprintf(buffer, sizeof(buffer), "%p %s", window, data); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s", window, data); entry.strptr = buffer; entry.strlength = strlen(buffer); Modified: sandbox/david/grxlabel.c =================================================================== --- sandbox/david/grxlabel.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxlabel.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -64,11 +64,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s", window, data); -#else - snprintf(buffer, sizeof(buffer), "%p %s", window, data); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s", window, data); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -86,11 +82,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %p", window, data, widget); -#else - snprintf(buffer, sizeof(buffer), "%p %s %p", window, data, widget); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %p", window, data, widget); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -110,11 +102,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %p %d %d %d", window, data, arg1, arg2, arg3); -#else - snprintf(buffer, sizeof(buffer), "%p %s %p %d %d %d", window, data, arg1, arg2, arg3); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %p %d %d %d", window, data, arg1, arg2, arg3); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -153,7 +141,7 @@ myWidget = gtk_label_new("\0"); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/grxnotebook.c =================================================================== --- sandbox/david/grxnotebook.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxnotebook.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -65,11 +65,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %d", window, data, arg1); -#else - snprintf(buffer, sizeof(buffer), "%p %s %d", window, data, arg1); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %d", window, data, arg1); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -87,11 +83,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %d", window, data, arg1); -#else - snprintf(buffer, sizeof(buffer), "%p %s %d", window, data, arg1); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %d", window, data, arg1); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -110,11 +102,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %p %u", window, data, widget, arg2); -#else - snprintf(buffer, sizeof(buffer), "%p %s %p %u", window, data, widget, arg2); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %p %u", window, data, widget, arg2); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -133,11 +121,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %d %d", window, data, arg1, arg2); -#else - snprintf(buffer, sizeof(buffer), "%p %s %d %d", window, data, arg1, arg2); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %d %d", window, data, arg1, arg2); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -157,11 +141,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %p %d %d", window, data, widget, arg2, arg3); -#else - snprintf(buffer, sizeof(buffer), "%p %s %p %d %d", window, data, widget, arg2, arg3); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %p %d %d", window, data, widget, arg2, arg3); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -197,7 +177,7 @@ myWidget = gtk_notebook_new(); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -803,7 +783,7 @@ } /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%d", page); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d", page); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/grxpaned.c =================================================================== --- sandbox/david/grxpaned.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxpaned.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -235,7 +235,7 @@ myWidget = gtk_vpaned_new(); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -262,7 +262,7 @@ myWidget = gtk_hpaned_new(); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/grxrange.c =================================================================== --- sandbox/david/grxrange.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxrange.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -64,11 +64,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s", window, data); -#else - snprintf(buffer, sizeof(buffer), "%p %s", window, data); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s", window, data); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -86,11 +82,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %d", window, data, arg1); -#else - snprintf(buffer, sizeof(buffer), "%p %s %d", window, data, arg1); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %d", window, data, arg1); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -108,11 +100,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %lf", window, data, arg1); -#else - snprintf(buffer, sizeof(buffer), "%p %s %f", window, data, arg1); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %f", window, data, arg1); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -186,7 +174,7 @@ digits = gtk_scale_get_digits(GTK_SCALE(myWidget)); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%d", digits); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d", digits); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -259,7 +247,7 @@ type = gtk_scale_get_value_pos(GTK_SCALE(myWidget)); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%d", type); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d", type); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -303,7 +291,7 @@ myWidget = gtk_hscale_new(adj); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -336,7 +324,7 @@ myWidget = gtk_hscale_new_with_range(min, max, step); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -380,7 +368,7 @@ myWidget = gtk_vscale_new(adj); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; @@ -413,7 +401,7 @@ myWidget = gtk_vscale_new_with_range(min, max, step); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/grxtable.c =================================================================== --- sandbox/david/grxtable.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxtable.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -90,8 +90,8 @@ myWidget = gtk_table_new(rows, cols, homogeneous); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); - Retstr->strlength = strlen(Retstr->strptr); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); + Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; } Modified: sandbox/david/grxwidget.c =================================================================== --- sandbox/david/grxwidget.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxwidget.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -65,11 +65,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s", window, data); -#else - snprintf(buffer, sizeof(buffer), "%p %s", window, data); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s", window, data); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -378,8 +374,8 @@ /* Set up the REXX return code */ if (style != NULL) { - sprintf(Retstr->strptr, "%s", - pango_font_description_to_string(style->font_desc)); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%s", + pango_font_description_to_string(style->font_desc)); } else { *(Retstr->strptr) = '\0'; @@ -415,7 +411,7 @@ access = gtk_widget_get_accessible(myWidget); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", access); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", access); Retstr->strlength = strlen(Retstr->strptr); @@ -550,7 +546,7 @@ } /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", parentWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", parentWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/grxwindow.c =================================================================== --- sandbox/david/grxwindow.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/grxwindow.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -64,11 +64,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s", window, data); -#else - snprintf(buffer, sizeof(buffer), "%p %s", window, data); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s", window, data); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -86,11 +82,7 @@ RXSTRING entry; // set up the queue entry data -#ifdef WIN32 - sprintf(buffer, "%p %s %p", window, data, widget); -#else - snprintf(buffer, sizeof(buffer), "%p %s %p", window, data, widget); -#endif + g_snprintf(buffer, sizeof(buffer), "%p %s %p", window, data, widget); entry.strptr = buffer; entry.strlength = strlen(buffer); @@ -134,7 +126,7 @@ myWidget = gtk_window_new(type); /* Set up the REXX return code */ - sprintf(Retstr->strptr, "%p", myWidget); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%p", myWidget); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; Modified: sandbox/david/rexxgtk.c =================================================================== --- sandbox/david/rexxgtk.c 2008-01-23 14:43:17 UTC (rev 2291) +++ sandbox/david/rexxgtk.c 2008-01-23 15:06:33 UTC (rev 2292) @@ -371,7 +371,7 @@ retc |= RexxRegisterFunctionDll((char *) EntryPoint[f], "rexxgtk", (char *) EntryPoint[f]); } - sprintf(Retstr->strptr, "%u", (unsigned int) retc); + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%u", (unsigned int) retc); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; } @@ -393,8 +393,7 @@ return RXFUNC_BADCALL; } - sprintf(Retstr->strptr, "%d.%d.%d", VMAJOR, VMINOR, VREL); - + g_snprintf(Retstr->strptr, RXAUTOBUFLEN, "%d.%d.%d", VMAJOR, VMINOR, VREL); Retstr->strlength = strlen(Retstr->strptr); return RXFUNC_OK; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wda...@us...> - 2008-01-23 14:43:31
|
Revision: 2291 http://oorexx.svn.sourceforge.net/oorexx/?rev=2291&view=rev Author: wdashley Date: 2008-01-23 06:43:17 -0800 (Wed, 23 Jan 2008) Log Message: ----------- ArtifactID: None Comment: Added the test5-2 scripts. Modified Paths: -------------- sandbox/david/rexxgtk.cls sandbox/david/test5-1.rex sandbox/david/test5-1a.rex Added Paths: ----------- sandbox/david/test5-2.rex sandbox/david/test5-2a.rex Modified: sandbox/david/rexxgtk.cls =================================================================== --- sandbox/david/rexxgtk.cls 2008-01-23 14:24:04 UTC (rev 2290) +++ sandbox/david/rexxgtk.cls 2008-01-23 14:43:17 UTC (rev 2291) @@ -583,7 +583,9 @@ call GrxDialogAddButton self~pointer, text, resp return -::method run +::method run_dialog +-- Note: the name of this method cannot be 'run' as that would override the +-- private 'run' instance method of the ooRexx Object class. use strict arg return GrxDialogRun(self~pointer) Modified: sandbox/david/test5-1.rex =================================================================== --- sandbox/david/test5-1.rex 2008-01-23 14:24:04 UTC (rev 2290) +++ sandbox/david/test5-1.rex 2008-01-23 14:43:17 UTC (rev 2291) @@ -90,7 +90,7 @@ dialog~vbox~pack_start_defaults(hbox) dialog~show_all() -dialog~run() +dialog~run_dialog() dialog~destroy() return Modified: sandbox/david/test5-1a.rex =================================================================== --- sandbox/david/test5-1a.rex 2008-01-23 14:24:04 UTC (rev 2290) +++ sandbox/david/test5-1a.rex 2008-01-23 14:43:17 UTC (rev 2291) @@ -90,7 +90,7 @@ dialog~vbox~pack_start_defaults(hbox) dialog~show_all() -dialog~run() +dialog~run_dialog() dialog~destroy() return Added: sandbox/david/test5-2.rex =================================================================== --- sandbox/david/test5-2.rex (rev 0) +++ sandbox/david/test5-2.rex 2008-01-23 14:43:17 UTC (rev 2291) @@ -0,0 +1,101 @@ +#!/usr/bin/rexx +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2007-2008 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Authors; */ +/* W. David Ashley <da...@us...> */ +/* */ +/*----------------------------------------------------------------------------*/ + + +-- Derived from Listing 5-2 +-- Foundations of GTK+ Development +-- by Andrew Krause + +window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window~set_title('Dialogs') +window~signal_connect("destroy") +window~set_border_width(10) + +button = .MyButton~new('_Click Me') + +-- save data for the callback +button~user_data = window + +button~signal_connect('clicked') + +window~add(button) +window~show_all() + +call gtk_main +return + + +::requires 'rexxgtk.cls' + +::class myMainWindow subclass GtkWindow + +::method signal_destroy +.local['GTK_Quit'] = .true +return + +::class MyButton subclass GtkButton_With_Mnemonic + +::method signal_clicked +dialog = .myDialog~new('Information', self~user_data,, + 'GTK_DIALOG_MODAL',, + 'gtk-ok', 'GTK_RESPONSE_OK') +dialog~set_has_separator(.false) + +label= .GtkLabel~new('The button was clicked!') +image = .GtkImage_From_Stock~new('gtk-dialog-info', 'GTK_ICON_SIZE_DIALOG') + +hbox = .GtkHBox~new(.false, 5) +hbox~set_border_width(10) +hbox~pack_start_defaults(image) +hbox~pack_start_defaults(label) + +dialog~vbox~pack_start_defaults(hbox) +dialog~show_all() + +dialog~signal_connect("response") +return + +::class myDialog subclass GtkDialog_With_Buttons + +::method signal_response +self~destroy() +return + Property changes on: sandbox/david/test5-2.rex ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native Added: sandbox/david/test5-2a.rex =================================================================== --- sandbox/david/test5-2a.rex (rev 0) +++ sandbox/david/test5-2a.rex 2008-01-23 14:43:17 UTC (rev 2291) @@ -0,0 +1,101 @@ +#!/usr/bin/rexx +/*----------------------------------------------------------------------------*/ +/* */ +/* Copyright (c) 2007-2008 Rexx Language Association. All rights reserved. */ +/* */ +/* This program and the accompanying materials are made available under */ +/* the terms of the Common Public License v1.0 which accompanies this */ +/* distribution. A copy is also available at the following address: */ +/* http://www.oorexx.org/license.html */ +/* */ +/* Redistribution and use in source and binary forms, with or */ +/* without modification, are permitted provided that the following */ +/* conditions are met: */ +/* */ +/* Redistributions of source code must retain the above copyright */ +/* notice, this list of conditions and the following disclaimer. */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in */ +/* the documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the name of Rexx Language Association nor the names */ +/* of its contributors may be used to endorse or promote products */ +/* derived from this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ +/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ +/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ +/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ +/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ +/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ +/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Authors; */ +/* W. David Ashley <da...@us...> */ +/* */ +/*----------------------------------------------------------------------------*/ + + +-- Derived from Listing 5-1 +-- Foundations of GTK+ Development +-- by Andrew Krause + +window = .myMainWindow~new('GTK_WINDOW_TOPLEVEL') +window~title = 'Dialogs' +window~signal_connect("destroy") +window~set_border_width(10) + +button = .MyButton~new('_Click Me') + +-- save data for the callback +button~user_data = window + +button~signal_connect('clicked') + +window~add(button) +window~show_all() + +call gtk_main +return + + +::requires 'rexxgtk.cls' + +::class myMainWindow subclass GtkWindow + +::method signal_destroy +.local['GTK_Quit'] = .true +return + +::class MyButton subclass GtkButton_With_Mnemonic + +::method signal_clicked +dialog = .myDialog~new('Information', self~user_data,, + 'GTK_DIALOG_MODAL',, + 'gtk-ok', 'GTK_RESPONSE_OK') +dialog~has_separator = .false + +label= .GtkLabel~new('The button was clicked!') +image = .GtkImage_From_Stock~new('gtk-dialog-info', 'GTK_ICON_SIZE_DIALOG') + +hbox = .GtkHBox~new(.false, 5) +hbox~set_border_width(10) +hbox~pack_start_defaults(image) +hbox~pack_start_defaults(label) + +dialog~vbox~pack_start_defaults(hbox) +dialog~show_all() + +dialog~signal_connect("response") +return + +::class myDialog subclass GtkDialog_With_Buttons + +::method signal_response +self~destroy() +return + Property changes on: sandbox/david/test5-2a.rex ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wda...@us...> - 2008-01-23 14:24:04
|
Revision: 2290 http://oorexx.svn.sourceforge.net/oorexx/?rev=2290&view=rev Author: wdashley Date: 2008-01-23 06:24:04 -0800 (Wed, 23 Jan 2008) Log Message: ----------- ArtifactID: None Comment: Added two new classes to support creating boxes from a pointer. Modified Paths: -------------- sandbox/david/rexxgtk.cls Modified: sandbox/david/rexxgtk.cls =================================================================== --- sandbox/david/rexxgtk.cls 2008-01-22 23:40:29 UTC (rev 2289) +++ sandbox/david/rexxgtk.cls 2008-01-23 14:24:04 UTC (rev 2290) @@ -368,10 +368,6 @@ ::class GtkHBox public subclass GtkBox ::method init -if arg() = 1 then do - use strict arg self~pointer - return - end use arg homogeneous, spacing self~pointer = GrxHBoxNew(homogeneous, spacing) return @@ -382,16 +378,23 @@ /*============================================================================*/ +/* Class: GtkHBox_From_Pointer */ +/*============================================================================*/ + +::class GtkHBox_From_Pointer private subclass GtkHBox + +::method init +use strict arg self~pointer +return + + +/*============================================================================*/ /* Class: GtkVBox */ /*============================================================================*/ ::class GtkVBox public subclass GtkBox ::method init -if arg() = 1 then do - use strict arg self~pointer - return - end use arg homogeneous, spacing self~pointer = GrxVBoxNew(homogeneous, spacing) return @@ -402,6 +405,17 @@ /*============================================================================*/ +/* Class: GtkVBox_From_Pointer */ +/*============================================================================*/ + +::class GtkVBox_From_Pointer private subclass GtkVBox + +::method init +use strict arg self~pointer +return + + +/*============================================================================*/ /* Class: GtkPaned */ /* Note: This is strictly a base class. It should never be instantiated on */ /* its own. You should instantiate one of its subclasses instead. */ @@ -547,7 +561,7 @@ ::method 'vbox=' private expose vbox use strict arg vbox_ptr -vbox = .GtkVBox~new(vbox_ptr) +vbox = .GtkVBox_From_Pointer~new(vbox_ptr) return vbox ::method vbox This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bi...@us...> - 2008-01-22 23:40:26
|
Revision: 2289 http://oorexx.svn.sourceforge.net/oorexx/?rev=2289&view=rev Author: bigrixx Date: 2008-01-22 15:40:29 -0800 (Tue, 22 Jan 2008) Log Message: ----------- Linux cleanup Modified Paths: -------------- sandbox/rick/init/kernel/classes/MethodClass.cpp sandbox/rick/init/kernel/platform/unix/MemorySupport.cpp sandbox/rick/init/kernel/platform/unix/PlatformDefinitions.h sandbox/rick/init/kernel/platform/unix/RexxQueues.cpp sandbox/rick/init/kernel/platform/unix/VariablePool.cpp sandbox/rick/init/kernel/runtime/ActivityDispatcher.hpp sandbox/rick/init/kernel/runtime/CallbackDispatcher.hpp sandbox/rick/init/kernel/runtime/CreateMethodDispatcher.hpp sandbox/rick/init/kernel/runtime/ExitHandler.hpp sandbox/rick/init/kernel/runtime/Interpreter.cpp sandbox/rick/init/kernel/runtime/InterpreterInstance.cpp sandbox/rick/init/kernel/runtime/RexxActivation.cpp sandbox/rick/init/kernel/runtime/RexxStartDispatcher.hpp sandbox/rick/init/kernel/runtime/TranslateDispatcher.hpp sandbox/rick/init/platform/unix/rexx.cpp sandbox/rick/init/rexxapi/unix/MacroSpace.cpp sandbox/rick/init/rexxapi/unix/SubcommandAPI.cpp Modified: sandbox/rick/init/kernel/classes/MethodClass.cpp =================================================================== --- sandbox/rick/init/kernel/classes/MethodClass.cpp 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/kernel/classes/MethodClass.cpp 2008-01-22 23:40:29 UTC (rev 2289) @@ -533,6 +533,7 @@ RexxMethod *routine = SysRestoreProgramBuffer(&buffer, name); // release the buffer memory SysReleaseResultMemory(buffer.strptr); + return routine; } return OREF_NULL; // not found } Modified: sandbox/rick/init/kernel/platform/unix/MemorySupport.cpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/MemorySupport.cpp 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/kernel/platform/unix/MemorySupport.cpp 2008-01-22 23:40:29 UTC (rev 2289) @@ -274,15 +274,12 @@ } } -MemorySegmentPool * MemorySegmentPool::freePool() // add return value +void MemorySegmentPool::freePool() // add return value /*********************************************************************/ /* Function:: Free this pool object */ /*********************************************************************/ { - MemorySegmentPool *nextPtr; - nextPtr = this->next; free(this); - return nextPtr; } /******************** added by weigold *******************************/ Modified: sandbox/rick/init/kernel/platform/unix/PlatformDefinitions.h =================================================================== --- sandbox/rick/init/kernel/platform/unix/PlatformDefinitions.h 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/kernel/platform/unix/PlatformDefinitions.h 2008-01-22 23:40:29 UTC (rev 2289) @@ -357,7 +357,6 @@ #ifdef __cplusplus extern "C" { #endif -char * APIENTRY RexxGetVersionInformation(); #ifdef SEMAPHORE_DEBUG void SysRequestMutexSem (SMTX psem); /* request a mutex semaphore */ /* request a mutex (immediate return)*/ Modified: sandbox/rick/init/kernel/platform/unix/RexxQueues.cpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/RexxQueues.cpp 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/kernel/platform/unix/RexxQueues.cpp 2008-01-22 23:40:29 UTC (rev 2289) @@ -52,6 +52,7 @@ #include "RexxNativeAPI.h" /* Lot's of useful REXX macros */ #include "StreamNative.h" #include "ActivityManager.hpp" +#include "RexxNativeActivation.hpp" #include "SubcommandAPI.h" /* Get private REXX API's */ @@ -215,7 +216,7 @@ NativeContextBlock context; - RexxActivation *activation = (RexxActivation *)ActivityManager::currentActivity->getCurrentActivation(); + RexxActivation *activation = context.self->getRexxContext(); /* call the exit */ context.activity->callQueueNameExit(activation, qname); return context.protect(qname); /* and just return the exit result */ Modified: sandbox/rick/init/kernel/platform/unix/VariablePool.cpp =================================================================== --- sandbox/rick/init/kernel/platform/unix/VariablePool.cpp 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/kernel/platform/unix/VariablePool.cpp 2008-01-22 23:40:29 UTC (rev 2289) @@ -202,7 +202,7 @@ pshvblock = (PSHVBLOCK)requests; /* copy the request block pointer */ /* get the variable dictionary */ - activation = self->getCurrentActivation(); + activation = self->getRexxContext(); while (pshvblock) { /* while more request blocks */ Modified: sandbox/rick/init/kernel/runtime/ActivityDispatcher.hpp =================================================================== --- sandbox/rick/init/kernel/runtime/ActivityDispatcher.hpp 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/kernel/runtime/ActivityDispatcher.hpp 2008-01-22 23:40:29 UTC (rev 2289) @@ -53,7 +53,7 @@ exits = e; defaultEnvironment = env; } - inline ~ActivityDispatcher() { ; } + virtual ~ActivityDispatcher() { ; } virtual void run(); virtual void handleError(wholenumber_t, RexxDirectory *); Modified: sandbox/rick/init/kernel/runtime/CallbackDispatcher.hpp =================================================================== --- sandbox/rick/init/kernel/runtime/CallbackDispatcher.hpp 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/kernel/runtime/CallbackDispatcher.hpp 2008-01-22 23:40:29 UTC (rev 2289) @@ -48,7 +48,7 @@ { public: inline CallbackDispatcher() { ; } - inline ~CallbackDispatcher() { ; } + virtual ~CallbackDispatcher() { ; } virtual void run(); virtual void handleError(wholenumber_t, RexxDirectory *); Modified: sandbox/rick/init/kernel/runtime/CreateMethodDispatcher.hpp =================================================================== --- sandbox/rick/init/kernel/runtime/CreateMethodDispatcher.hpp 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/kernel/runtime/CreateMethodDispatcher.hpp 2008-01-22 23:40:29 UTC (rev 2289) @@ -47,7 +47,7 @@ { public: inline ConditionDispatcher(PRXSYSEXIT e, const char *env, RexxConditionData *cd) : ActivityDispatcher(e, env) { translatedCondition = cd; } - inline ~ConditionDispatcher() { ; } + virtual ~ConditionDispatcher() { ; } virtual void handleError(wholenumber_t, RexxDirectory *); @@ -62,7 +62,7 @@ { public: inline CreateMethodDispatcher(RexxConditionData *cd) : ConditionDispatcher(NULL, NULL, cd) { ; } - inline ~CreateMethodDispatcher() { ; } + virtual ~CreateMethodDispatcher() { ; } virtual void run(); @@ -76,7 +76,7 @@ { public: inline RunMethodDispatcher(PRXSYSEXIT e, RexxConditionData *cd) : ConditionDispatcher(e, NULL, cd) { ; } - inline ~RunMethodDispatcher() { ; } + virtual ~RunMethodDispatcher() { ; } virtual void run(); Modified: sandbox/rick/init/kernel/runtime/ExitHandler.hpp =================================================================== --- sandbox/rick/init/kernel/runtime/ExitHandler.hpp 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/kernel/runtime/ExitHandler.hpp 2008-01-22 23:40:29 UTC (rev 2289) @@ -82,7 +82,7 @@ { public: inline ExitHandlerDispatcher(REXXPFN e, int code, int subcode, void *a) { entryPoint = e; major = code; minor = subcode; parms = a; } - inline ~ExitHandlerDispatcher() { ; } + virtual ~ExitHandlerDispatcher() { ; } virtual void run(); Modified: sandbox/rick/init/kernel/runtime/Interpreter.cpp =================================================================== --- sandbox/rick/init/kernel/runtime/Interpreter.cpp 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/kernel/runtime/Interpreter.cpp 2008-01-22 23:40:29 UTC (rev 2289) @@ -199,7 +199,7 @@ // now shutdown the memory object memoryObject.shutdown(); - RexxList *interpreterInstances = OREF_NULL; + interpreterInstances = OREF_NULL; } return true; } Modified: sandbox/rick/init/kernel/runtime/InterpreterInstance.cpp =================================================================== --- sandbox/rick/init/kernel/runtime/InterpreterInstance.cpp 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/kernel/runtime/InterpreterInstance.cpp 2008-01-22 23:40:29 UTC (rev 2289) @@ -366,7 +366,7 @@ return false; } - bool terminated = false; + terminated = false; // turn on the global termination in process flag terminating = true; Modified: sandbox/rick/init/kernel/runtime/RexxActivation.cpp =================================================================== --- sandbox/rick/init/kernel/runtime/RexxActivation.cpp 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/kernel/runtime/RexxActivation.cpp 2008-01-22 23:40:29 UTC (rev 2289) @@ -2364,19 +2364,19 @@ RexxMethod *RexxActivation::getMacroCode(RexxString *macroName) { RXSTRING macroImage; - RexxMethod * method = OREF_NULL; + RexxMethod * macroMethod = OREF_NULL; macroImage.strptr = NULL; if (RexxExecuteMacroFunction(macroName->getStringData(), ¯oImage) == 0) { - method = SysRestoreProgramBuffer(¯oImage, macroName); + macroMethod = SysRestoreProgramBuffer(¯oImage, macroName); // return the allocated buffer if (macroImage.strptr == NULL) { SysReleaseResultMemory(macroImage.strptr); } } - return method; + return macroMethod; } Modified: sandbox/rick/init/kernel/runtime/RexxStartDispatcher.hpp =================================================================== --- sandbox/rick/init/kernel/runtime/RexxStartDispatcher.hpp 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/kernel/runtime/RexxStartDispatcher.hpp 2008-01-22 23:40:29 UTC (rev 2289) @@ -46,7 +46,7 @@ { public: inline RexxStartDispatcher(PRXSYSEXIT e, const char *env) : ActivityDispatcher(e, env) { ; } - inline ~RexxStartDispatcher() { ; } + virtual ~RexxStartDispatcher() { ; } virtual void run(); virtual void handleError(wholenumber_t, RexxDirectory *); Modified: sandbox/rick/init/kernel/runtime/TranslateDispatcher.hpp =================================================================== --- sandbox/rick/init/kernel/runtime/TranslateDispatcher.hpp 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/kernel/runtime/TranslateDispatcher.hpp 2008-01-22 23:40:29 UTC (rev 2289) @@ -46,7 +46,7 @@ { public: inline TranslateDispatcher(PRXSYSEXIT e) : ActivityDispatcher(e, NULL) { ; } - inline ~TranslateDispatcher() { ; } + virtual ~TranslateDispatcher() { ; } virtual void run(); virtual void handleError(wholenumber_t, RexxDirectory *); Modified: sandbox/rick/init/platform/unix/rexx.cpp =================================================================== --- sandbox/rick/init/platform/unix/rexx.cpp 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/platform/unix/rexx.cpp 2008-01-22 23:40:29 UTC (rev 2289) @@ -66,7 +66,6 @@ extern "C" { #endif bool APIENTRY RexxInitialize (void); -char * APIENTRY RexxGetVersionInformation(void); #ifdef __cplusplus } #endif Modified: sandbox/rick/init/rexxapi/unix/MacroSpace.cpp =================================================================== --- sandbox/rick/init/rexxapi/unix/MacroSpace.cpp 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/rexxapi/unix/MacroSpace.cpp 2008-01-22 23:40:29 UTC (rev 2289) @@ -516,7 +516,7 @@ if((tmp=does_exist(name,NULL))){ /* if name exists in list... */ // allocate a new buffer in local memory - p->strptr = RexxAllocateMemory(MDATA(tmp)->i_size) + p->strptr = (char *)RexxAllocateMemory(MDATA(tmp)->i_size); if (p->strptr == NULL) { rc = RXMACRO_NO_STORAGE; Modified: sandbox/rick/init/rexxapi/unix/SubcommandAPI.cpp =================================================================== --- sandbox/rick/init/rexxapi/unix/SubcommandAPI.cpp 2008-01-22 22:29:32 UTC (rev 2288) +++ sandbox/rick/init/rexxapi/unix/SubcommandAPI.cpp 2008-01-22 23:40:29 UTC (rev 2289) @@ -63,6 +63,7 @@ #include "SubcommandAPI.h" #include "RexxAPIManager.h" #include "APIUtilities.h" +#include "RexxInternalApis.h" #include <unistd.h> #include <sys/shm.h> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |