2008-08-21 18:06 UTC+0200 Viktor Szakats (harbour.01 syenar hu)

* utils/hbdoc/fclass1.prg
   * utils/hbdoc/ffile1.prg
   * utils/hbdoc/ft_funcs.prg
   * utils/hbmake/fclass1.prg
   * utils/hbmake/tmake.prg
   * utils/hbmake/ffile1.prg
   * utils/hbmake/ft_funcs.prg
   * utils/hbmake/pickarry.prg
   * utils/hbmake/pickfile.prg
   * utils/hbmake/hbmutils.prg
   * utils/hbmake/hbmake.prg
     * Cleanups.
     ! Fixed open bug from previous commit (hopefully).

   * common.mak
   * utils/hbmake/Makefile
   * utils/hbmake/bld_b32.bat
   * utils/hbmake/bld_vc.bat
   - utils/hbmake/readline.c
   + utils/hbmake/hbmfrdln.c
   * utils/hbmake/hbmlang.c
   + utils/hbmake/hbmgauge.c
     * readline.c -> hbmfrdln.c
       (made fully identical to /contrib/xhb/freadlin.c)
     * GAUGE*() stuff moved into separate file.
       (separate file is fully identical to /contrib/hbclipsm/gauge.c)
     ! GAUGE*() function copyright restored to original.
This commit is contained in:
Viktor Szakats
2008-08-21 16:20:02 +00:00
parent 8235137004
commit 3510c12d3e
19 changed files with 702 additions and 824 deletions

View File

@@ -8,6 +8,35 @@
2008-12-31 13:59 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
2008-08-21 18:06 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* utils/hbdoc/fclass1.prg
* utils/hbdoc/ffile1.prg
* utils/hbdoc/ft_funcs.prg
* utils/hbmake/fclass1.prg
* utils/hbmake/tmake.prg
* utils/hbmake/ffile1.prg
* utils/hbmake/ft_funcs.prg
* utils/hbmake/pickarry.prg
* utils/hbmake/pickfile.prg
* utils/hbmake/hbmutils.prg
* utils/hbmake/hbmake.prg
* Cleanups.
! Fixed open bug from previous commit (hopefully).
* common.mak
* utils/hbmake/Makefile
* utils/hbmake/bld_b32.bat
* utils/hbmake/bld_vc.bat
- utils/hbmake/readline.c
+ utils/hbmake/hbmfrdln.c
* utils/hbmake/hbmlang.c
+ utils/hbmake/hbmgauge.c
* readline.c -> hbmfrdln.c
(made fully identical to /contrib/xhb/freadlin.c)
* GAUGE*() stuff moved into separate file.
(separate file is fully identical to /contrib/hbclipsm/gauge.c)
! GAUGE*() function copyright restored to original.
2008-08-21 14:11 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbcomp.h
* Minor formatting (alignment).

View File

@@ -1094,8 +1094,9 @@ HBMAKE_EXE_OBJS = \
$(OBJ_DIR)\fclass1$(OBJEXT) \
$(OBJ_DIR)\ffile1$(OBJEXT) \
$(OBJ_DIR)\ft_funcs$(OBJEXT) \
$(OBJ_DIR)\hbmfrdln$(OBJEXT) \
$(OBJ_DIR)\hbmgauge$(OBJEXT) \
$(OBJ_DIR)\hbmlang$(OBJEXT) \
$(OBJ_DIR)\readline$(OBJEXT) \
$(OBJ_DIR)\tmake$(OBJEXT) \
#**********************************************************

View File

@@ -4,7 +4,7 @@
/*
* Harbour Project source code:
* fclass.prg Fileman class for hbdoc
* Fileman class for hbdoc
*
* Copyright 2000 Luiz Rafael Culik <culik@sl.conex.net>
* www - http://www.harbour-project.org
@@ -367,5 +367,7 @@ METHOD openfile( cFile, nMethod ) CLASS FileMan
cPath := STRTRAN( cFile, cFileName, "" )
::addItem( nFileHandle, cFileName, cPath )
ENDIF
::nHan := nFileHandle
RETURN nFileHandle
RETURN nFileHandle

View File

@@ -4,7 +4,7 @@
/*
* Harbour Project source code:
* ffile1.prg Filebase class for hbdoc
* Filebase class for hbdoc
*
* Copyright 2000 Luiz Rafael Culik <culik@sl.conex.net>
* www - http://www.harbour-project.org
@@ -178,7 +178,7 @@ METHOD fgoBottom() CLASS FileBase
RETURN Self
/* Method: close()
/* Method: closefile()
Params: N/A
Returns: Self
Purpose: To close the file
@@ -376,27 +376,6 @@ METHOD goBottom() CLASS FileBase
RETURN Self
/* Method: close()
Params: N/A
Returns: Self
Purpose: To close the file
*/
/* Not declared in class creation, which means the super version is used. */
#ifdef BUG
METHOD FCLOSE() CLASS FileBase
IF Self:noDosError() .AND. Self:nDosHandle > 0
FCLOSE( Self:nDosHandle )
Self:nLastDosMessage := FERROR()
Self:delItem( Self:nDosHandle )
Self:lAtTop := Self:lAtBottom := .F.
Self:nPosition := 0
ENDIF
RETURN Self
#endif
/* Method: write(<cChar>)
Params: <cChar>
Returns: Self
@@ -422,68 +401,6 @@ METHOD WRITE( cChar ) CLASS FileBase
RETURN Self
/* Method: getBuffer( <lDirection> )
Params: <lDirection> Logical toggle for direction
Returns: <nBytes>
Purpose: To return the number of bytes either forward or backward from
the present file pointer position in which the next CRLF char
appears. If <lDirection> is a logical false (.F.) value, them
the operation will go in reverse order; otherwise, it will go
in a forward direction. The default value is a logical true
(.T.) value.
*/
/* Class declaration send message BuffGet to BufferGet. */
#ifdef BUG
METHOD Buffget( lForward ) CLASS FileBase
LOCAL cBuffer // as char
LOCAL nLocation // as int
LOCAL nRead // as int
LOCAL lWithCRLF := .F. // as logical
DEFAULT lForward TO .T.
IF !lForward
nRead := FSEEK( Self:nDosHandle, ;
- ( iif( ::nposition < pBUFFER_LENGTH, ;
::nposition, ;
pBUFFER_LENGTH ) ), ;
1 ) // rewind backwards
cBuffer := SPACE( ::nposition - nRead )
FREAD( Self:nDosHandle, @cBuffer, ( ::nposition - nRead ) )
IF RIGHT( cBuffer, 2 ) == hb_OSNewLine() // with line already
cBuffer := LEFT( cBuffer, LEN( cBuffer ) - 2 )
lWithCRLF := .T.
ENDIF
nLocation := LEN( cBuffer ) - ( RAT( hb_OSNewLine(), cBuffer ) )
ELSE
cBuffer := SPACE( pBUFFER_LENGTH )
nRead := FREAD( Self:nDosHandle, @cBuffer, pBUFFER_LENGTH )
FSEEK( Self:nDosHandle, - ( iif( nRead < pBUFFER_LENGTH, nRead, ;
pBUFFER_LENGTH ) ), 1 ) // Rewind
// Now, parse the string. and file
nLocation := AT( hb_OSNewLine(), cBuffer )
// Now, if there is NO CRLF in the buffer and if the value of the
// number of bytes read is less than the buffer length, then we
// have an end of file condition.
IF nLocation == 0 .AND. ( nRead < pBUFFER_LENGTH )
// If so, then set the appropriate flags accordingly.
::lAtBottom := .T.
::lAtTop := .F.
ENDIF
ENDIF
RETURN nLocation
#endif
/* Method: appendLine( <cLine )
Params: <cLine> Character line to append
Returns: Self
@@ -597,7 +514,7 @@ METHOD GOTO( nValue ) CLASS FileBase
ENDIF
ENDIF
RETURN nCount
RETURN nCount
METHOD BufferGet( lForward ) CLASS FileBase
@@ -645,4 +562,4 @@ METHOD BufferGet( lForward ) CLASS FileBase
ENDIF
ENDIF
RETURN nLocation
RETURN nLocation

View File

@@ -4,7 +4,7 @@
/*
* Harbour Project source code:
* ft_funcs.prg File support Functions For hbdoc
* File support Functions For hbdoc
*
* Copyright 2000 Luiz Rafael Culik <culik@sl.conex.net>
* www - http://www.harbour-project.org
@@ -55,7 +55,7 @@
#include "fileio.ch"
#include "inkey.ch"
STATIC s_TheHandle
STATIC s_oFileBase
/****
* FT_FUSE( cFile, nMode ) ---> nHandle
@@ -63,34 +63,33 @@ STATIC s_TheHandle
*/
FUNCTION FT_FUSE( cFile, nMode )
DEFAULT cFile TO s_TheHandle:closefile()
IF cFile != NIL
s_TheHandle := FileBase():new( cFile )
IF cFile == NIL
s_oFileBase:closefile()
ELSE
s_oFileBase := FileBase():new( cFile )
IF nMode != NIL
s_TheHandle:nOpenMode := nMode
s_oFileBase:nOpenMode := nMode
ENDIF
s_TheHandle:open()
s_oFileBase:open()
ENDIF
RETURN s_TheHandle:nHan
RETURN s_oFileBase:nHan
FUNCTION ft_FEOF()
RETURN s_TheHandle:lAtBottom
FUNCTION FT_FEOF()
RETURN s_oFileBase:lAtBottom
FUNCTION FReadLn()
RETURN s_TheHandle:retrieve()
RETURN s_oFileBase:retrieve()
FUNCTION FT_FReadLn()
RETURN StrTran( FReadLn(), Chr( 13 ), "" )
PROCEDURE FT_FGotop()
s_TheHandle:Gotop()
s_oFileBase:Gotop()
RETURN
PROCEDURE FT_FSKIP( n )
s_TheHandle:Skip( n )
s_oFileBase:Skip( n )
RETURN
PROCEDURE FT_MKDIR( cDir )

