Cubus C++ OCL v1.50 Samples Hack
Appearance
This is a quick and dirty hack to make the samples in OCL v1.50 to compile.
In Cubus OCL v1.50 the header files now must be included using the #include directive, instead of using the #define INCL_O... macros as in previous versions of the library.
Here is a REXX script that creates %OCL%\INCLUDE\OclAll.hpp, which is simply a header that includes all the headers. You must then edit the sample's *.hpp file to include OclAll.hpp after the #include <ocl.hpp> statement.
The sample's code will look like this:
#define OINCL_OXAPP
...
#include <ocl.hpp>
#include <oclall.hpp>
...
/* ---------------------------------------------------------------------
* oclfix.cmd
*
* Syntax : oclfix
*
* Description : Creates %OCL%\INCLUDE\OclAll.hpp which is a list
* of all the OCL headers.
*
* Returns : 0 = success, 1 = error
*
* -------------------------------------------------------------------*/
"@echo off"
signal on Halt
signal on NoValue
Ocldir = value("OCL",, "OS2ENVIRONMENT")
if Ocldir == "" then do
say "OCL environment not found."
return 1
end
fnameout = Ocldir"\Include\OclAll.hpp"
call Syscls ; say center("Creating" fnameout, 80)
i = SysFileDelete(fnameout)
i = lineout(fnameout, "#ifndef OCLALL_HPP_INCLUDED")
i = lineout(fnameout, "#define OCLALL_HPP_INCLUDED"||"0d0a"x)
fmask = Ocldir"\Include\*.hpp"
drop file.
call SysFileTree fmask, 'file', 'f'
if file.0 = 0 then do
say '' ; say 'No matching files: 'fmask ; exit 0
end
do fcount = 1 to file.0
parse var file.fcount de te ea at fnamehpp
fnamehpp = strip(fnamehpp)
notready = stream(fnamehpp, 'c', 'open')
oooooooo = stream(fnamehpp, 'c', 'close')
if pos("NOTREADY", notready) \= 0 then do /* file is NOT ready */
say notready' 'fnamehpp
return 1
end
else do /* file is ready */
fnamehpp = filespec('name', fnamehpp)
cmp = translate(fnamehpp)
call charout , '.'
if (pos("OCL.HPP", cmp)) | (pos(cmp, "OCLALL.HPP")) then
iterate
i = lineout(fnameout, "#include" x2c(3c)||fnamehpp||x2c(3e))
end
end
i = lineout(fnameout, "0d0a"x||"#endif // OCLALL_HPP_INCLUDED")
say "0d0a"x||"Done."||"0d0a"x
say center("Add", 80)
say center("#include "filespec('name',fnameout)"" , 80)
say center("to the header file(s) of the samples you want to compile,", 80)
say center("after the #include ocl.hpp statement.", 80)
return 0
/* ---------------------------------------------------------------------
* Procedure : Halt
* Purpose : Ctrl+C, Ctrl+Break catcher
* Returns : n/a
* -------------------------------------------------------------------*/
Halt:
parse source . . arg0
say '0d0a'x||arg0 'halted at line' sigl
exit 0
/* ---------------------------------------------------------------------
* Procedure : Novalue
* Purpose : Catches uninitialized variables
* Returns : n/a
* -------------------------------------------------------------------*/
Novalue:
parse source . . arg0
say '0d0a'x||arg0 'Novalue at line' sigl
exit 0