See Changelog 20000128
This commit is contained in:
@@ -1,3 +1,19 @@
|
||||
20000128-20:3 GMT+3 Luiz Rafael Culik <culik@sl.conex.net>
|
||||
*source/rdd/dbcmd.c
|
||||
*source/rtl/arrays.c
|
||||
*Enhaced the Docs
|
||||
*doc/whatnew.txt
|
||||
*Description of the program that extract documention from source code forget the OS2 and TROFF output
|
||||
20000115-20:3 GMT+3 Luiz Rafael Culik <culik@sl.conex.net>
|
||||
|
||||
* ngdoc/ft_helpc.prg
|
||||
* Fixed some erros
|
||||
* source/tools/rtf.prg
|
||||
* source/tools/ng.prg
|
||||
* source/tools/os2.prg
|
||||
* source/tools/troff.prg
|
||||
* Fixed the aligment of text on generating the source files
|
||||
|
||||
20000127-12:54 GMT+1 Patrick Mast <harbour@PatrickMast.com>
|
||||
* doc/whatsnew.txt
|
||||
* updated for build 31
|
||||
|
||||
@@ -49,7 +49,7 @@ Build #31 2000-01-27
|
||||
ISAFFIRM(), ISNEGATIVE(), NATIONMSG(), _NATSORTVER(), _NATMSGVER()
|
||||
- Added Harbour compiler tracing (i.e., debug output)
|
||||
- Many changes, fixes, and enhancements to documentation
|
||||
- Program added to extract documentation from source code and create NG and HLP files
|
||||
- Program added to extract documentation from source code and create NG,HLP ,OS2 IPF and TROFF output files
|
||||
- Compile time expression optimizer.
|
||||
- Some preprocessor fixes
|
||||
- Added ADS RDD
|
||||
|
||||
@@ -58,4 +58,4 @@ troff.c : troff.prg harbour.exe
|
||||
|
||||
.c.obj:
|
||||
bcc32 -c -O2 -Iinclude -o$@ $<
|
||||
tlib lib\b32\hbgt.lib -+$@,,
|
||||
tlib lib\b32\hbgt.lib -+$@,,
|
||||
|
||||
@@ -45,7 +45,16 @@
|
||||
*
|
||||
* 1/18/2000 Added Cleanup procedure when Generating Norton Guide
|
||||
*
|
||||
* V1.05
|
||||
* 1/22/2000 Added Code to generate OS2 IPF files
|
||||
*
|
||||
* V1.06
|
||||
* 1/25/2000 Fixed some error that was not generating a valid RTF File
|
||||
* Removed Call TO HB_OEMTOANSI() on the rountines to generate the .Ngi
|
||||
* and Rtf files.
|
||||
* Added support to generate the Docs from .Txt files, See doc\Subcodes.txt
|
||||
* for header file.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -136,6 +145,8 @@ STATIC cTest := DELIM + 'TESTS' + DELIM
|
||||
STATIC cStatus := DELIM + 'STATUS' + DELIM
|
||||
STATIC cPlat := DELIM + 'PLATFORMS' + DELIM
|
||||
STATIC cFiles := DELIM + 'FILES' + DELIM
|
||||
STATIC cSubCode := DELIM + 'SUBCODE' + DELIM
|
||||
STATIC cFunction := DELIM + 'FUNCTION' +DELIM
|
||||
STATIC theHandle
|
||||
|
||||
*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||
@@ -144,10 +155,10 @@ STATIC theHandle
|
||||
*+
|
||||
*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||
*+
|
||||
FUNCTION FT_HELPC( cFlags, cLinkName, cAtFile, cDir )
|
||||
FUNCTION FT_HELPC( cFlags, cLinkName, cAtFile )
|
||||
|
||||
// LOCAL variables:
|
||||
LOCAL aExtensions := { "*.PRG", "*.C", "*.ASM", "*.CH" }
|
||||
LOCAL aExtensions := { "*.PRG", "*.C", "*.ASM", "*.CH" , "*.TXT" }
|
||||
LOCAL i
|
||||
LOCAL j
|
||||
LOCAL nItem
|
||||
@@ -657,14 +668,17 @@ STATIC FUNCTION ProcessFiles
|
||||
// -
|
||||
// LOCAL variables:
|
||||
|
||||
#define D_NORMAL 1
|
||||
#define D_ARG 2
|
||||
#define D_SYNTAX 3
|
||||
#define D_IGNORE 4
|
||||
#define D_SEEALSO 5
|
||||
#define D_INCLUDE 6
|
||||
#define D_ONELINE 7
|
||||
#define D_STATUS 8
|
||||
#define D_NORMAL 1
|
||||
#define D_ARG 2
|
||||
#define D_SYNTAX 3
|
||||
#define D_IGNORE 4
|
||||
#define D_SEEALSO 5
|
||||
#define D_INCLUDE 6
|
||||
#define D_ONELINE 7
|
||||
#define D_STATUS 8
|
||||
#define D_TESTS 9
|
||||
#define D_FUNCTIONS 10
|
||||
|
||||
LOCAL i
|
||||
LOCAL j
|
||||
LOCAL nFiles := LEN( aDirList )
|
||||
@@ -782,7 +796,7 @@ STATIC FUNCTION ProcessFiles
|
||||
IF lDoc
|
||||
// 1) function name
|
||||
|
||||
IF AT( cFunc, cBuffer ) > 0 .OR. AT( cComm, cBuffer ) > 0
|
||||
IF AT( cFunc, cBuffer ) > 0 .OR. AT( cComm, cBuffer ) > 0 .OR. AT(cSubCode,cBuffer) > 0
|
||||
cBuffer := ReadLN( @lEof )
|
||||
nLineCnt ++
|
||||
// Save the function name
|
||||
@@ -926,17 +940,7 @@ STATIC FUNCTION ProcessFiles
|
||||
nMode := D_NORMAL
|
||||
lAddBlank := .T.
|
||||
ELSEIF AT( cTest, cBuffer ) > 0
|
||||
|
||||
IF !lBlankLine
|
||||
FWRITE( nWriteHandle, CRLF )
|
||||
ENDIF
|
||||
FWRITE( nWriteHandle, ".par bold on" + CRLF )
|
||||
FWRITE( nWriteHandle, " Tests" + CRLF )
|
||||
FWRITE( nWriteHandle, ".endpar" + CRLF )
|
||||
|
||||
nMode := D_NORMAL
|
||||
lAddBlank := .T.
|
||||
|
||||
nMode=D_TESTS
|
||||
ELSEIF AT( cCompl, cBuffer ) > 0
|
||||
|
||||
IF !lBlankLine
|
||||
@@ -971,6 +975,18 @@ STATIC FUNCTION ProcessFiles
|
||||
|
||||
nMode := D_NORMAL
|
||||
lAddBlank := .T.
|
||||
ELSEIF AT( cFunction, cBuffer ) > 0
|
||||
|
||||
IF !lBlankLine
|
||||
FWRITE( nWriteHandle, CRLF )
|
||||
ENDIF
|
||||
FWRITE( nWriteHandle, ".par bold on" + CRLF )
|
||||
FWRITE( nWriteHandle, " Function" + CRLF )
|
||||
FWRITE( nWriteHandle, ".endpar" + CRLF )
|
||||
|
||||
nMode := D_NORMAL
|
||||
lAddBlank := .T.
|
||||
|
||||
ELSEIF AT( cStatus, cBuffer ) > 0
|
||||
nMode := D_STATUS
|
||||
ELSEIF AT( cSee, cBuffer ) > 0
|
||||
@@ -1038,7 +1054,15 @@ STATIC FUNCTION ProcessFiles
|
||||
FWRITE( nWriteHandle, ".endpar" + CRLF )
|
||||
ENDIF
|
||||
ProcStatus( nWriteHandle, StripNgControls( cBuffer ) )
|
||||
ELSEIF nMode=D_TESTS
|
||||
IF !EMPTY(cBuffer)
|
||||
FWRITE( nWriteHandle, ".par bold on" + CRLF )
|
||||
FWRITE( nWriteHandle, " Tests" + CRLF )
|
||||
FWRITE( nWriteHandle, ".endpar" + CRLF )
|
||||
FWRITE( nWriteHandle, CRLF )
|
||||
|
||||
ENDIF
|
||||
FWRITE( nWriteHandle,StripNgControls( cBuffer ) +CRLF)
|
||||
ELSE
|
||||
|
||||
// unknown data from somewhere
|
||||
@@ -2233,7 +2257,8 @@ STATIC FUNCTION ProcessRtf
|
||||
// Now close down this little piece
|
||||
lDoc := .F.
|
||||
IF .NOT. EMPTY( cSeeAlso )
|
||||
oRtf:WritePar( "See Also" ):EndPar()
|
||||
oRtf:WritePar(""):EndPar()
|
||||
oRtf:WriteParBold( "See Also" )
|
||||
ProcRtfalso( oRtf, cSeealso )
|
||||
ENDIF
|
||||
|
||||
@@ -2248,7 +2273,7 @@ STATIC FUNCTION ProcessRtf
|
||||
IF lDoc
|
||||
// 1) function name
|
||||
|
||||
IF AT( cFunc, cBuffer ) > 0 .OR. AT( cComm, cBuffer ) > 0
|
||||
IF AT( cFunc, cBuffer ) > 0 .OR. AT( cComm, cBuffer ) > 0 .OR. AT( cSubCode, cBuffer ) >0
|
||||
cBuffer := ReadLN( @lEof )
|
||||
nLineCnt ++
|
||||
// Save the function name
|
||||
@@ -2330,7 +2355,7 @@ STATIC FUNCTION ProcessRtf
|
||||
// Now start writing out what we know
|
||||
oRtf:WriteTitle( PAD( cFuncName, 21 ), cFuncName )
|
||||
oRtf:WriteParBold( cOneLine )
|
||||
oRtf:WritePar( HB_OEMTOANSI( cBar ) ):EndPar()
|
||||
oRtf:WritePar( cBar ):EndPar()
|
||||
// 4) all other stuff
|
||||
|
||||
ELSE
|
||||
@@ -2401,6 +2426,7 @@ STATIC FUNCTION ProcessRtf
|
||||
IF !lBlankLine
|
||||
oRtf:WritePar( "" ):EndPar()
|
||||
ENDIF
|
||||
oRtf:WritePar( "" ):EndPar()
|
||||
oRtf:WriteParBold( " Compilance" )
|
||||
nMode := D_NORMAL
|
||||
lAddBlank := .T.
|
||||
@@ -2422,6 +2448,16 @@ STATIC FUNCTION ProcessRtf
|
||||
nMode := D_NORMAL
|
||||
lAddBlank := .T.
|
||||
|
||||
ELSEIF AT( cFunction, cBuffer ) > 0
|
||||
|
||||
IF !lBlankLine
|
||||
oRtf:WritePar( "" ):EndPar()
|
||||
ENDIF
|
||||
oRtf:WriteParBold( " Functions" )
|
||||
|
||||
nMode := D_NORMAL
|
||||
lAddBlank := .T.
|
||||
|
||||
ELSEIF AT( cSee, cBuffer ) > 0
|
||||
nMode := D_SEEALSO
|
||||
ELSEIF AT( cInc, cBuffer ) > 0
|
||||
@@ -2445,6 +2481,8 @@ STATIC FUNCTION ProcessRtf
|
||||
/* nNonBlank:=FirstNB(cBuffer)
|
||||
cBuffer=STUFF(cBuffer,nNonBlank,0,"^a1f ")*/
|
||||
oRtf:WritePar( cBuffer ):EndPar()
|
||||
oRtf:WritePar(""):EndPar()
|
||||
|
||||
ELSEIF nMode = D_ARG
|
||||
IF LEN( cBuffer ) > LONGLINE
|
||||
write_error( "Arguments", cBuffer, nLineCnt, ;
|
||||
@@ -2469,6 +2507,7 @@ STATIC FUNCTION ProcessRtf
|
||||
lAddBlank := .F.
|
||||
ENDIF
|
||||
oRtf:WritePar( StripNgControls( cBuffer ) ):EndPar()
|
||||
|
||||
ELSEIF nMode = D_SEEALSO
|
||||
IF .NOT. EMPTY( cBuffer )
|
||||
cSeeAlso := StripFiles( ALLTRIM( cBuffer ) )
|
||||
@@ -2484,10 +2523,20 @@ STATIC FUNCTION ProcessRtf
|
||||
ENDIF
|
||||
ELSEIF nMode = D_STATUS
|
||||
IF !EMPTY( cBuffer )
|
||||
oRtf:WritePar(""):EndPar()
|
||||
oRtf:WriteParBold( "Status" )
|
||||
oRtf:WritePar(""):EndPar()
|
||||
xaddblank:=.T.
|
||||
ELSE
|
||||
oRtf:WritePar(""):EndPar()
|
||||
xAddBlank:=.T.
|
||||
ENDIF
|
||||
ProcStatusRtf( oRtf, cBuffer )
|
||||
|
||||
IF !xAddBlank
|
||||
oRtf:WritePar(""):EndPar()
|
||||
xaddblank:=.T.
|
||||
ENDIF
|
||||
xAddBlank:=.F.
|
||||
ELSE
|
||||
|
||||
// unknown data from somewhere
|
||||
@@ -2507,7 +2556,7 @@ STATIC FUNCTION ProcessRtf
|
||||
NEXT
|
||||
|
||||
RETURN NIL
|
||||
|
||||
|
||||
*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||
*+
|
||||
*+ Function ProcRtfAlso()
|
||||
@@ -2585,8 +2634,9 @@ RETURN nil
|
||||
*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||
*+
|
||||
FUNCTION ProcStatus( nWriteHandle, cBuffer )
|
||||
|
||||
IF SUBSTR( ALLTRIM( cBuffer ), 1 ) == "R"
|
||||
IF LEN( ALLTRIM( cBuffer ) ) > 1
|
||||
FWRITE( nWriteHandle, cBuffer + CRLF )
|
||||
ELSEIF SUBSTR( ALLTRIM( cBuffer ), 1 ) == "R"
|
||||
FWRITE( nWriteHandle, " Ready" + CRLF )
|
||||
ELSEIF SUBSTR( ALLTRIM( cBuffer ), 1 ) == "S"
|
||||
FWRITE( nWriteHandle, " Started" + CRLF )
|
||||
@@ -2602,8 +2652,9 @@ RETURN nil
|
||||
*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||
*+
|
||||
FUNCTION ProcStatusRTF( nWriteHandle, cBuffer )
|
||||
|
||||
IF SUBSTR( ALLTRIM( cBuffer ), 1 ) == "R"
|
||||
IF LEN( ALLTRIM(cBuffer) ) >1
|
||||
nWriteHandle:WritePar( cBuffer ):EndPar()
|
||||
ELSEIF SUBSTR( ALLTRIM( cBuffer ), 1 ) == "R"
|
||||
nWriteHandle:WritePar( " Ready" ):EndPar()
|
||||
ELSEIF SUBSTR( ALLTRIM( cBuffer ), 1 ) == "S"
|
||||
nWriteHandle:WritePar( " Started" ):EndPar()
|
||||
@@ -2756,7 +2807,7 @@ STATIC FUNCTION ProcessWww
|
||||
IF lDoc
|
||||
// 1) function name
|
||||
|
||||
IF AT( cFunc, cBuffer ) > 0 .OR. AT( cComm, cBuffer ) > 0
|
||||
IF AT( cFunc, cBuffer ) > 0 .OR. AT( cComm, cBuffer ) > 0 .OR. AT( cSubCode, cBuffer ) >0
|
||||
cBuffer := ReadLN( @lEof )
|
||||
nLineCnt ++
|
||||
// Save the function name
|
||||
@@ -2928,6 +2979,15 @@ STATIC FUNCTION ProcessWww
|
||||
ENDIF
|
||||
oHtm:WriteParBold( " Files" )
|
||||
|
||||
nMode := D_NORMAL
|
||||
lAddBlank := .T.
|
||||
ELSEIF AT( cFunction, cBuffer ) > 0
|
||||
|
||||
IF !lBlankLine
|
||||
oHtm:WritePar( "" )
|
||||
ENDIF
|
||||
oHtm:WriteParBold( " Functions" )
|
||||
|
||||
nMode := D_NORMAL
|
||||
lAddBlank := .T.
|
||||
|
||||
@@ -3116,8 +3176,9 @@ RETURN nil
|
||||
*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
||||
*+
|
||||
FUNCTION ProcStatusWww( nWriteHandle, cBuffer )
|
||||
|
||||
IF SUBSTR( ALLTRIM( cBuffer ), 1 ) == "R"
|
||||
IF LEN( ALLTRIM( cBuffer ) ) >1
|
||||
nWriteHandle:WritePar( cBuffer)
|
||||
ELSEIF SUBSTR( ALLTRIM( cBuffer ), 1 ) == "R"
|
||||
nWriteHandle:WritePar( " Ready" )
|
||||
ELSEIF SUBSTR( ALLTRIM( cBuffer ), 1 ) == "S"
|
||||
nWriteHandle:WritePar( " Started" )
|
||||
@@ -3333,7 +3394,7 @@ STATIC FUNCTION ProcessNgi
|
||||
IF lDoc
|
||||
// 1) function name
|
||||
|
||||
IF AT( cFunc, cBuffer ) > 0 .OR. AT( cComm, cBuffer ) > 0
|
||||
IF AT( cFunc, cBuffer ) > 0 .OR. AT( cComm, cBuffer ) > 0 .OR. AT( cSubCode, cBuffer ) >0
|
||||
cBuffer := ReadLN( @lEof )
|
||||
nLineCnt ++
|
||||
// Save the function name
|
||||
@@ -3415,7 +3476,7 @@ STATIC FUNCTION ProcessNgi
|
||||
// Now start writing out what we know
|
||||
oNgi:WriteTitle( PAD( cFuncName, 21 ) + cOneLine, cFuncName )
|
||||
oNgi:WritePar( cOneLine )
|
||||
oNgi:WritePar( HB_OEMTOANSI( cBar ) )
|
||||
oNgi:WritePar( cBar )
|
||||
// 4) all other stuff
|
||||
|
||||
ELSE
|
||||
@@ -3507,6 +3568,15 @@ STATIC FUNCTION ProcessNgi
|
||||
nMode := D_NORMAL
|
||||
lAddBlank := .T.
|
||||
|
||||
ELSEIF AT( cFunction, cBuffer ) > 0
|
||||
|
||||
IF !lBlankLine
|
||||
oNgi:WritePar( "" )
|
||||
ENDIF
|
||||
oNgi:WriteParBold( " Functions" )
|
||||
|
||||
nMode := D_NORMAL
|
||||
lAddBlank := .T.
|
||||
ELSEIF AT( cSee, cBuffer ) > 0
|
||||
nMode := D_SEEALSO
|
||||
ELSEIF AT( cInc, cBuffer ) > 0
|
||||
@@ -4009,7 +4079,7 @@ STATIC FUNCTION ProcessTroff
|
||||
IF lDoc
|
||||
// 1) function name
|
||||
|
||||
IF AT( cFunc, cBuffer ) > 0 .OR. AT( cComm, cBuffer ) > 0
|
||||
IF AT( cFunc, cBuffer ) > 0 .OR. AT( cComm, cBuffer ) > 0 .OR. AT( cSubCode, cBuffer ) >0
|
||||
cBuffer := ReadLN( @lEof )
|
||||
nLineCnt ++
|
||||
// Save the function name
|
||||
@@ -4432,7 +4502,7 @@ STATIC FUNCTION ProcessOs2
|
||||
IF lDoc
|
||||
// 1) function name
|
||||
|
||||
IF AT( cFunc, cBuffer ) > 0 .OR. AT( cComm, cBuffer ) > 0
|
||||
IF AT( cFunc, cBuffer ) > 0 .OR. AT( cComm, cBuffer ) > 0 .OR. AT( cSubCode, cBuffer ) >0
|
||||
cBuffer := ReadLN( @lEof )
|
||||
nLineCnt ++
|
||||
// Save the function name
|
||||
@@ -4599,6 +4669,15 @@ STATIC FUNCTION ProcessOs2
|
||||
ENDIF
|
||||
oOs2:WriteParBold( " Files" )
|
||||
|
||||
nMode := D_NORMAL
|
||||
lAddBlank := .T.
|
||||
ELSEIF AT( cFunction, cBuffer ) > 0
|
||||
|
||||
IF !lBlankLine
|
||||
oOs2:WritePar( "" )
|
||||
ENDIF
|
||||
oOs2:WriteParBold( " Function" )
|
||||
|
||||
nMode := D_NORMAL
|
||||
lAddBlank := .T.
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@ source\rtl\memvarbl.prg
|
||||
source\rtl\memvars.c
|
||||
source\rtl\menuto.prg
|
||||
source\rtl\mlcount.c
|
||||
source\rtl\mlpos.c
|
||||
source\rtl\mouseapi.c
|
||||
source\rtl\mousexxx.c
|
||||
source\rtl\msgxxx.c
|
||||
@@ -87,39 +88,3 @@ source\rtl\wait.prg
|
||||
source\rtl\word.c
|
||||
source\rtl\xhelp.c
|
||||
source\rtl\xsavescr.prg
|
||||
source\tools\asciisum.c
|
||||
source\tools\ascpos.c
|
||||
source\tools\atdiff.c
|
||||
source\tools\chareven.c
|
||||
source\tools\charmix.c
|
||||
source\tools\charodd.c
|
||||
source\tools\chrcount.c
|
||||
source\tools\chrfirst.c
|
||||
source\tools\chrtotal.c
|
||||
source\tools\ctchksum.c
|
||||
source\tools\ctchrmix.c
|
||||
source\tools\ctcrypt.c
|
||||
source\tools\dates2.c
|
||||
source\tools\datesx.c
|
||||
source\tools\fileread.prg
|
||||
source\tools\hb_f.c
|
||||
source\tools\html.prg
|
||||
source\tools\io.c
|
||||
source\tools\mathx.c
|
||||
source\tools\nconvert.prg
|
||||
source\tools\numtxten.prg
|
||||
source\tools\numtxthu.prg
|
||||
source\tools\rtf.prg
|
||||
source\tools\ng.prg
|
||||
source\tools\strasint.c
|
||||
source\tools\strcount.c
|
||||
source\tools\strcspn.c
|
||||
source\tools\strdiff.c
|
||||
source\tools\strexpan.c
|
||||
source\tools\strfmt.c
|
||||
source\tools\stringp.prg
|
||||
source\tools\stringsx.c
|
||||
source\tools\strleft.c
|
||||
source\tools\strpbrk.c
|
||||
source\tools\strright.c
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -786,6 +786,47 @@ static void hb_arrayNewRagged( PHB_ITEM pArray, int iDimension )
|
||||
hb_arrayNewRagged( hb_arrayGetItemPtr( pArray, ulElements-- ), iDimension );
|
||||
}
|
||||
}
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* ARRAY()
|
||||
* $CATEGORY$
|
||||
* ARRAY
|
||||
* $ONELINER$
|
||||
* Create an uninitialized array of specified length
|
||||
* $SYNTAX$
|
||||
* ARRAY(<nElements> [, <nElements>...]) --> aArray
|
||||
* $ARGUMENTS$
|
||||
* <nElements> is the number of elements in the specified dimension.
|
||||
* $RETURNS$
|
||||
* ARRAY() returns an array of specified dimensions.
|
||||
* $DESCRIPTION$
|
||||
* This function returns an uninitialized array with the lenght of
|
||||
* <nElements>.Nested arrays are uninitialized whitin the same array
|
||||
* pointer reference if additional parameters are specified.
|
||||
* Establishing a memory variable with the same name as the array
|
||||
* may destroy the original array and release the entire contents of
|
||||
* the array.This is,of course, on the data storage type of either array
|
||||
* or the variable with the same name as the array.
|
||||
* $EXAMPLES$
|
||||
* FUNCTION Main()
|
||||
* LOCAL aArray:=Array(10)
|
||||
* LOCAL x:=1
|
||||
* FOR x:=1 to LEN(aArray)
|
||||
* aArray[x]:=Array(x)
|
||||
* NEXT
|
||||
* Return Nil
|
||||
* $STATUS$
|
||||
* R
|
||||
* $SEEALSO$
|
||||
* AADD(),ADEL(),AFILL(),AINS()
|
||||
* $COMPLIANCE$
|
||||
* This Function is CA-CLIPPER Compilance in all Cases, except
|
||||
* that arrays in Harbour can have an unlimited number of dimensions,
|
||||
* while Clipper has a limmit of 4096 array elements.
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
*/
|
||||
|
||||
HARBOUR HB_ARRAY( void )
|
||||
{
|
||||
@@ -816,6 +857,42 @@ HARBOUR HB_ARRAY( void )
|
||||
hb_arrayNewRagged( &hb_stack.Return, 1 );
|
||||
}
|
||||
}
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* AADD()
|
||||
* $CATEGORY$
|
||||
* ARRAY
|
||||
* $ONELINER$
|
||||
* Dinamically adda an element to an array
|
||||
* $SYNTAX$
|
||||
* AADD(<aArray>[, <xValue>]) --> Value
|
||||
* $ARGUMENTS$
|
||||
* <aArray> The name of an array
|
||||
*
|
||||
* <xValue> Element to add to array <aArray>
|
||||
* $RETURNS$
|
||||
* The value of <xValue> if specified,otherwise this function
|
||||
* returns a NIL value.
|
||||
* $DESCRIPTION$
|
||||
* This function dinamically increase the lenght of the array
|
||||
* named <aArray> by one element and stores the value of <xValue>to
|
||||
* that newly created element.
|
||||
* <xValue> may be an array reference pointer, which in turn may be
|
||||
* stored to an array's subscript position.
|
||||
* $EXAMPLES$
|
||||
* LOCAL aArray:={}
|
||||
* AADD(aArray,10)
|
||||
* FOR x:=1 to 10
|
||||
* AADD(aArray,x)
|
||||
* NEXT
|
||||
* $STATUS$
|
||||
* R
|
||||
* $SEEALSO$
|
||||
* AINS(),ASIZE()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
*/
|
||||
|
||||
HARBOUR HB_AADD( void )
|
||||
{
|
||||
@@ -844,6 +921,44 @@ HARBOUR HB_AADD( void )
|
||||
|
||||
/* NOTE: CA-Cl*pper 5.3 and older will return NIL on bad parameter, 5.3a,b
|
||||
will throw a runtime error. [vszel] */
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* ASIZE()
|
||||
* $CATEGORY$
|
||||
* ARRAY
|
||||
* $ONELINER$
|
||||
* Adjust the size of an array
|
||||
* $SYNTAX$
|
||||
* ASIZE(<aArray>, <nLen>) --> aTarget
|
||||
* $ARGUMENTS$
|
||||
* <aArray> Name od array to be dinamically altered
|
||||
*
|
||||
* <nLen> Numeric value representing the new size of <aArray>
|
||||
* $RETURNS$
|
||||
* ASIZE() returns an array pointer reference to <aTarget>.
|
||||
* $DESCRIPTION$
|
||||
* This function will dinamically increase or decrease the size
|
||||
* of <aArray> by ajusting the lenght of the array to <nLen> subscript
|
||||
* positions.
|
||||
* If the lenght of the array <aArray> is shortened,those former
|
||||
* subscripts positions are lost.If the lenght of the array is lenghtened
|
||||
* a NIL data value is assigned to the new subscript position.
|
||||
* $EXAMPLES$
|
||||
* aArray := { 1 } // Result: aArray is { 1 }
|
||||
* ASIZE(aArray, 3) // Result: aArray is { 1, NIL, NIL }
|
||||
* ASIZE(aArray, 1) // Result: aArray is { 1 }
|
||||
* $TESTS$
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* If HB_COMPAT_C53 is defined, the function generates an Error,
|
||||
* else it will return the array itself.
|
||||
* $SEEALSO$
|
||||
* AADD(),ADEL(),AFILL(),AINS()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
*/
|
||||
|
||||
HARBOUR HB_ASIZE( void )
|
||||
{
|
||||
@@ -862,6 +977,36 @@ HARBOUR HB_ASIZE( void )
|
||||
hb_errRT_BASE( EG_ARG, 2023, NULL, "ASIZE" );
|
||||
#endif
|
||||
}
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* ATAIL()
|
||||
* $CATEGORY$
|
||||
* ARRAY
|
||||
* $ONELINER$
|
||||
* Returns the rightmost element of an array
|
||||
* $SYNTAX$
|
||||
* ATAIL(<aArray>) --> Element
|
||||
* $ARGUMENTS$
|
||||
* <aArray> is the array.
|
||||
* $RETURNS$
|
||||
* Atail() return the expression of the last element in the array.
|
||||
* $DESCRIPTION$
|
||||
* This function return the value of the last element in the array named
|
||||
* <aArray>.This function does not alter the size of the array or any of
|
||||
* the subscript values.
|
||||
* $EXAMPLES$
|
||||
* LOCAL array:= {"Harbour", "is", "Supreme", "Power"}
|
||||
* ? ATAIL(aArray)
|
||||
* $TESTS$
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* $SEEALSO$
|
||||
* LEN(),ARRAY(),ASIZE(),AADD()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
*/
|
||||
|
||||
HARBOUR HB_ATAIL( void )
|
||||
{
|
||||
@@ -870,6 +1015,43 @@ HARBOUR HB_ATAIL( void )
|
||||
if( pArray )
|
||||
hb_arrayLast( pArray, &hb_stack.Return );
|
||||
}
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* AINS()
|
||||
* $CATEGORY$
|
||||
* ARRAY
|
||||
* $ONELINER$
|
||||
* Insert a NIL valueat an array subscript position.
|
||||
* $SYNTAX$
|
||||
* AINS(<aArray>, <nPos>) --> aTarget
|
||||
* $ARGUMENTS$
|
||||
* <aArray> Array name.
|
||||
*
|
||||
* <nPos> Subscript position in <aArray>
|
||||
* $RETURNS$
|
||||
* AINS() returns a array pointer reference to <aTarget>.
|
||||
* $DESCRIPTION$
|
||||
* This function inserts a NIL value in the array named <aArray>
|
||||
* at the <nPos>th position.
|
||||
* All array elements starting with the <nPos>th position will be
|
||||
* shifted down one subscript position in the array list and the last
|
||||
* item in the array will be removed completly.In other words,if an array
|
||||
* element were to be inserted at the fifth subscript position, the element
|
||||
* previosly in the fifth position would now be located at sixth position.
|
||||
* The lenght of the array <aArray> will remain unchanged
|
||||
* $EXAMPLES$
|
||||
* LOCAL aArray:={"Harbour","is","Power!","!!!"}
|
||||
* AINS(aArray,4)
|
||||
* $TESTS$
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* $SEEALSO$
|
||||
* AADD(),ACOPY(),ADEL(),AEVAL(),AFILL(),ASIZE()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
*/
|
||||
|
||||
HARBOUR HB_AINS( void )
|
||||
{
|
||||
@@ -883,6 +1065,44 @@ HARBOUR HB_AINS( void )
|
||||
hb_itemReturn( pArray ); /* AIns() returns the array itself */
|
||||
}
|
||||
}
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* ADEL()
|
||||
* $CATEGORY$
|
||||
* ARRAY
|
||||
* $ONELINER$
|
||||
* Delete an element form an array.
|
||||
* $SYNTAX$
|
||||
* ADEL(<aArray>, <nPos>) --> aTarget
|
||||
* $ARGUMENTS$
|
||||
* <aArray> Name of array from which an element is to be removed.
|
||||
*
|
||||
* <nPos> Subcript of the element to be removed.
|
||||
* $RETURNS$
|
||||
* ADEL() Returns an array pointer reference to <aTarget>.
|
||||
* $DESCRIPTION$
|
||||
* This function deletes the element found at <nPos> subscript
|
||||
* position in the array <aArray>.All arrays elements in the array
|
||||
* <aArray> below the given subscript position <nPos> will move up
|
||||
* one position in the array.In other words,what was formerly the
|
||||
* sixth subscript position will become the fifth subscript position.
|
||||
* The lenght of the array <aArray> will remain unchanged,as the last
|
||||
* element array become a NIL data type.
|
||||
* $EXAMPLES$
|
||||
* LOCAL aArray
|
||||
* aArray := { "Harbour","is","Power" } // Result: aArray is
|
||||
*
|
||||
* ADEL(aArray, 2) // Result: aArray is
|
||||
* $TESTS$
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* $SEEALSO$
|
||||
* ACOPY(),AINS(),AFILL()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
*/
|
||||
|
||||
HARBOUR HB_ADEL( void )
|
||||
{
|
||||
@@ -896,6 +1116,51 @@ HARBOUR HB_ADEL( void )
|
||||
hb_itemReturn( pArray ); /* ADel() returns the array itself */
|
||||
}
|
||||
}
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* AFILL()
|
||||
* $CATEGORY$
|
||||
* ARRAY
|
||||
* $ONELINER$
|
||||
* Fill an array with a specified value
|
||||
* $SYNTAX$
|
||||
* AFILL(<aArray>, <xValue>,
|
||||
* [<nStart>], [<nCount>]) --> aTarget
|
||||
* $ARGUMENTS$
|
||||
* <aArray> Name of array to be filled.
|
||||
*
|
||||
* <xValue> Expression to be globally filled in <aArray>
|
||||
*
|
||||
* <nStart> Subscript starting position
|
||||
*
|
||||
* <nCount> Number of subscript to be filled
|
||||
* $RETURNS$
|
||||
* AFILL() returns an array pointer to <aTarget>.
|
||||
* $DESCRIPTION$
|
||||
* This function fill each element of a array named <aArray> with
|
||||
* the value <xValue>.If specified,<nStart> denotes the beginning
|
||||
* element to be filled and the array elements will continue to be
|
||||
* filled for <nCount> positions. If Not specified, the value of
|
||||
* <nStart> will be 1, and the value of <nCount> will be the value
|
||||
* of LEN(<aArray>);thus,all subscript positions in the array <aArray>
|
||||
* will be filled with the value of <xValue>.
|
||||
* This function will work on only a single dimension of <aArray>.
|
||||
* If there are array pointer references within a subscript <aArray>,
|
||||
* those value will be lost, since this function will overwrite those
|
||||
* values with new values.
|
||||
* $EXAMPLES$
|
||||
* LOCAL aTest:={Nil,0,1,2}
|
||||
* Afill(aTest,5)
|
||||
* $TESTS$
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* $SEEALSO$
|
||||
* AADD(),AEVAL(),DBSTRUCT(),DIRECTORY()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
*/
|
||||
|
||||
HARBOUR HB_AFILL( void )
|
||||
{
|
||||
@@ -919,6 +1184,60 @@ HARBOUR HB_AFILL( void )
|
||||
hb_itemReturn( pArray ); /* AFill() returns the array itself */
|
||||
}
|
||||
}
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* ASCAN()
|
||||
* $CATEGORY$
|
||||
* ARRAY
|
||||
* $ONELINER$
|
||||
* Scan array elements for a specified condition
|
||||
* $SYNTAX$
|
||||
* ASCAN(<aTarget>, <xSearch>,
|
||||
* [<nStart>], [<nCount>]) --> nStoppedAt
|
||||
* $ARGUMENTS$
|
||||
* <aTarget> Name of array to be scaned.
|
||||
*
|
||||
* <xSearch> Expression to search for withing <aTarget>
|
||||
*
|
||||
* <nStart> Beggining subscript position at witch to start the
|
||||
* search.
|
||||
*
|
||||
* <nCount> Number of elements to scan with <aTarget>.
|
||||
* position. If this argument is not specified, all elements from the
|
||||
* $RETURNS$
|
||||
* <nStoppedAt> A numeric value of subscript position where <xSearch>
|
||||
* was found.
|
||||
* $DESCRIPTION$
|
||||
* This function scan the content of array named <aTarget> for the
|
||||
* value of <xSearch>. The return value is the position in the
|
||||
* array <aTarget> in which <xSearch> was found. If it was not
|
||||
* found, the return value will be 0.
|
||||
* If specified, the beginnig subscript position at which to start
|
||||
* scanning may be set with the value passed as <nStart>. The default
|
||||
* is 1.
|
||||
* If specified, the number of array elements to scan may be set with
|
||||
* the value passed as <nCount>. The default is the number of elements
|
||||
* in the array <aTarget>.
|
||||
* If <xSearch> is a code block, the operation of the function is slighty
|
||||
* different.Each array subscript pointer reference is passed to the
|
||||
* code block to be evaluated.The scanning routine will continue until the
|
||||
* value obtainded from the code block is a logical true (.T.) or until
|
||||
* the end of the array has been reached.
|
||||
* $EXAMPLES$
|
||||
* aDir:=Directory("*.prg")
|
||||
* AScan(aDir,,,{|x,y| x[1]="Test.prg"})
|
||||
* $TESTS$
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* This function is not CA-Clipper compatible. Clipper ASCAN() is
|
||||
* affected by the SET EXACT ON/OFF Condition
|
||||
* $SEEALSO$
|
||||
* ACOMP(),AEVAL()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
*/
|
||||
|
||||
HARBOUR HB_ASCAN( void )
|
||||
{
|
||||
@@ -938,57 +1257,50 @@ HARBOUR HB_ASCAN( void )
|
||||
else
|
||||
hb_retnl( 0 );
|
||||
}
|
||||
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* AEVAL()
|
||||
* AEVAL()
|
||||
* $CATEGORY$
|
||||
* ARRAY
|
||||
* ARRAY
|
||||
* $ONELINER$
|
||||
* Evaluated the subscript element of an array
|
||||
* Evaluated the subscript element of an array
|
||||
* $SYNTAX$
|
||||
* AEVAL(<aArray>, <bBlock>,
|
||||
* AEVAL(<aArray>, <bBlock>,
|
||||
* [<nStart>], [<nCount>]) --> aArray
|
||||
*
|
||||
* $ARGUMENTS$
|
||||
* <aArray> Is the array to be evaluated.
|
||||
* <aArray> Is the array to be evaluated.
|
||||
*
|
||||
* <bBlock> Is a code block to evaluate for each element processed.
|
||||
* <bBlock> Is a code block to evaluate for each element processed.
|
||||
*
|
||||
* <nStart> The beggining array element to evaluate.
|
||||
*
|
||||
* <nCount> The number of elements to process.
|
||||
* <nStart> The beggining array element to evaluate.
|
||||
*
|
||||
* <nCount> The number of elements to process.
|
||||
* $RETURNS$
|
||||
* AEVAL() returns an array pointer reference.
|
||||
*
|
||||
* AEVAL() returns an array pointer reference.
|
||||
* $DESCRIPTION$
|
||||
* This function will evaluate and process the subscript elements
|
||||
* in <aArray>. A code block passed as <bBlock> defines the
|
||||
* operation to be executed on each element of the array. All
|
||||
* elements in <aArray> will be evaluated unless specified by a
|
||||
* beggining subscript position in <nStart> for <nCount> elements.
|
||||
* This function will evaluate and process the subscript elements
|
||||
* in <aArray>. A code block passed as <bBlock> defines the
|
||||
* operation to be executed on each element of the array. All
|
||||
* elements in <aArray> will be evaluated unless specified by a
|
||||
* beggining subscript position in <nStart> for <nCount> elements.
|
||||
*
|
||||
* Two parameters are passed to the code block <bBlock>. The
|
||||
* individual elements in an array are the first parameter and the
|
||||
* subscript position is the second.
|
||||
* Two parameters are passed to the code block <bBlock>. The
|
||||
* individual elements in an array are the first parameter and the
|
||||
* subscript position is the second.
|
||||
*
|
||||
* AEVAL() does not replace a FOR...NEXT loop for processing arrays.
|
||||
* If a array is an autonomous unit,AEVAL() is appropriate.If the
|
||||
* array is to be altered or if elements are to be reevalueted, a
|
||||
* FOR...NEXT loop is more appropriate.
|
||||
* AEVAL() does not replace a FOR...NEXT loop for processing arrays.
|
||||
* If a array is an autonomous unit,AEVAL() is appropriate.If the
|
||||
* array is to be altered or if elements are to be reevalueted, a
|
||||
* FOR...NEXT loop is more appropriate.
|
||||
* $EXAMPLES$
|
||||
*
|
||||
* $TESTS$
|
||||
*
|
||||
* $STATUS$
|
||||
* R
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
*
|
||||
* $SEEALSO$
|
||||
* EVAL(),DBEVAL()
|
||||
* EVAL(),DBEVAL()
|
||||
* $INCLUDE$
|
||||
*
|
||||
*
|
||||
* $END$
|
||||
*/
|
||||
|
||||
@@ -1012,63 +1324,62 @@ HARBOUR HB_AEVAL( void )
|
||||
else
|
||||
hb_errRT_BASE( EG_ARG, 2017, NULL, "AEVAL" );
|
||||
}
|
||||
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* ACOPY()
|
||||
* ACOPY()
|
||||
* $CATEGORY$
|
||||
* ARRAY
|
||||
* ARRAY
|
||||
* $ONELINER$
|
||||
* Copy elements from one array to another
|
||||
* Copy elements from one array to another
|
||||
* $SYNTAX$
|
||||
* ACOPY(<aSource>, <aTarget>,
|
||||
* ACOPY(<aSource>, <aTarget>,
|
||||
* [<nStart>], [<nCount>], [<nTargetPos>]) --> aTarget
|
||||
*
|
||||
* $ARGUMENTS$
|
||||
* <aSource> is the array to copy elements from.
|
||||
* <aSource> is the array to copy elements from.
|
||||
*
|
||||
* <aTarget> is the array to copy elements to.
|
||||
* <aTarget> is the array to copy elements to.
|
||||
*
|
||||
* <nStart> is the beggining subscript position to copy from <aSource>
|
||||
* <nStart> is the beggining subscript position to copy from <aSource>
|
||||
*
|
||||
* <nCount> the number of subscript elements to copy from <aSource>
|
||||
*
|
||||
* <nTargetPos> the starting subscript position in <aTarget> to copy
|
||||
* elements to
|
||||
* <nCount> the number of subscript elements to copy from <aSource>.
|
||||
*
|
||||
* <nTargetPos> the starting subscript position in <aTarget> to copy
|
||||
* elements to.
|
||||
* $RETURNS$
|
||||
* ACOPY() returns an array pointer reference
|
||||
* ACOPY() returns an array pointer reference
|
||||
* $DESCRIPTION$
|
||||
* This function copies array elements from <aSource> to <aTarget>.
|
||||
* <nStart> is the beggining element to be copied from <aSource>;the
|
||||
* default is 1.
|
||||
* <nCount> is the number of element to be copied from <aSource>;the
|
||||
* default is the entire array.
|
||||
* <nTargetPos> is the subscript number in the target array,<aTarget>,
|
||||
* to witch array elements are to be copied;the default is 1
|
||||
* This function will copy all data types in <aSource> to <aTarget>.
|
||||
* If an array element in <aSource> is a pointer reference to another
|
||||
* array, that array pointer will be copied to <aTarget>; not all
|
||||
* subdimensions will be copied from one array to the next. This must
|
||||
* be accomplished via the ACLONE() function.
|
||||
* This function copies array elements from <aSource> to <aTarget>.
|
||||
* <nStart> is the beggining element to be copied from <aSource>;the
|
||||
* default is 1.
|
||||
* <nCount> is the number of element to be copied from <aSource>;the
|
||||
* default is the entire array.
|
||||
* <nTargetPos> is the subscript number in the target array,<aTarget>,
|
||||
* to witch array elements are to be copied;the default is 1
|
||||
* This function will copy all data types in <aSource> to <aTarget>.
|
||||
* If an array element in <aSource> is a pointer reference to another
|
||||
* array, that array pointer will be copied to <aTarget>; not all
|
||||
* subdimensions will be copied from one array to the next. This must
|
||||
* be accomplished via the ACLONE() function.
|
||||
*
|
||||
* ^b note
|
||||
* If array <aSource> is larger then <aTarget>, array elements will
|
||||
* start copying at <nTargetPos> and continue copying until the end of
|
||||
* array <aTarget> is reached. The ACOPY() function doesn't append
|
||||
* subscript positions to the target array, the size of the target
|
||||
* array <aTarget> remains constant.
|
||||
* Note
|
||||
* If array <aSource> is larger then <aTarget>, array elements will
|
||||
* start copying at <nTargetPos> and continue copying until the end of
|
||||
* array <aTarget> is reached. The ACOPY() function doesn't append
|
||||
* subscript positions to the target array, the size of the target
|
||||
* array <aTarget> remains constant.
|
||||
* $EXAMPLES$
|
||||
* LOCAL nCount := 2, nStart := 1, aOne, aTwo
|
||||
* aOne := {"HABOUR"," is ","POWER"}
|
||||
* aTwo := {"CLIPPER"," was ","POWER"}
|
||||
* ACOPY(aOne, aTwo, nStart, nCount)
|
||||
* $TESTS$
|
||||
*
|
||||
* $STATUS$
|
||||
* R
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
*
|
||||
* $SEEALSO$
|
||||
* ACLONE(),ADEL(),AEVAL(),AFILL(),AINS(),ASORT()
|
||||
* ACLONE(),ADEL(),AEVAL(),AFILL(),AINS(),ASORT()
|
||||
* $INCLUDE$
|
||||
*
|
||||
*
|
||||
* $END$
|
||||
*/
|
||||
|
||||
@@ -1097,37 +1408,45 @@ HARBOUR HB_ACOPY( void )
|
||||
}
|
||||
}
|
||||
|
||||
/* NOTE: Clipper will return NIL if the parameter is not an array. [vszel] */
|
||||
/* NOTE: [vszel] */
|
||||
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* ACLONE()
|
||||
* ACLONE()
|
||||
* $CATEGORY$
|
||||
* ARRAY
|
||||
* ARRAY
|
||||
* $ONELINER$
|
||||
* Duplicate a multidimensional array
|
||||
* Duplicate a multidimensional array
|
||||
* $SYNTAX$
|
||||
* ACLONE(<aSource>) --> aDuplicate
|
||||
* ACLONE(<aSource>) --> aDuplicate
|
||||
* $ARGUMENTS$
|
||||
* <aSource> Name of the array to be cloned.
|
||||
* <aSource> Name of the array to be cloned.
|
||||
* $RETURNS$
|
||||
* ACLONE() A new array pointer reference complete with nested array
|
||||
* values.
|
||||
* ACLONE() A new array pointer reference complete with nested array
|
||||
* values.
|
||||
* $DESCRIPTION$
|
||||
* This function makes a complete copy of the array expressed as
|
||||
* <aSource> and return a cloned set of array values.This provides
|
||||
* a complete
|
||||
* This function makes a complete copy of the array expressed as
|
||||
* <aSource> and return a cloned set of array values.This provides
|
||||
* a complete
|
||||
* $EXAMPLES$
|
||||
* This example creates an array then duplicates it using
|
||||
* ACLONE(). The first array is then altered, but the duplicate copy is
|
||||
* unaffected:
|
||||
*
|
||||
* LOCAL aOne, aTwo
|
||||
* aOne := {"Harbour"," is ","POWER"}
|
||||
* aTwo := ACLONE(aOne) // Result: aTwo is {1, 2, 3}
|
||||
* aOne[1] := "The Harbour Compiler" // Result: aOne is {99, 2, 3}
|
||||
* // aTwo is still {1, 2, 3}
|
||||
* $TESTS$
|
||||
*
|
||||
* $STATUS$
|
||||
* R
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* NOTE: Clipper will return NIL if the parameter is not an array.
|
||||
* Clipper will return NIL if the parameter is not an array.
|
||||
* $SEEALSO$
|
||||
* ACOPY(),ADEL(),AINS(),ASIZE()
|
||||
* ACOPY(),ADEL(),AINS(),ASIZE()
|
||||
* $INCLUDE$
|
||||
*
|
||||
*
|
||||
* $END$
|
||||
*/
|
||||
|
||||
@@ -1142,3 +1461,4 @@ HARBOUR HB_ACLONE( void )
|
||||
hb_itemRelease( pDstArray );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -184,7 +184,7 @@ return __objHasMsg( oObject, cSymbol ) .and. ;
|
||||
* $PLATFORMS$
|
||||
* $FILES$
|
||||
* $SEEALSO$
|
||||
* __ObjGetMethodList(),__ObjGetValueList,__objHasData(),__objHasMethod()
|
||||
* __ObjGetMethodList(),__ObjGetValueList(),__objHasData(),__objHasMethod()
|
||||
* $END$
|
||||
*/
|
||||
|
||||
@@ -569,7 +569,7 @@ return oObject
|
||||
* $PLATFORMS$
|
||||
* $FILES$
|
||||
* $SEEALSO$
|
||||
* __objAddInline(),__objAddMethod(),__objDelData(),__objGetMsgList(),__ObjGetValueList(),__objHasData() ,__ObjSetValueList()
|
||||
* __objAddInline(),__objAddMethod(),__objDelData(),__objGetMsgList(),__ObjGetValueList(),__objHasData(),__ObjSetValueList()
|
||||
* $END$
|
||||
*/
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
* $COMPLIANCE$
|
||||
* This is a new Harbour Tools class
|
||||
* $SEEALSO$
|
||||
* TClass
|
||||
* TClass()
|
||||
* $END$
|
||||
*/
|
||||
|
||||
|
||||
@@ -36,26 +36,22 @@
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* ISBIN()
|
||||
*
|
||||
* $CATEGORY$
|
||||
* Conversion
|
||||
* $ONELINER$
|
||||
* Check if the value is a Binary Number
|
||||
* $SYNTAX$
|
||||
* ISBIN(<CN>) -><CNR>
|
||||
*
|
||||
* $ARGUMENTS$
|
||||
* <CN> STRING TO BE CHECKED
|
||||
* $RETURNS$
|
||||
*
|
||||
* ^b .T.^b IF THE STRING IS BYNARY
|
||||
* ^b .F.^b^ IF NOT
|
||||
* .T. IF THE STRING IS BYNARY
|
||||
* .F. IF NOT
|
||||
* $DESCRIPTION$
|
||||
* ^b check if the passed string is a bynary number or not
|
||||
* check if the passed string is a bynary number or not
|
||||
* $EXAMPLES$
|
||||
*
|
||||
* $SEEALSO$
|
||||
* ISOCTAL(), ISDEC(), ISHEXA()
|
||||
* ISOCTAL(),ISDEC(),ISHEXA()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
@@ -75,27 +71,22 @@ FUNCTION IsBin(cString)
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* ISOCTAL()
|
||||
*
|
||||
* $CATEGORY$
|
||||
* Conversion
|
||||
* $ONELINER$
|
||||
* Check if the value is a Octal Number
|
||||
* $SYNTAX$
|
||||
* ISOCTAL(<CN>) -><CNR>
|
||||
*
|
||||
* $ARGUMENTS$
|
||||
* <CN> STRING TO BE CHECKED
|
||||
* $RETURNS$
|
||||
*
|
||||
* ^b .T.^b IF THE STRING IS OCTAL
|
||||
* ^b .F.^b^ IF NOT
|
||||
*
|
||||
* .T. IF THE STRING IS OCTAL
|
||||
* .F. IF NOT
|
||||
* $DESCRIPTION$
|
||||
* ^b check if the passed string is a octal number or not
|
||||
* check if the passed string is a octal number or not
|
||||
* $EXAMPLES$
|
||||
*
|
||||
* $SEEALSO$
|
||||
* ISBIN(), ISDEC(), ISHEXA()
|
||||
* ISBIN(),ISDEC(),ISHEXA()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
@@ -115,25 +106,22 @@ FUNCTION IsOctal(cString)
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* ISDEC()
|
||||
*
|
||||
* $CATEGORY$
|
||||
* Conversion
|
||||
* $ONELINER$
|
||||
* Check if the value is a Decimal Number
|
||||
* $SYNTAX$
|
||||
* ISDEC(<CN>) -><CNR>
|
||||
*
|
||||
* $ARGUMENTS$
|
||||
* <CN> STRING TO BE CHECKED
|
||||
* $RETURNS$
|
||||
* ^b .T.^b IF THE STRING IS DECIMAL
|
||||
* ^b .F.^b^ IF NOT
|
||||
* .T. IF THE STRING IS DECIMAL
|
||||
* .F. IF NOT
|
||||
* $DESCRIPTION$
|
||||
* ^b check if the passed string is a decimal number or not
|
||||
* check if the passed string is a decimal number or not
|
||||
* $EXAMPLES$
|
||||
*
|
||||
* $SEEALSO$
|
||||
* ISOCTAL(), ISBIN(), ISHEXA()
|
||||
* ISOCTAL(),ISBIN(),ISHEXA()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
@@ -153,25 +141,22 @@ FUNCTION IsDec(cString)
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* ISHEXA()
|
||||
*
|
||||
* $CATEGORY$
|
||||
* Conversion
|
||||
* $ONELINER$
|
||||
* Check if the value is a Hexal Number
|
||||
* $SYNTAX$
|
||||
* ISHEXA(<CN>) -><CNR>
|
||||
*
|
||||
* $ARGUMENTS$
|
||||
* <CN> STRING TO BE CHECKED
|
||||
* $RETURNS$
|
||||
* ^b .T.^b IF THE STRING IS HEXA
|
||||
* ^b .F.^b^ IF NOT
|
||||
* .T. IF THE STRING IS HEXA
|
||||
* .F. IF NOT
|
||||
* $DESCRIPTION$
|
||||
* ^b check if the passed string is a hexa number or not
|
||||
* check if the passed string is a hexa number or not
|
||||
* $EXAMPLES$
|
||||
*
|
||||
* $SEEALSO$
|
||||
* ISOCTAL(), ISDEC(), ISBIN()
|
||||
* ISOCTAL(),ISDEC(),ISBIN()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
@@ -191,24 +176,23 @@ FUNCTION IsHexa(cString)
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* DECTOBIN()
|
||||
*
|
||||
* $CATEGORY$
|
||||
* Conversion
|
||||
* $ONELINER$
|
||||
* Converts a Decimal Value to Binary
|
||||
* $SYNTAX$
|
||||
* DECTOBIN(<CN>) -><CNR>
|
||||
*
|
||||
* $ARGUMENTS$
|
||||
* <CN> NUMBER TO BE CONVERTED
|
||||
* $RETURNS$
|
||||
* <CNR> NUMBER CONVERTED
|
||||
* $DESCRIPTION$
|
||||
*
|
||||
* This function converts a string <CN> from an decimal value
|
||||
* to an binary value.
|
||||
* $EXAMPLES$
|
||||
*
|
||||
* $SEEALSO$
|
||||
*
|
||||
* Dectohexa(),dectooctal()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
@@ -227,24 +211,23 @@ FUNCTION DecToBin(nNumber)
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* DECTOOCTAL()
|
||||
*
|
||||
* $CATEGORY$
|
||||
* Conversion
|
||||
* $ONELINER$
|
||||
* Converts a Decimal Value to Octal
|
||||
* $SYNTAX$
|
||||
* DECTOOCTAL(<CN>) -><CNR>
|
||||
*
|
||||
* $ARGUMENTS$
|
||||
* <CN> NUMBER TO BE CONVERTED
|
||||
* $RETURNS$
|
||||
* <CNR> NUMBER CONVERTED
|
||||
* $DESCRIPTION$
|
||||
*
|
||||
* This function converts a string <CN> from an decimal value
|
||||
* to an octal value.
|
||||
* $EXAMPLES$
|
||||
*
|
||||
* $SEEALSO$
|
||||
*
|
||||
* Dectohexa(),dectobin()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
@@ -263,24 +246,23 @@ FUNCTION DecToOctal(nNumber)
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* DECTOHEXA()
|
||||
*
|
||||
* $CATEGORY$
|
||||
* Conversion
|
||||
* $ONELINER$
|
||||
* Converts a Decimal Value to Hexa
|
||||
* $SYNTAX$
|
||||
* DECTOHEXA(<CN>) -><CNR>
|
||||
*
|
||||
* $ARGUMENTS$
|
||||
* <CN> NUMBER TO BE CONVERTED
|
||||
* $RETURNS$
|
||||
* <CNR> NUMBER CONVERTED
|
||||
* $DESCRIPTION$
|
||||
*
|
||||
* This function converts a string <CN> from an decimal value
|
||||
* to an hexadecimal value.
|
||||
* $EXAMPLES$
|
||||
*
|
||||
* $SEEALSO$
|
||||
*
|
||||
* Dectobin(),dectoctal()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
@@ -299,24 +281,23 @@ FUNCTION DecToHexa(nNumber)
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* BIntODEC()
|
||||
*
|
||||
* $CATEGORY$
|
||||
* Conversion
|
||||
* $ONELINER$
|
||||
* Converts a Binary Value to Decimal
|
||||
* $SYNTAX$
|
||||
* BIntODEC(<CN>) -><CNR>
|
||||
*
|
||||
* $ARGUMENTS$
|
||||
* <CN> NUMBER TO BE CONVERTED
|
||||
* $RETURNS$
|
||||
* <CNR> NUMBER CONVERTED
|
||||
* $DESCRIPTION$
|
||||
*
|
||||
* This function converts a string <CN> from an binary value
|
||||
* to a numeric decimal value.
|
||||
* $EXAMPLES$
|
||||
*
|
||||
* $SEEALSO$
|
||||
*
|
||||
* OctaltoDec(),HexatoDec()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
@@ -335,24 +316,23 @@ FUNCTION BinToDec(cString)
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* OCTALTODEC()
|
||||
*
|
||||
* $CATEGORY$
|
||||
* Conversion
|
||||
* $ONELINER$
|
||||
* Converts a Octal Value to Decimal
|
||||
* $SYNTAX$
|
||||
* OCTALTODEC(<CN>) -><CNR>
|
||||
*
|
||||
* $ARGUMENTS$
|
||||
* <CN> NUMBER TO BE CONVERTED
|
||||
* $RETURNS$
|
||||
* <CNR> NUMBER CONVERTED
|
||||
* $DESCRIPTION$
|
||||
*
|
||||
* This function converts a string <CN> from an octal value
|
||||
* to a numeric decimal value.
|
||||
* $EXAMPLES$
|
||||
*
|
||||
* $SEEALSO$
|
||||
*
|
||||
* BintoDec(),HexatoDec()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
@@ -371,29 +351,29 @@ FUNCTION OctalToDec(cString)
|
||||
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* HEXATODEC()
|
||||
* HEXATODEC()
|
||||
* $CATEGORY$
|
||||
* Conversion
|
||||
* $ONELINER$
|
||||
* Converts a Hexa Value to Decimal
|
||||
* Converts a Hexa Value to Decimal
|
||||
* $SYNTAX$
|
||||
* HEXATODEC(<CN>) -><CNR>
|
||||
*
|
||||
* HEXATODEC(<CN>) -><CNR>
|
||||
* $ARGUMENTS$
|
||||
* <CN> NUMBER TO BE CONVERTED
|
||||
* <CN> NUMBER TO BE CONVERTED
|
||||
* $RETURNS$
|
||||
* <CNR> NUMBER CONVERTED
|
||||
* <CNR> NUMBER CONVERTED
|
||||
* $DESCRIPTION$
|
||||
*
|
||||
* This function converts a string <CN> from an hexadecimal value
|
||||
* to a numeric decimal value.
|
||||
* $EXAMPLES$
|
||||
*
|
||||
* $SEEALSO$
|
||||
*
|
||||
* OctaltoDec(),BintoDec()
|
||||
* $INCLUDE$
|
||||
*
|
||||
* $END$
|
||||
*/
|
||||
|
||||
|
||||
FUNCTION HexaToDec(cString)
|
||||
local nNumber:=0,nX:=0
|
||||
local cNewString:=AllTrim(cString)
|
||||
@@ -404,4 +384,4 @@ FUNCTION HexaToDec(cString)
|
||||
NEXT nX
|
||||
RETURN nNumber
|
||||
|
||||
* EOF: NCONVERT.PRG
|
||||
|
||||
|
||||
@@ -66,14 +66,14 @@ RETURN Self
|
||||
|
||||
METHOD WritePar( cPar ) CLASS TNortonGuide
|
||||
|
||||
FWRITE( Self:nHandle, ALLTRIM( cPar ) + CRLF )
|
||||
FWRITE( Self:nHandle, HB_OEMTOANSI( cPar ) + CRLF )
|
||||
|
||||
RETURN Self
|
||||
|
||||
METHOD WriteParBold( cPar ) CLASS TNortonGuide
|
||||
|
||||
FWRITE( Self:nHandle, '^b' + ALLTRIM( cPar ) + '^b^' + CRLF )
|
||||
|
||||
Self:WritePar("")
|
||||
FWRITE( Self:nHandle, '^b' + HB_OEMTOANSI( cPar ) + '^b^' + CRLF )
|
||||
Self:WritePar("")
|
||||
RETURN Self
|
||||
|
||||
METHOD WriteTitle( cTopic, cTitle ) CLASS TNortonGuide
|
||||
@@ -82,7 +82,7 @@ METHOD WriteTitle( cTopic, cTitle ) CLASS TNortonGuide
|
||||
LOCAL nPos
|
||||
LOCAL cWrite
|
||||
|
||||
cTopic := ALLTRIM( cTopic )
|
||||
cTopic := HB_OEMTOANSI( cTopic )
|
||||
|
||||
FWRITE( Self:nHandle, "!Short: " + cTopic + CRLF )
|
||||
|
||||
@@ -140,9 +140,7 @@ RETURN Self
|
||||
* oNg:WritePar( "See the Links Above" )
|
||||
* oNg:Close()
|
||||
* RETURN Nil
|
||||
*
|
||||
* $TESTS$
|
||||
*
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
@@ -150,7 +148,6 @@ RETURN Self
|
||||
* $PLATFORMS$
|
||||
* ALL
|
||||
* $FILES$
|
||||
*
|
||||
* $SEEALSO$
|
||||
* TCLASS()
|
||||
* $END$
|
||||
|
||||
@@ -77,7 +77,7 @@ RETURN Self
|
||||
|
||||
METHOD WritePar( cPar ) CLASS TOs2
|
||||
|
||||
FWRITE( Self:nHandle, ".br"+CRLF+Self:DostoOs2Text(ALLTRIM( cPar )) + CRLF )
|
||||
FWRITE( Self:nHandle, ".br"+CRLF+Self:DostoOs2Text( cPar ) + CRLF )
|
||||
|
||||
RETURN Self
|
||||
|
||||
@@ -100,9 +100,6 @@ METHOD WriteTitle( cTopic, cTitle ) CLASS TOs2
|
||||
ELSE // Just in case that nItem>0 so the Link is already referenced
|
||||
nItem:=ASCAN(Self:aLinkRef,{|a| a[1]==cTopic})
|
||||
ENDIF
|
||||
// IF nItem==0
|
||||
// nItem:=Self:nRef
|
||||
// ENDIF
|
||||
|
||||
fWrite(Self:nHandle,':title.'+ALLTRIM(cTitle)+CRLF)
|
||||
|
||||
|
||||
@@ -111,8 +111,9 @@ METHOD WriteHeader() CLASS TRTF
|
||||
RETURN Self
|
||||
|
||||
METHOD WritePar( cPar ) CLASS TRTF
|
||||
|
||||
FWRITE( Self:nHandle, '\pard{\cf1\fs20 ' + ALLTRIM( cPar ) )
|
||||
cPar:=StrTran(cPar,"{","\{")
|
||||
cPar:=StrTran(cPar,"}","\}")
|
||||
FWRITE( Self:nHandle, '\pard{\cf1\fs30 ' + HB_OEMTOANSI(" ")+ HB_OEMTOANSI(cPar ))
|
||||
RETURN Self
|
||||
|
||||
METHOD EndPar() CLASS TRTF
|
||||
@@ -123,8 +124,9 @@ RETURN Self
|
||||
|
||||
METHOD WriteParBold( cPar ) CLASS TRTF
|
||||
|
||||
FWRITE( Self:nHandle, '\pard{\plain\cf1\f2\fs20\i\b\qc ' + ALLTRIM( cPar ) + ' }\par' + CRLF )
|
||||
|
||||
cPar:=StrTran(cPar,"{","\{")
|
||||
cPar:=StrTran(cPar,"}","\}")
|
||||
FWRITE( Self:nHandle, '\pard{\plain\cf1\f2\fs30\i\b\qc ' + ALLTRIM(HB_OEMTOANSI( cPar )) + ' }\par' + CRLF )
|
||||
RETURN Self
|
||||
|
||||
METHOD WriteTitle( cTitle, cTopic ) CLASS TRTF
|
||||
@@ -136,12 +138,13 @@ METHOD WriteTitle( cTitle, cTopic ) CLASS TRTF
|
||||
nPos := AT( "()", cTitle )
|
||||
|
||||
IF nPos > 0
|
||||
cTemp := ALLTRIM( STRTRAN( cTitle, "()", "xx" ) )
|
||||
cTemp := ALLTRIM( HB_OEMTOANSI(STRTRAN( cTitle, "()", "xx" ) ))
|
||||
ELSE
|
||||
cTemp := ALLTRIM( cTitle )
|
||||
cTemp := HB_OEMTOANSI(ALLTRIM( cTitle ))
|
||||
cTemp :=STRTRAN( cTemp,"@", "x" )
|
||||
ENDIF
|
||||
|
||||
cTopic := ALLTRIM( cTopic )
|
||||
cTopic := ALLTRIM( HB_OEMTOANSI(cTopic ))
|
||||
|
||||
cWrite := '{\f2' + CRLF + ;
|
||||
' #{\footnote \pard\plain \fs20 # ' + "IDH_"+cTemp + ' }' + CRLF + ;
|
||||
@@ -151,7 +154,7 @@ METHOD WriteTitle( cTitle, cTopic ) CLASS TRTF
|
||||
|
||||
FWRITE( Self:nHandle, cWrite )
|
||||
|
||||
Self:WritePar( cTopic ):EndPar()
|
||||
Self:WriteParBold( cTopic )
|
||||
|
||||
RETURN Self
|
||||
|
||||
@@ -167,7 +170,7 @@ RETURN Self
|
||||
|
||||
METHOD WriteLink( cLink ) CLASS TRTF
|
||||
|
||||
FWRITE( Self:nHandle, '\pard{\cf1\fs20 {\f2\uldb ' + ALLTRIM( cLink ) + '}{\v\f2 ' + "IDH_"+ALLTRIM( STRTRAN( cLink, "()", "xx" ) ) + '} }\par' + CRLF )
|
||||
FWRITE( Self:nHandle, '\pard{\cf1\fs30 {\f2\uldb ' + ALLTRIM( HB_OEMTOANSI(cLink) ) + '}{\v\f2 ' + "IDH_"+IF(AT( "()",cLink)>0 , ALLTRIM( HB_OEMTOANSI(STRTRAN( cLink, "()", "xx" ) )),ALLTRIM( HB_OEMTOANSI(STRTRAN( cLink, "@", "x" )) )) + '} }\par' + CRLF )
|
||||
|
||||
RETURN Self
|
||||
|
||||
|
||||
@@ -48,7 +48,6 @@ CLASS TTROFF
|
||||
DATA cFile
|
||||
DATA nHandle
|
||||
METHOD New( cFile )
|
||||
|
||||
METHOD WritePar( cPar )
|
||||
METHOD WriteLink( clink )
|
||||
METHOD CLOSE()
|
||||
@@ -138,3 +137,57 @@ METHOD WriteLink( cLink ) CLASS TTROFF
|
||||
RETURN Self
|
||||
|
||||
*+ EOF: TROFF.PRG
|
||||
*+ EOF: RTF.PRG
|
||||
/* $DOC$
|
||||
* $FUNCNAME$
|
||||
* TTroff()
|
||||
* $CATEGORY$
|
||||
* Harbour Tools
|
||||
* $ONELINER$
|
||||
* Troff Class
|
||||
* $SYNTAX$
|
||||
* oTroff:=TTrof():New(<cFile>)
|
||||
* $ARGUMENTS$
|
||||
* <cFile> Name of the RTF file to create
|
||||
* $RETURNS$
|
||||
* An instance of the TTroff Class
|
||||
* $DESCRIPTION$
|
||||
* TRtf() is a class that create the Norton Guide Source
|
||||
* Code of the same name you pass to the constructor.
|
||||
* The class methods are as follows:
|
||||
* New(<cFile>) Create a new instance of the THtml class.
|
||||
* Close() Close the create file
|
||||
* WriteTitle(<cTopic>,<cTitle>) Write the file title
|
||||
* WritePar(<cPar>) Writes a paragrafer
|
||||
* WriteParBold(<cPar>) Same as WritePar(), but the text is bold style.
|
||||
* WriteLink(<cLink>) Write a link to another topic
|
||||
* WriteText() Writes a text with out formating
|
||||
* $EXAMPLES$
|
||||
* FUNCTION MAIN()
|
||||
*
|
||||
* LOCAL oTroff
|
||||
* oTroff := TTroff():New( "tr\harbour.ngi" )
|
||||
* oTroff:WriteTitle( "Harbour Reference Guide" )
|
||||
* oTroff:WritePar( "HARBOUR" )
|
||||
* oTroff:WriteLink( "OverView" )
|
||||
* oTroff:WriteLink( "License" )
|
||||
*
|
||||
* oTroff:WritePar( "See the Links Above" )
|
||||
* oTroff:Close()
|
||||
*
|
||||
* RETURN Nil
|
||||
*
|
||||
* $TESTS$
|
||||
*
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* This is a new Harbour Tools class
|
||||
* $PLATFORMS$
|
||||
* ALL
|
||||
* $FILES$
|
||||
*
|
||||
* $SEEALSO$
|
||||
* TCLASS()
|
||||
* $END$
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user