View File

@@ -15,14 +15,14 @@ PRG_SOURCES=\
fclass1.prg \
ffile1.prg \
ft_funcs.prg \
radios.prg \
pickarry.prg \
pickfile.prg \
prb_stak.prg \
C_SOURCES=\
hbmfrdln.c \
hbmgauge.c \
hbmlang.c \
readline.c \
PRG_MAIN=hbmake.prg

View File

@@ -25,8 +25,9 @@ echo pickfile.c >> build.tmp
echo prb_stak.c >> build.tmp
echo tmake.c >> build.tmp
echo hbmfrdln.c >> build.tmp
echo hbmgauge.c >> build.tmp
echo hbmlang.c >> build.tmp
echo readline.c >> build.tmp
echo hbdebug.lib >> build.tmp
echo hbvm.lib >> build.tmp

View File

@@ -13,7 +13,7 @@ rem
..\..\bin\harbour /n prb_stak /i..\..\include
..\..\bin\harbour /n tmake /i..\..\include
cl -D_CRT_SECURE_NO_DEPRECATE -nologo -O2 -TP -W3 -I..\..\include hbmake.c fclass1.c ffile1.c ft_funcs.c hbmutils.c pickarry.c pickfile.c prb_stak.c tmake.c hbmlang.c readline.c /link /subsystem:CONSOLE /LIBPATH:..\..\lib hbcpage.lib hbdebug.lib hbvm.lib hbrtl.lib gtwin.lib hblang.lib hbrdd.lib hbmacro.lib hbpp.lib rddntx.lib rddcdx.lib rddfpt.lib hbsix.lib hbcommon.lib hbpcre.lib hbzlib.lib user32.lib winspool.lib
cl -D_CRT_SECURE_NO_DEPRECATE -nologo -O2 -TP -W3 -I..\..\include hbmake.c fclass1.c ffile1.c ft_funcs.c hbmutils.c pickarry.c pickfile.c prb_stak.c tmake.c hbmfrdln.c hbmgauge.c hbmlang.c /link /subsystem:CONSOLE /LIBPATH:..\..\lib hbcpage.lib hbdebug.lib hbvm.lib hbrtl.lib gtwin.lib hblang.lib hbrdd.lib hbmacro.lib hbpp.lib rddntx.lib rddcdx.lib rddfpt.lib hbsix.lib hbcommon.lib hbpcre.lib hbzlib.lib user32.lib winspool.lib
del *.obj
@@ -26,3 +26,4 @@ del pickarry.c
del pickfile.c
del prb_stak.c
del tmake.c

View File

@@ -4,7 +4,7 @@
/*
* Harbour Project source code:
* fclass.prg Fileman class for hbdoc
* Fileman class for hbdoc
*
* Copyright 2000 Luiz Rafael Culik <culik@sl.conex.net>
* www - http://www.harbour-project.org
@@ -367,5 +367,7 @@ METHOD openfile( cFile, nMethod ) CLASS FileMan
cPath := STRTRAN( cFile, cFileName, "" )
::addItem( nFileHandle, cFileName, cPath )
ENDIF
::nHan := nFileHandle
RETURN nFileHandle
RETURN nFileHandle

View File

@@ -4,7 +4,7 @@
/*
* Harbour Project source code:
* ffile1.prg Filebase class for hbdoc
* Filebase class for hbdoc
*
* Copyright 2000 Luiz Rafael Culik <culik@sl.conex.net>
* www - http://www.harbour-project.org
@@ -178,7 +178,7 @@ METHOD fgoBottom() CLASS FileBase
RETURN Self
/* Method: close()
/* Method: closefile()
Params: N/A
Returns: Self
Purpose: To close the file
@@ -376,27 +376,6 @@ METHOD goBottom() CLASS FileBase
RETURN Self
/* Method: close()
Params: N/A
Returns: Self
Purpose: To close the file
*/
/* Not declared in class creation, which means the super version is used. */
#ifdef BUG
METHOD FCLOSE() CLASS FileBase
IF Self:noDosError() .AND. Self:nDosHandle > 0
FCLOSE( Self:nDosHandle )
Self:nLastDosMessage := FERROR()
Self:delItem( Self:nDosHandle )
Self:lAtTop := Self:lAtBottom := .F.
Self:nPosition := 0
ENDIF
RETURN Self
#endif
/* Method: write(<cChar>)
Params: <cChar>
Returns: Self
@@ -422,68 +401,6 @@ METHOD WRITE( cChar ) CLASS FileBase
RETURN Self
/* Method: getBuffer( <lDirection> )
Params: <lDirection> Logical toggle for direction
Returns: <nBytes>
Purpose: To return the number of bytes either forward or backward from
the present file pointer position in which the next CRLF char
appears. If <lDirection> is a logical false (.F.) value, them
the operation will go in reverse order; otherwise, it will go
in a forward direction. The default value is a logical true
(.T.) value.
*/
/* Class declaration send message BuffGet to BufferGet. */
#ifdef BUG
METHOD Buffget( lForward ) CLASS FileBase
LOCAL cBuffer // as char
LOCAL nLocation // as int
LOCAL nRead // as int
LOCAL lWithCRLF := .F. // as logical
DEFAULT lForward TO .T.
IF !lForward
nRead := FSEEK( Self:nDosHandle, ;
- ( iif( ::nposition < pBUFFER_LENGTH, ;
::nposition, ;
pBUFFER_LENGTH ) ), ;
1 ) // rewind backwards
cBuffer := SPACE( ::nposition - nRead )
FREAD( Self:nDosHandle, @cBuffer, ( ::nposition - nRead ) )
IF RIGHT( cBuffer, 2 ) == hb_OSNewLine() // with line already
cBuffer := LEFT( cBuffer, LEN( cBuffer ) - 2 )
lWithCRLF := .T.
ENDIF
nLocation := LEN( cBuffer ) - ( RAT( hb_OSNewLine(), cBuffer ) )
ELSE
cBuffer := SPACE( pBUFFER_LENGTH )
nRead := FREAD( Self:nDosHandle, @cBuffer, pBUFFER_LENGTH )
FSEEK( Self:nDosHandle, - ( iif( nRead < pBUFFER_LENGTH, nRead, ;
pBUFFER_LENGTH ) ), 1 ) // Rewind
// Now, parse the string. and file
nLocation := AT( hb_OSNewLine(), cBuffer )
// Now, if there is NO CRLF in the buffer and if the value of the
// number of bytes read is less than the buffer length, then we
// have an end of file condition.
IF nLocation == 0 .AND. ( nRead < pBUFFER_LENGTH )
// If so, then set the appropriate flags accordingly.
::lAtBottom := .T.
::lAtTop := .F.
ENDIF
ENDIF
RETURN nLocation
#endif
/* Method: appendLine( <cLine )
Params: <cLine> Character line to append
Returns: Self
@@ -597,7 +514,7 @@ METHOD GOTO( nValue ) CLASS FileBase
ENDIF
ENDIF
RETURN nCount
RETURN nCount
METHOD BufferGet( lForward ) CLASS FileBase
@@ -645,4 +562,4 @@ METHOD BufferGet( lForward ) CLASS FileBase
ENDIF
ENDIF
RETURN nLocation
RETURN nLocation

View File

@@ -4,7 +4,7 @@
/*
* Harbour Project source code:
* ft_funcs.prg File support Functions For hbdoc
* File support Functions For hbdoc
*
* Copyright 2000 Luiz Rafael Culik <culik@sl.conex.net>
* www - http://www.harbour-project.org
@@ -55,7 +55,7 @@
#include "fileio.ch"
#include "inkey.ch"
STATIC s_TheHandle
STATIC s_oFileBase
/****
* FT_FUSE( cFile, nMode ) ---> nHandle
@@ -63,34 +63,33 @@ STATIC s_TheHandle
*/
FUNCTION FT_FUSE( cFile, nMode )
DEFAULT cFile TO s_TheHandle:closefile()
IF cFile != NIL
s_TheHandle := FileBase():new( cFile )
IF cFile == NIL
s_oFileBase:closefile()
ELSE
s_oFileBase := FileBase():new( cFile )
IF nMode != NIL
s_TheHandle:nOpenMode := nMode
s_oFileBase:nOpenMode := nMode
ENDIF
s_TheHandle:open()
s_oFileBase:open()
ENDIF
RETURN s_TheHandle:nHan
RETURN s_oFileBase:nHan
FUNCTION ft_FEOF()
RETURN s_TheHandle:lAtBottom
FUNCTION FT_FEOF()
RETURN s_oFileBase:lAtBottom
FUNCTION FReadLn()
RETURN s_TheHandle:retrieve()
RETURN s_oFileBase:retrieve()
FUNCTION FT_FReadLn()
RETURN StrTran( FReadLn(), Chr( 13 ), "" )
PROCEDURE FT_FGotop()
s_TheHandle:Gotop()
s_oFileBase:Gotop()
RETURN
PROCEDURE FT_FSKIP( n )
s_TheHandle:Skip( n )
s_oFileBase:Skip( n )
RETURN
PROCEDURE FT_MKDIR( cDir )

View File

@@ -4,7 +4,7 @@
/*
* xHarbour Project source code:
* hbmake.prg xHarbour make utility main file
* xHarbour make utility main file
*
* Copyright 2000-2007 Luiz Rafael Culik <culikr@uol.com.br>
* www - http://www.xharbour.org

View File

@@ -54,7 +54,6 @@
#include "hbapi.h"
#include "hbapifs.h"
#include "hb_io.h"
#include "hbset.h"
#include "hbapiitm.h"
#include "hbapierr.h"
@@ -174,7 +173,6 @@ BYTE * hb_fsReadLine( FHANDLE hFileHandle, LONG *plBuffLen, char ** Term, int *
HB_FUNC( HB_FREADLINE )
{
PHB_ITEM pTerm1;
PHB_ITEM Opt = hb_itemNew( NULL );
FHANDLE hFileHandle = (FHANDLE) hb_parnl( 1 );
char ** Term;
BYTE * pBuffer;
@@ -194,7 +192,7 @@ HB_FUNC( HB_FREADLINE )
if( ISARRAY( 3 ) )
{
pTerm1 = hb_param( 3, HB_IT_ARRAY );
iTerms = (int) hb_arrayLen(pTerm1);
iTerms = (int) hb_arrayLen( pTerm1 );
if( iTerms <= 0 )
{
@@ -207,13 +205,10 @@ HB_FUNC( HB_FREADLINE )
Term = (char**) hb_xgrab( sizeof(char*) * iTerms );
iTermSizes = (int *) hb_xgrab( sizeof(int) * iTerms );
hb_itemClear( Opt );
for(i=0;i<iTerms;i++)
{
hb_arrayGet( pTerm1, i + 1, Opt );
Term[i] = (char *) hb_itemGetCPtr(Opt);
iTermSizes[i] = hb_itemGetCLen(Opt);
Term[i] = hb_arrayGetCPtr( pTerm1, i + 1 );
iTermSizes[i] = hb_arrayGetCLen( pTerm1, i + 1 );
}
}
else
@@ -221,8 +216,8 @@ HB_FUNC( HB_FREADLINE )
pTerm1 = hb_param( 3, HB_IT_STRING );
Term = (char**) hb_xgrab( sizeof(char*) );
iTermSizes = (int *) hb_xgrab( sizeof(int) );
Term[0] = (char *) hb_itemGetCPtr(pTerm1);
iTermSizes[0] = hb_itemGetCLen(pTerm1);
Term[0] = (char *) hb_itemGetCPtr( pTerm1 );
iTermSizes[0] = hb_itemGetCLen( pTerm1 );
iTerms = 1;
}
}
@@ -244,10 +239,7 @@ HB_FUNC( HB_FREADLINE )
if( ! hb_storclen_buffer( (char*) pBuffer, lSize, 2 ) )
hb_xfree( pBuffer );
hb_retnl( bEOF ? -1 : 0 );
hb_xfree( Term );
hb_xfree( iTermSizes );
hb_itemRelease( Opt );
}

View File

@@ -0,0 +1,192 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
* Gauge functions
*
* Copyright 2000 Jose Lalin <dezac@corevia.com>
* www - http://www.harbour-project.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
*
* As a special exception, the Harbour Project gives permission for
* additional uses of the text contained in its release of Harbour.
*
* The exception is that, if you link the Harbour libraries with other
* files to produce an executable, this does not by itself cause the
* resulting executable to be covered by the GNU General Public License.
* Your use of that executable is in no way restricted on account of
* linking the Harbour library code into it.
*
* This exception does not however invalidate any other reasons why
* the executable file might be covered by the GNU General Public License.
*
* This exception applies only to the code released by the Harbour
* Project under the name Harbour. If you copy code from other
* Harbour Project or Free Software Foundation releases into a copy of
* Harbour, as the General Public License permits, the exception does
* not apply to the code that you add in this way. To avoid misleading
* anyone as to the status of such modified files, you must delete
* this exception notice from them.
*
* If you write modifications of your own for Harbour, it is your choice
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice.
*
*/
#include "hbapi.h"
#include "hbapiitm.h"
#include "hbapigt.h"
/* Box array definitions */
#define B_TOP 1
#define B_LEFT 2
#define B_BOTTOM 3
#define B_RIGHT 4
#define B_BACKCOLOR 5
#define B_BARCOLOR 6
#define B_DISPLAYNUM 8
#define B_BARCHAR 7
#define B_PERCENT 9
#define B_LEN B_PERCENT
#define B_BOXLINES "ÚÄ¿³ÙÄÀ³"
static void hb_gaugeUpdate( PHB_ITEM pArray, float fPercent )
{
int iCenter = ( ( hb_arrayGetNL( pArray, B_RIGHT ) - hb_arrayGetNL( pArray, B_LEFT ) ) / 2 ) + 1;
int iRatio = hb_arrayGetNL( pArray, B_RIGHT ) - hb_arrayGetNL( pArray, B_LEFT ) - 1;
int iRow;
int iCols;
int iMax;
char szOldColor[ HB_CLRSTR_LEN ];
char * szStr = " ";
char szPct[ 5 ];
hb_gtGetColorStr( szOldColor );
hb_gtSetColorStr( hb_arrayGetCPtr( pArray, B_BARCOLOR ) );
fPercent = ( fPercent < 0 ? 0 : ( fPercent > 1 ? 1 : fPercent ) );
iCols = (int) (fPercent * iRatio);
if( hb_arrayGetL( pArray, B_DISPLAYNUM ) )
{
snprintf( szPct, sizeof( szPct ), "%3.0f%%", fPercent * 100 );
hb_gtWriteAt( (USHORT) hb_arrayGetNL( pArray, B_TOP ),
(USHORT) iCenter + 2, (BYTE *) szPct, 4 );
}
hb_gtBox( hb_arrayGetNI( pArray, B_TOP ) + 1, hb_arrayGetNI( pArray, B_LEFT ) + 1,
hb_arrayGetNI( pArray, B_BOTTOM ) - 1, hb_arrayGetNI( pArray, B_RIGHT ) - 1,
( BYTE * ) szStr );
iMax = hb_arrayGetNL( pArray, B_BOTTOM ) - hb_arrayGetNL( pArray, B_TOP ) - 1;
for( iRow = 1; iRow <= iMax; iRow++ )
{
hb_gtRepChar( (USHORT) (iRow + hb_arrayGetNL( pArray, B_TOP )),
(USHORT) (hb_arrayGetNL( pArray, B_LEFT ) + 1),
( BYTE ) * hb_arrayGetCPtr( pArray, B_BARCHAR ), iCols );
}
hb_gtSetColorStr( szOldColor );
}
/* GaugeNew( <nRowTop>, <nColumnTop>, <nRowBottom>, <nColumnBottom>,
[<cBackgroundColor>],
[<cGaugeColor>],
[<cGaugeCharacter>] ) --> aGauge
*/
HB_FUNC( GAUGENEW )
{
PHB_ITEM pReturn = hb_itemArrayNew( B_LEN ); /* Create array */
hb_arraySetNL( pReturn, B_TOP, hb_parni( B_TOP ) );
hb_arraySetNL( pReturn, B_LEFT, hb_parni( B_LEFT ) );
hb_arraySetNL( pReturn, B_BOTTOM,
ISNUM( B_BOTTOM ) ?
( hb_parni( B_BOTTOM ) < hb_parni( B_TOP ) + 2 ?
hb_parni( B_TOP ) + 2 : hb_parni( B_BOTTOM ) ) : 0 );
hb_arraySetNL( pReturn, B_RIGHT,
ISNUM( B_RIGHT ) ?
( hb_parni( B_RIGHT ) < hb_parni( B_LEFT ) + 4 ?
hb_parni( B_LEFT ) + 4 : hb_parni( B_RIGHT ) ) : 0 );
hb_arraySetC( pReturn, B_BACKCOLOR, ISCHAR( B_BACKCOLOR ) ? hb_parc( B_BACKCOLOR ) : "W/N" );
hb_arraySetC( pReturn, B_BARCOLOR, ISCHAR( B_BARCOLOR ) ? hb_parc( B_BARCOLOR ) : "W+/N" );
hb_arraySetL( pReturn, B_DISPLAYNUM,
!( ISNUM( B_RIGHT ) &&
ISNUM( B_LEFT ) &&
( hb_parni( B_RIGHT ) < hb_parni( B_LEFT ) + 9 ) ) );
hb_arraySetC( pReturn, B_BARCHAR, ISCHAR( B_BARCHAR ) ? hb_parc( B_BARCHAR ) : "\xdb" );
hb_arraySetNL( pReturn, B_PERCENT, 0 );
hb_itemReturnRelease( pReturn );
}
/* GaugeDisplay( aGauge ) --> aGauge
*/
HB_FUNC( GAUGEDISPLAY )
{
PHB_ITEM pArray = hb_param( 1, HB_IT_ARRAY );
if( pArray )
{
int iCenter = ( ( hb_arrayGetNL( pArray, B_RIGHT ) - hb_arrayGetNL( pArray, B_LEFT ) ) / 2 ) + 1;
char szOldColor[ HB_CLRSTR_LEN ];
char * szStr = " ";
hb_gtGetColorStr( szOldColor );
hb_gtSetColorStr( hb_arrayGetCPtr( pArray, B_BACKCOLOR ) );
hb_gtBox( (SHORT) hb_arrayGetNL( pArray, B_TOP ),
(SHORT) hb_arrayGetNL( pArray, B_LEFT ),
(SHORT) hb_arrayGetNL( pArray, B_BOTTOM ),
(SHORT) hb_arrayGetNL( pArray, B_RIGHT ),
(BYTE *) szStr );
hb_gtBox( (SHORT) hb_arrayGetNL( pArray, B_TOP ),
(SHORT) hb_arrayGetNL( pArray, B_LEFT ),
(SHORT) hb_arrayGetNL( pArray, B_BOTTOM ),
(SHORT) hb_arrayGetNL( pArray, B_RIGHT ),
(BYTE *) B_BOXLINES );
if( hb_arrayGetL( pArray, B_DISPLAYNUM ) )
hb_gtWriteAt( (USHORT) hb_arrayGetNL( pArray, B_TOP ),
iCenter, ( BYTE * ) "[ ]", 8 );
hb_gtSetColorStr( szOldColor );
hb_gaugeUpdate( pArray, ( float ) hb_arrayGetND( pArray, B_PERCENT ) );
hb_itemReturn( pArray );
}
}
/* GaugeUpdate( aGauge, nPercent ) --> aGauge
*/
HB_FUNC( GAUGEUPDATE )
{
PHB_ITEM pArray = hb_param( 1, HB_IT_ARRAY );
if( pArray )
{
hb_gaugeUpdate( pArray, ISNUM( 2 ) ? ( float ) hb_parnd( 2 ) : 0 );
hb_itemReturn( pArray );
}
}

View File

@@ -4,7 +4,7 @@
/*
* Harbour Project source code:
* hbmlang.c Hbmake detection language function
* Hbmake detection language function
*
* Copyright 2000,2001 Luiz Rafael Culik <culik@sl.conex.net>
* www - http://www.harbour-project.org
@@ -53,8 +53,6 @@
#define HB_OS_WIN_32_USED
#include "hbapi.h"
#include "hbapiitm.h"
#include "hbapigt.h"
HB_FUNC( GETUSERLANG )
{
@@ -62,207 +60,56 @@ HB_FUNC( GETUSERLANG )
#if defined(HB_OS_WIN_32) && (!defined(__RSXNT__)) && (!defined(__CYGWIN__))
switch( GetSystemDefaultLangID() )
{
LANGID pLang = GetSystemDefaultLangID();
case 0x0416:
case 0x0816:
lRet = 1;
break;
switch(pLang) {
case 0x0409:
case 0x0809:
case 0x0C09:
case 0x1009:
case 0x1409:
case 0x1809:
case 0x1C09:
case 0x2009:
case 0x2409:
case 0x2809:
case 0x2C09:
lRet = 2;
break;
case 0x0416:
case 0x0816:
{
lRet=1;
}
case 0x040A:
case 0x080A:
case 0x0C0A:
case 0x100A:
case 0x140A:
case 0x180A:
case 0x1C0A:
case 0x200A:
case 0x240A:
case 0x280A:
case 0x2C0A:
case 0x300A:
case 0x340A:
case 0x380A:
case 0x3C0A:
case 0x400A:
case 0x440A:
case 0x480A:
case 0x4C0A:
case 0x500A:
lRet = 3;
break;
break;
case 0x0409 :
case 0x0809 :
case 0x0c09 :
case 0x1009 :
case 0x1409 :
case 0x1809 :
case 0x1c09 :
case 0x2009 :
case 0x2409 :
case 0x2809 :
case 0x2c09 :
{
lRet=2;
}
break;
case 0x040a :
case 0x080a :
case 0x0c0a :
case 0x100a :
case 0x140a :
case 0x180a :
case 0x1c0a :
case 0x200a :
case 0x240a :
case 0x280a :
case 0x2c0a :
case 0x300a :
case 0x340a :
case 0x380a :
case 0x3c0a :
case 0x400a :
case 0x440a :
case 0x480a :
case 0x4c0a :
case 0x500a :
{
lRet = 3;
}
break;
default:
lRet = 2;
break;
}
default:
lRet = 2;
break;
}
#else
lRet = 2;
#endif
hb_retnl( lRet );
}
/* Box array definitions */
#define B_TOP 1
#define B_LEFT 2
#define B_BOTTOM 3
#define B_RIGHT 4
#define B_BACKCOLOR 5
#define B_BARCOLOR 6
#define B_DISPLAYNUM 8
#define B_BARCHAR 7
#define B_PERCENT 9
#define B_LEN B_PERCENT
#define B_BOXLINES "ÚÄ¿³ÙÄÀ³"
static void hb_gaugeUpdate( PHB_ITEM pArray, float fPercent )
{
int iCenter = ( ( hb_arrayGetNL( pArray, B_RIGHT ) - hb_arrayGetNL( pArray, B_LEFT ) ) / 2 ) + 1;
int iRatio = hb_arrayGetNL( pArray, B_RIGHT ) - hb_arrayGetNL( pArray, B_LEFT ) - 1;
int iRow;
int iCols;
int iMax;
char szOldColor[ HB_CLRSTR_LEN ];
char * szStr = " ";
char szPct[ 5 ];
hb_gtGetColorStr( szOldColor );
hb_gtSetColorStr( hb_arrayGetCPtr( pArray, B_BARCOLOR ) );
fPercent = ( fPercent < 0 ? 0 : ( fPercent > 1 ? 1 : fPercent ) );
iCols = (int) (fPercent * iRatio);
if( hb_arrayGetL( pArray, B_DISPLAYNUM ) )
{
snprintf( szPct, sizeof( szPct ), "%3.0f%%", fPercent * 100 );
hb_gtWriteAt( (USHORT) hb_arrayGetNL( pArray, B_TOP ),
(USHORT) iCenter + 2, (BYTE *) szPct, 4 );
}
hb_gtBox( hb_arrayGetNI( pArray, B_TOP ) + 1, hb_arrayGetNI( pArray, B_LEFT ) + 1,
hb_arrayGetNI( pArray, B_BOTTOM ) - 1, hb_arrayGetNI( pArray, B_RIGHT ) - 1,
( BYTE * ) szStr );
iMax = hb_arrayGetNL( pArray, B_BOTTOM ) - hb_arrayGetNL( pArray, B_TOP ) - 1;
for( iRow = 1; iRow <= iMax; iRow++ )
{
hb_gtRepChar( (USHORT) (iRow + hb_arrayGetNL( pArray, B_TOP )),
(USHORT) (hb_arrayGetNL( pArray, B_LEFT ) + 1),
( BYTE ) * hb_arrayGetCPtr( pArray, B_BARCHAR ), iCols );
}
hb_gtSetColorStr( szOldColor );
}
/* GaugeNew( <nRowTop>, <nColumnTop>, <nRowBottom>, <nColumnBottom>,
[<cBackgroundColor>],
[<cGaugeColor>],
[<cGaugeCharacter>] ) --> aGauge
*/
HB_FUNC( GAUGENEW )
{
PHB_ITEM pReturn = hb_itemArrayNew( B_LEN ); /* Create array */
hb_arraySetNL( pReturn, B_TOP, hb_parni( B_TOP ) );
hb_arraySetNL( pReturn, B_LEFT, hb_parni( B_LEFT ) );
hb_arraySetNL( pReturn, B_BOTTOM,
ISNUM( B_BOTTOM ) ?
( hb_parni( B_BOTTOM ) < hb_parni( B_TOP ) + 2 ?
hb_parni( B_TOP ) + 2 : hb_parni( B_BOTTOM ) ) : 0 );
hb_arraySetNL( pReturn, B_RIGHT,
ISNUM( B_RIGHT ) ?
( hb_parni( B_RIGHT ) < hb_parni( B_LEFT ) + 4 ?
hb_parni( B_LEFT ) + 4 : hb_parni( B_RIGHT ) ) : 0 );
hb_arraySetC( pReturn, B_BACKCOLOR, ISCHAR( B_BACKCOLOR ) ? hb_parc( B_BACKCOLOR ) : "W/N" );
hb_arraySetC( pReturn, B_BARCOLOR, ISCHAR( B_BARCOLOR ) ? hb_parc( B_BARCOLOR ) : "W+/N" );
hb_arraySetL( pReturn, B_DISPLAYNUM,
!( ISNUM( B_RIGHT ) &&
ISNUM( B_LEFT ) &&
( hb_parni( B_RIGHT ) < hb_parni( B_LEFT ) + 9 ) ) );
hb_arraySetC( pReturn, B_BARCHAR, ISCHAR( B_BARCHAR ) ? hb_parc( B_BARCHAR ) : "\xdb" );
hb_arraySetNL( pReturn, B_PERCENT, 0 );
hb_itemReturnRelease( pReturn );
}
/* GaugeDisplay( aGauge ) --> aGauge
*/
HB_FUNC( GAUGEDISPLAY )
{
PHB_ITEM pArray = hb_param( 1, HB_IT_ARRAY );
if( pArray )
{
int iCenter = ( ( hb_arrayGetNL( pArray, B_RIGHT ) - hb_arrayGetNL( pArray, B_LEFT ) ) / 2 ) + 1;
char szOldColor[ HB_CLRSTR_LEN ];
char * szStr = " ";
hb_gtGetColorStr( szOldColor );
hb_gtSetColorStr( hb_arrayGetCPtr( pArray, B_BACKCOLOR ) );
hb_gtBox( (SHORT) hb_arrayGetNL( pArray, B_TOP ),
(SHORT) hb_arrayGetNL( pArray, B_LEFT ),
(SHORT) hb_arrayGetNL( pArray, B_BOTTOM ),
(SHORT) hb_arrayGetNL( pArray, B_RIGHT ),
(BYTE *) szStr );
hb_gtBox( (SHORT) hb_arrayGetNL( pArray, B_TOP ),
(SHORT) hb_arrayGetNL( pArray, B_LEFT ),
(SHORT) hb_arrayGetNL( pArray, B_BOTTOM ),
(SHORT) hb_arrayGetNL( pArray, B_RIGHT ),
(BYTE *) B_BOXLINES );
if( hb_arrayGetL( pArray, B_DISPLAYNUM ) )
hb_gtWriteAt( (USHORT) hb_arrayGetNL( pArray, B_TOP ),
iCenter, ( BYTE * ) "[ ]", 8 );
hb_gtSetColorStr( szOldColor );
hb_gaugeUpdate( pArray, ( float ) hb_arrayGetND( pArray, B_PERCENT ) );
hb_itemReturn( pArray );
}
}
/* GaugeUpdate( aGauge, nPercent ) --> aGauge
*/
HB_FUNC( GAUGEUPDATE )
{
PHB_ITEM pArray = hb_param( 1, HB_IT_ARRAY );
if( pArray )
{
hb_gaugeUpdate( pArray, ISNUM( 2 ) ? ( float ) hb_parnd( 2 ) : 0 );
hb_itemReturn( pArray );
}
}

View File

@@ -4,7 +4,7 @@
/*
* xHarbour Project source code:
* hbmutils.prg - utils for hbmake.
* Utils for hbmake.
*
* Copyright 2000,2001,2002,2003,2004 Luiz Rafael Culik <culikr@uol.com.br>
* www - http://www.xharbour.org

View File

@@ -4,7 +4,7 @@
/*
* xHarbour Project source code:
* hbmake.prg xHarbour make utility main file
* xHarbour make utility main file
*
* Copyright 2000,2001,2002,2003,2004 Luiz Rafael Culik <culikr@uol.com.br>
* www - http://www.xharbour.org

View File

@@ -74,15 +74,6 @@
#include "box.ch"
#include "directry.ch"
*+--------------------------------------------------------------------
*+
*+ Function pickfile()
*+
*+ Called from ( makelink.prg ) 1 - function makelink()
*+ ( pbinit.prg ) 1 - procedure pbinit()
*+
*+--------------------------------------------------------------------
*+
function pickfile( cFileSpec )
local cOldString := savescreen( 8, 19, 16, 61 )

View File

@@ -4,7 +4,7 @@
/*
* Harbour Project source code:
* tmake.prg file generator for hbmake
* File generator for hbmake
*
* Copyright 2000 Luiz Rafael Culik <culik@sl.conex.net>
* www - http://www.harbour-project.org
@@ -52,93 +52,90 @@
#include "hbclass.ch"
#include "common.ch"
STATIC lEof := .F.
STATIC s_lEof := .F.
*------------
CLASS THBMAKE
*------------
EXPORT:
DATA aDefines Init {}
DATA aBuildOrder Init {}
DATA aCommands Init {}
DATA aMacros Init {}
DATA aPrgs Init {}
DATA aExtLibs Init {}
DATA aCs Init {}
DATA aObjs Init {}
DATA aObjsc Init {}
DATA aRes Init {}
DATA nLinkHandle
DATA cLinkcomm Init ""
DATA lCompress Init .F.
DATA lForce Init .F.
DATA lLinux Init .F.
DATA szProject Init ""
DATA lLibrary Init .F.
DATA lInstallLib Init .F.
DATA lIgnoreErrors Init .F.
DATA lExtended Init .T.
DATA lOs2 Init .F.
DATA lRecurse Init .F.
DATA lEditMode Init .F.
DATA aDir
DATA aLangMessages init {}
DATA cDefLang
DATA lFwh init .F.
DATA lxFwh init .F.
DATA lCw init .F.
DATA lMini init .F.
DATA lHwgui init .F.
DATA lGui Init .F.
DATA lGtwvt init .F.
DATA lGtwvw init .F.
DATA lMWvW init .F.
DATA lXWT init .F.
DATA lxHGtk init .F.
DATA lWhoo init .F.
DATA lWhat32 init .F.
DATA lRddAds init .F.
DATA lMediator init .F.
DATA cMakefile init ""
DATA lExternalLib init .F.
DATA cObj init ""
DATA cUserdef init ""
DATA cUserInclude init ""
DATA cUserLib init ""
DATA lGenppo init .f.
DATA lCompMod init .f.
DATA lAutomemvar init .f.
DATA lvarismemvar init .f.
DATA ldebug init .f.
DATA lSupressline init .f.
DATA StartPath init ""
DATA cFmc init ""
DATA cMedpath init ""
DATA cAppLibName init ""
DATA cOs init ""
DATA cTopfile init ""
DATA aOut init {}
DATA cFilesToAdd init 5
DATA lMT init .F.
DATA cWarningLevel init 0
DATA cTopModule init ""
DATA cRes init ""
DATA cMacro init ""
DATA lGenCsource init .f. // Ath added 31-05-2006
DATA cShell init ""
DATA cEditor init ""
EXPORTED:
METHOD New()
METHOD ReadMakefile(cFile)
METHOD ReplaceMacros( cMacros )
METHOD FindMacro( cMacro, cRead )
DATA aDefines Init {}
DATA aBuildOrder Init {}
DATA aCommands Init {}
DATA aMacros Init {}
DATA aPrgs Init {}
DATA aExtLibs Init {}
DATA aCs Init {}
DATA aObjs Init {}
DATA aObjsc Init {}
DATA aRes Init {}
DATA nLinkHandle
DATA cLinkcomm Init ""
DATA lCompress Init .F.
DATA lForce Init .F.
DATA lLinux Init .F.
DATA szProject Init ""
DATA lLibrary Init .F.
DATA lInstallLib Init .F.
DATA lIgnoreErrors Init .F.
DATA lExtended Init .T.
DATA lOs2 Init .F.
DATA lRecurse Init .F.
DATA lEditMode Init .F.
DATA aDir
DATA aLangMessages init {}
DATA cDefLang
DATA lFwh init .F.
DATA lxFwh init .F.
DATA lCw init .F.
DATA lMini init .F.
DATA lHwgui init .F.
DATA lGui Init .F.
DATA lGtwvt init .F.
DATA lGtwvw init .F.
DATA lMWvW init .F.
DATA lXWT init .F.
DATA lxHGtk init .F.
DATA lWhoo init .F.
DATA lWhat32 init .F.
DATA lRddAds init .F.
DATA lMediator init .F.
DATA cMakefile init ""
DATA lExternalLib init .F.
DATA cObj init ""
DATA cUserdef init ""
DATA cUserInclude init ""
DATA cUserLib init ""
DATA lGenppo init .F.
DATA lCompMod init .F.
DATA lAutomemvar init .F.
DATA lvarismemvar init .F.
DATA ldebug init .F.
DATA lSupressline init .F.
DATA StartPath init ""
DATA cFmc init ""
DATA cMedpath init ""
DATA cAppLibName init ""
DATA cOs init ""
DATA cTopfile init ""
DATA aOut init {}
DATA cFilesToAdd init 5
DATA lMT init .F.
DATA cWarningLevel init 0
DATA cTopModule init ""
DATA cRes init ""
DATA cMacro init ""
DATA lGenCsource init .F. // Ath added 31-05-2006
DATA cShell init ""
DATA cEditor init ""
METHOD New()
METHOD ReadMakefile(cFile)
METHOD ReplaceMacros( cMacros )
METHOD FindMacro( cMacro, cRead )
ENDCLASS
*-------------------------
METHOD New() CLASS THbMake
*-------------------------
::cObj := "obj" + Space( 40 )
::cUserdef := Space( 200 )
@@ -149,384 +146,375 @@ METHOD New() CLASS THbMake
::cTopModule := Space( 20 )
::cEditor := ""
return self
return self
*---------------------------------------
METHOD ReadMakefile(cFile) CLASS THbMake
*---------------------------------------
LOCAL cBuffer := {}
LOCAL cMacro := ::cMacro
LOCAL cDep := "#DEPENDS"
LOCAL cOpt := "#OPTS"
LOCAL cCom := "#COMMANDS"
LOCAL cBuild := "#BUILD"
LOCAL cTemp := ""
LOCAL cTemp1 := ""
LOCAL aTemp := {}
LOCAL lMacrosec := .f.
LOCAL lBuildSec := .f.
LOCAL lComSec := .f.
LOCAL aTemp1 := {}
LOCAL cCfg := ""
LOCAL lCfgFound := .F.
LOCAL aTempCFiles := {}
Local nHandle
Local cObjitem
Local cRes := ""
Local cItem
LOCAL lLinux := At( "linux", Lower( Os() ) ) > 0
Local lExtended := .T., szProject
LOCAL lPrgObjRule := .F.
LOCAL cBuffer := {}
LOCAL cMacro := ::cMacro
LOCAL cDep := "#DEPENDS"
LOCAL cOpt := "#OPTS"
LOCAL cCom := "#COMMANDS"
LOCAL cBuild := "#BUILD"
LOCAL cTemp := ""
LOCAL cTemp1 := ""
LOCAL aTemp := {}
LOCAL lMacrosec := .F.
LOCAL lBuildSec := .F.
LOCAL lComSec := .F.
LOCAL aTemp1 := {}
LOCAL cCfg := ""
LOCAL lCfgFound := .F.
LOCAL aTempCFiles := {}
Local nHandle
Local cObjitem
Local cRes := ""
Local cItem
LOCAL lLinux := At( "linux", Lower( Os() ) ) > 0
Local lExtended := .T., szProject
LOCAL lPrgObjRule := .F.
nHandle := FT_FUSE( cFile )
IF nHandle < 0
RETURN self
ENDIF
cBuffer := Trim( Substr( ReadLN( @lEof ), 1 ) )
::lLibrary :=.f.
nHandle := FT_FUSE( cFile )
IF nHandle < 0
RETURN self
ENDIF
cBuffer := Trim( ReadLN( @s_lEof ) )
::lLibrary :=.F.
WHILE !leof
WHILE !s_lEof
IF At( cMacro, cBuffer ) > 0
lMacroSec := .T.
lBuildSec := .f.
lComSec := .f.
ELSEIF At( cBuild, cBuffer ) > 0
lMacroSec := .f.
lBuildSec := .T.
lComSec := .f.
ELSEIF At( cCom, cBuffer ) > 0
lBuildSec := .f.
lComSec := .t.
lMacroSec := .f.
ELSE
? "Invalid Make File"
Fclose( nHandle )
RETURN Nil
ENDIF
IF At( cMacro, cBuffer ) > 0
lMacroSec := .T.
lBuildSec := .F.
lComSec := .F.
ELSEIF At( cBuild, cBuffer ) > 0
lMacroSec := .F.
lBuildSec := .T.
lComSec := .F.
ELSEIF At( cCom, cBuffer ) > 0
lBuildSec := .F.
lComSec := .T.
lMacroSec := .F.
ELSE
? "Invalid Make File"
Fclose( nHandle )
RETURN Nil
ENDIF
cTemp := Trim( Substr( ReadLN( @lEof ), 1 ) )
cTemp := Trim( ReadLN( @s_lEof ) )
IF At( "//", ctemp ) > 0
WHILE At( "//", ctemp ) > 0
ctemp := Strtran( ctemp, " //", "" )
cTemp += Trim( Substr( ReadLN( @lEof ), 1 ) )
ENDDO
IF At( "//", ctemp ) > 0
WHILE At( "//", ctemp ) > 0
ctemp := Strtran( ctemp, " //", "" )
ENDIF
cTemp += Trim( ReadLN( @s_lEof ) )
ENDDO
aTemp := ListasArray2( Alltrim( cTemp ), "=" )
ctemp := Strtran( ctemp, " //", "" )
ENDIF
IF lmacrosec
aTemp := ListasArray2( Alltrim( cTemp ), "=" )
IF Alltrim( Left( ctemp, 7 ) ) <> "!ifndef" .and. Alltrim( Left( ctemp, 6 ) ) <> "!endif" .and. Alltrim( Left( ctemp, 7 ) ) <> "!iffile" .and. Alltrim( Left( ctemp, 7 ) ) <> "!stdout" .and. Alltrim( Left( ctemp, 6 ) ) <> "!ifdef"
IF lmacrosec
IF Len( aTemp ) > 1
IF Alltrim( Left( ctemp, 7 ) ) <> "!ifndef" .and. Alltrim( Left( ctemp, 6 ) ) <> "!endif" .and. Alltrim( Left( ctemp, 7 ) ) <> "!iffile" .and. Alltrim( Left( ctemp, 7 ) ) <> "!stdout" .and. Alltrim( Left( ctemp, 6 ) ) <> "!ifdef"
IF At( "$", aTemp[ 2 ] ) > 0
Aadd( ::aMacros, { aTemp[ 1 ], ::replacemacros( aTemp[ 2 ] ) } )
ELSE
Aadd( ::aMacros, { aTemp[ 1 ], aTemp[ 2 ] } )
// tracelog(aTemp[ 1 ], aTemp[ 2 ])
ENDIF
ENDIF
IF Len( aTemp ) > 1
IF aTemp[ 1 ] == "PROJECT"
::cAppLibName := aTemp[ 2 ]
::cAppLibName := strtran(::cAppLibName ,"$(PR)","")
::cAppLibName := strtran(::cAppLibName ,".exe","")
::cAppLibName := strtran(::cAppLibName ,".lib","")
ENDIF
IF At( "$", aTemp[ 2 ] ) > 0
Aadd( ::aMacros, { aTemp[ 1 ], ::replacemacros( aTemp[ 2 ] ) } )
ELSE
Aadd( ::aMacros, { aTemp[ 1 ], aTemp[ 2 ] } )
// tracelog(aTemp[ 1 ], aTemp[ 2 ])
ENDIF
ENDIF
IF aTemp[ 1 ] == "LIBFILES"
::lRddAds := "rddads" $ aTemp[ 2 ]
ENDIF
IF aTemp[ 1 ] == "PROJECT"
::cAppLibName := aTemp[ 2 ]
::cAppLibName := strtran(::cAppLibName ,"$(PR)","")
::cAppLibName := strtran(::cAppLibName ,".exe","")
::cAppLibName := strtran(::cAppLibName ,".lib","")
ENDIF
IF aTemp[ 1 ] == "C4W"
::cFMC := aTemp[2]
::lCw := .t.
endif
IF aTemp[ 1 ] == "LIBFILES"
::lRddAds := "rddads" $ aTemp[ 2 ]
ENDIF
IF aTemp[ 1 ] == "FWH"
::cFMC := aTemp[2]
::lFwh := .t.
endif
IF aTemp[ 1 ] == "C4W"
::cFMC := aTemp[2]
::lCw := .T.
endif
IF aTemp[ 1 ] == "MINIGUI"
::cFMC := aTemp[2]
::lmini := .t.
endif
IF aTemp[ 1 ] == "FWH"
::cFMC := aTemp[2]
::lFwh := .T.
endif
IF aTemp[ 1 ] == "HWGUI"
::cFMC := aTemp[2]
::lHwGui := .t.
endif
IF aTemp[ 1 ] == "MINIGUI"
::cFMC := aTemp[2]
::lmini := .T.
endif
IF aTemp[ 1 ] == "GTWVT"
::cFMC := ""
::lGtwvt := .t.
endif
IF aTemp[ 1 ] == "HWGUI"
::cFMC := aTemp[2]
::lHwGui := .T.
endif
IF aTemp[ 1 ] == "GTWVW"
::cFMC := ""
::lGtwvw := .t.
endif
IF aTemp[ 1 ] == "MWVW"
::cFMC := ""
::lGtwvw := .t.
::lMWvW := .t.
endif
IF aTemp[ 1 ] == "GTWVT"
::cFMC := ""
::lGtwvt := .T.
endif
IF aTemp[ 1 ] == "XWT"
::cFMC := ""
::lXWT := .t.
endif
IF aTemp[ 1 ] == "GTWVW"
::cFMC := ""
::lGtwvw := .T.
endif
IF aTemp[ 1 ] == "MWVW"
::cFMC := ""
::lGtwvw := .T.
::lMWvW := .T.
endif
IF aTemp[ 1 ] == "WHOO"
::cFMC := aTemp[2]
::lWhoo := .t.
endif
IF aTemp[ 1 ] == "XWT"
::cFMC := ""
::lXWT := .T.
endif
IF aTemp[ 1 ] == "WHAT32"
::cFMC := aTemp[2]
::lWhat32 := .t.
endif
IF aTemp[ 1 ] == "WHOO"
::cFMC := aTemp[2]
::lWhoo := .T.
endif
IF aTemp[ 1 ] == "XHGTK"
::cFMC := aTemp[2]
::lxHGtk := .t.
endif
IF aTemp[ 1 ] == "WHAT32"
::cFMC := aTemp[2]
::lWhat32 := .T.
endif
IF aTemp[ 1 ] == "MEDIATOR"
::cMedpath := aTemp[2]
::lmEDIATOR := .t.
endif
IF aTemp[ 1 ] == "XHGTK"
::cFMC := aTemp[2]
::lxHGtk := .T.
endif
IF aTemp[ 1 ] == "COMPRESS"
::lCompress := "YES" $ aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "MEDIATOR"
::cMedpath := aTemp[2]
::lmEDIATOR := .T.
endif
IF aTemp[ 1 ] == "SHELL"
::cShell := aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "COMPRESS"
::lCompress := "YES" $ aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "EXTERNALLIB"
::lExternalLib := "YES" $ aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "SHELL"
::cShell := aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "XFWH"
::lxFwh := "YES" $ aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "EXTERNALLIB"
::lExternalLib := "YES" $ aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "FILESTOADD"
::cFilesToAdd := Val( aTemp[ 2 ] )
endif
IF aTemp[ 1 ] == "XFWH"
::lxFwh := "YES" $ aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "MT"
::lMt := "YES" $ aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "FILESTOADD"
::cFilesToAdd := Val( aTemp[ 2 ] )
endif
IF aTemp[ 1 ] == "GUI"
::lGUI := "YES" $ aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "MT"
::lMt := "YES" $ aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "WARNINGLEVEL"
::cWarningLevel := Val( aTemp[ 2 ] )
endif
IF aTemp[ 1 ] == "GUI"
::lGUI := "YES" $ aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "OBJFILES"
cObjitem := substr( atemp[ 2 ],1,at(")",atemp[ 2 ]))
::cObj := ::replacemacros(cObjItem)
::aObjs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
ENDIF
IF aTemp[ 1 ] == "WARNINGLEVEL"
::cWarningLevel := Val( aTemp[ 2 ] )
endif
IF aTemp[ 1 ] == "OBJCFILES"
IF aTemp[ 1 ] == "OBJFILES"
cObjitem := Left( atemp[ 2 ], at(")",atemp[ 2 ]))
::cObj := ::replacemacros(cObjItem)
::aObjs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
ENDIF
aTemp1 := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
IF aTemp[ 1 ] == "OBJCFILES"
IF Len( atemp1 ) == 1
aTemp1 := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
IF !Empty( atemp[ 1 ] )
::aObjsC := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
ENDIF
ELSE
::aObjsC := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
ENDIF
ENDIF
IF Len( atemp1 ) == 1
IF aTemp[ 1 ] == "PRGFILES"
::aPrgs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
lExtended := .T.
ENDIF
IF !Empty( atemp[ 1 ] )
::aObjsC := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
ENDIF
ELSE
::aObjsC := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
ENDIF
ENDIF
IF aTemp[ 1 ] == "PRGFILE"
::aPrgs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
ENDIF
IF aTemp[ 1 ] == "PRGFILES"
::aPrgs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
lExtended := .T.
ENDIF
IF atemp[ 1 ] == "CFILES"
IF aTemp[ 1 ] == "PRGFILE"
::aPrgs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
ENDIF
IF lExtended
IF atemp[ 1 ] == "CFILES"
aTempCFiles := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
IF lExtended
IF ( Len( aTempCFiles ) == 1 )
aTempCFiles := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
IF !Empty( aTempCFiles[ 1 ] )
::aCs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
ENDIF
ELSE
::aCs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
ENDIF
ELSE
IF ( Len( aTempCFiles ) == 1 )
IF !Empty( aTempCFiles[ 1 ] )
::aCs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
ENDIF
ENDIF
IF aTemp[ 1 ] == "EXTLIBFILES"
::aExtLibs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
ENDIF
IF atemp[ 1 ] == "RESFILES"
::aRes := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
FOR EACH cItem in :: aRes
::cRes += cItem +" "
NEXT
ENDIF
IF aTemp[ 1 ] == "RECURSE"
::lRecurse := AT( "YES" , aTemp[ 2 ] ) > 0
ENDIF
IF aTemp[ 1 ] == "LIBRARY"
::lLibrary := AT( "YES", aTemp[ 2 ] ) > 0
ENDIF
IF aTemp[ 1 ] == "INSTALLLIB"
::lInstallLib := AT( "YES", aTemp[ 2 ] ) > 0
ENDIF
IF aTemp[ 1 ] == "HARBOURFLAGS"
::lGenppo := AT( "-p" , aTemp[ 2 ] ) > 0
::lCompMod := AT( "-m" , aTemp[ 2 ] ) > 0
::lAutomemvar := AT( "-a" , aTemp[ 2 ] ) > 0
::lvarismemvar := AT( "-v" , aTemp[ 2 ] ) > 0
::ldebug := AT( "-b" , aTemp[ 2 ] ) > 0
::lSupressline := AT( "-l" , aTemp[ 2 ] ) > 0
aTemp[ 2 ] := strtran(aTemp[ 2 ],"-p","")
aTemp[ 2 ] := strtran(aTemp[ 2 ],"-m","")
aTemp[ 2 ] := strtran(aTemp[ 2 ],"-a","")
aTemp[ 2 ] := strtran(aTemp[ 2 ],"-v","")
aTemp[ 2 ] := strtran(aTemp[ 2 ],"-b","")
aTemp[ 2 ] := strtran(aTemp[ 2 ],"-l","")
aTemp[ 2 ] := Alltrim( aTemp[ 2 ] )
endif
IF aTemp[ 1 ] == "USERDEFINE"
::cUserDef := aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "USERINCLUDE"
::cUserInclude := aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "USERLIBS"
::cUserLib := aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "TOPMODULE"
::cTopModule := aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "EDITOR"
::cEditor := aTemp[ 2 ]
endif
ENDIF
ELSE
::aCs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
ENDIF
ELSE
::aCs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
ENDIF
ENDIF
ENDIF
IF lbuildSec
szProject := cTemp
::aBuildOrder := Listasarray2( cTemp, ":" )
ENDIF
IF lComSec // Ath added 31-05-2006
IF lPrgObjRule
::lGenCsource := "-go3" $ LOWER(cTemp)
lPrgObjRule := .F.
IF aTemp[ 1 ] == "EXTLIBFILES"
::aExtLibs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
ENDIF
IF aTemp[ 1 ] == ".prg.obj:" .OR. aTemp[ 1 ] == ".prg.o:"
lPrgObjRule := .T.
IF atemp[ 1 ] == "RESFILES"
::aRes := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " )
FOR EACH cItem in :: aRes
::cRes += cItem +" "
NEXT
ENDIF
ENDIF // end Ath added 31-05-2006
IF aTemp[ 1 ] == "RECURSE"
::lRecurse := AT( "YES" , aTemp[ 2 ] ) > 0
ENDIF
IF aTemp[ 1 ] == "LIBRARY"
::lLibrary := AT( "YES", aTemp[ 2 ] ) > 0
ENDIF
IF aTemp[ 1 ] == "INSTALLLIB"
::lInstallLib := AT( "YES", aTemp[ 2 ] ) > 0
ENDIF
IF aTemp[ 1 ] == "HARBOURFLAGS"
::lGenppo := AT( "-p" , aTemp[ 2 ] ) > 0
::lCompMod := AT( "-m" , aTemp[ 2 ] ) > 0
::lAutomemvar := AT( "-a" , aTemp[ 2 ] ) > 0
::lvarismemvar := AT( "-v" , aTemp[ 2 ] ) > 0
::ldebug := AT( "-b" , aTemp[ 2 ] ) > 0
::lSupressline := AT( "-l" , aTemp[ 2 ] ) > 0
aTemp[ 2 ] := strtran(aTemp[ 2 ],"-p","")
aTemp[ 2 ] := strtran(aTemp[ 2 ],"-m","")
aTemp[ 2 ] := strtran(aTemp[ 2 ],"-a","")
aTemp[ 2 ] := strtran(aTemp[ 2 ],"-v","")
aTemp[ 2 ] := strtran(aTemp[ 2 ],"-b","")
aTemp[ 2 ] := strtran(aTemp[ 2 ],"-l","")
aTemp[ 2 ] := Alltrim( aTemp[ 2 ] )
endif
IF aTemp[ 1 ] == "USERDEFINE"
::cUserDef := aTemp[ 2 ]
endif
IF cTemp = "#BUILD"
cBuffer := cTemp
ELSEIF cTemp == "#COMMANDS"
cbuffer := cTemp
ENDIF
ENDDO
IF aTemp[ 1 ] == "USERINCLUDE"
::cUserInclude := aTemp[ 2 ]
endif
qout( nhandle)
Fclose( nHandle )
RETURN self
IF aTemp[ 1 ] == "USERLIBS"
::cUserLib := aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "TOPMODULE"
::cTopModule := aTemp[ 2 ]
endif
IF aTemp[ 1 ] == "EDITOR"
::cEditor := aTemp[ 2 ]
endif
ENDIF
ENDIF
IF lbuildSec
szProject := cTemp
::aBuildOrder := Listasarray2( cTemp, ":" )
ENDIF
IF lComSec // Ath added 31-05-2006
IF lPrgObjRule
::lGenCsource := "-go3" $ LOWER(cTemp)
lPrgObjRule := .F.
ENDIF
IF aTemp[ 1 ] == ".prg.obj:" .OR. aTemp[ 1 ] == ".prg.o:"
lPrgObjRule := .T.
ENDIF
ENDIF // end Ath added 31-05-2006
IF cTemp == "#BUILD" .OR. cTemp == "#COMMANDS"
cBuffer := cTemp
ENDIF
ENDDO
qout( nhandle)
Fclose( nHandle )
RETURN self
*--------------------------------------------
METHOD ReplaceMacros( cMacros ) CLass THBMAKE
*--------------------------------------------
LOCAL nCount := 0
LOCAL aTempMacros := {}
LOCAL aLocalMacros := {}
LOCAL nCount := 0
LOCAL aTempMacros := {}
LOCAL aLocalMacros := {}
aTempMacros := Listasarray2( cMacros, " " )
aTempMacros := Listasarray2( cMacros, " " )
AEval( aTempMacros, { | xMacro | iif( At( "$", xMacro ) > 0, ;
iif( At( ";", xMacro ) > 0, ( aLocalMacros := Listasarray2( xMacro, ";" ), ;
Aeval( aLocalMacros, { | x | ::FindMacro( x, @cMacros ) } ) ), ;
::FindMacro( xMacro, @cMacros ) ), ) } )
AEval( aTempMacros, { | xMacro | iif( At( "$", xMacro ) > 0, ;
iif( At( ";", xMacro ) > 0, ( aLocalMacros := Listasarray2( xMacro, ";" ), ;
Aeval( aLocalMacros, { | x | ::FindMacro( x, @cMacros ) } ) ), ;
::FindMacro( xMacro, @cMacros ) ), ) } )
RETURN cMacros
RETURN cMacros
*----------------------------------------------
METHOD FindMacro( cMacro, cRead ) CLASS THBMAKE
*----------------------------------------------
LOCAL nPos
LOCAL cTemp
LOCAL aLocalMacros := {}
LOCAL nPos
LOCAL cTemp
LOCAL aLocalMacros := {}
cMacro := Left( cMacro, At( ")", cMacro ) )
cMacro := Substr( cMacro, 1, At( ")", cMacro ) )
IF At( "-", cMacro ) > 0
cMacro := Substr( cMacro, 3 )
ENDIF
IF At( "-", cMacro ) > 0
cMacro := Substr( cMacro, 3 )
ENDIF
IF At( ";", cMacro ) > 0
cMacro := Substr( cMacro, At( ";", cMacro ) + 1 )
ENDIF
IF At( ";", cMacro ) > 0
cMacro := Substr( cMacro, At( ";", cMacro ) + 1 )
ENDIF
nPos := Ascan( ::aMacros, { | x | "$(" + Alltrim( x[ 1 ] ) + ")" == cMacro } )
nPos := Ascan( ::aMacros, { | x | "$(" + Alltrim( x[ 1 ] ) + ")" == cMacro } )
IF nPos == 0
IF nPos == 0
cTemp := Strtran( cMacro, "$(", "" )
cTemp := Strtran( cTemp, ")", "" )
cTemp := Strtran( cMacro, "$(", "" )
cTemp := Strtran( cTemp, ")", "" )
IF !Empty( cTemp )
cRead := Alltrim( Strtran( cRead, cMacro, Gete( cTemp ) ) )
ENDIF
ELSE
cRead := Alltrim( Strtran( cRead, cMacro, ::aMacros[ nPos, 2 ] ) )
ENDIF
IF !Empty( cTemp )
cRead := Alltrim( Strtran( cRead, cMacro, Gete( cTemp ) ) )
ENDIF
ELSE
cRead := Alltrim( Strtran( cRead, cMacro, ::aMacros[ nPos, 2 ] ) )
ENDIF
RETURN cRead
RETURN cRead