* tests/testsha1.prg
* tests/longdev.prg
* tests/clsccast.prg
* tests/cmphello.prg
* tests/clsicast.prg
* tests/testop.prg
* tests/clsscast.prg
* tests/objarr.prg
* tests/rddtest/rddmktst.prg
* tests/rddtest/adscl52.prg
* tests/rddtest/adscl53.prg
* tests/rddtest/ntxcl52.prg
* tests/rddtest/ntxcl53.prg
* tests/rddtest/cdxcl52.prg
* tests/rddtest/rddtst.prg
* tests/rddtest/cdxcl53.prg
* tests/transtst.prg
* tests/output.prg
* tests/ac_test2.prg
* tests/clsscope.prg
* tests/dosshell.prg
* tests/sbartest.prg
* tests/speedold.prg
* tests/sdf_test.prg
* tests/wcecon.prg
* tests/debugtst.prg
* tests/testdyn.c
* tests/multiarg.prg
* tests/fornext.prg
* tests/hbinline.prg
* tests/foreach2.prg
* tests/objasign.prg
* tests/scroll.prg
* tests/inherit.prg
* tests/rto_get.prg
* tests/boxtst2.prg
* tests/inkeytst.prg
* tests/overload.prg
* tests/cpinfo.prg
* tests/gtwin.prg
* tests/mt/mttest08.prg
* tests/mt/mttest09.prg
* tests/mt/mttest01.prg
* tests/mt/mttest10.prg
* tests/mt/mttest02.prg
* tests/mt/mttest11.prg
* tests/mt/mttest03.prg
* tests/mt/mttest12.prg
* tests/mt/mttest04.prg
* tests/mt/mttest05.prg
* tests/mt/mttest06.prg
* tests/mt/mttest07.prg
* tests/speedtst.prg
* tests/testsha2.prg
* tests/hsxtest.prg
* tests/arrayidx.prg
* tests/clsnv.prg
* tests/rto_tb.prg
* tests/gtchars.prg
* tests/disptest.prg
* tests/funcarr.prg
* tests/testhtml.prg
* tests/readhrb.prg
* tests/tstcolor.prg
* tests/gtxfnt.prg
* tests/devtest.prg
* tests/aliaslck.prg
* tests/stripem.prg
* tests/dynobj.prg
* tests/tb1.prg
* tests/round.prg
* tests/longstr.prg
* tests/testdyn.prg
* tests/testdyn1.prg
* tests/delimtst.prg
* tests/tstdspac.prg
* tests/version.prg
* tests/setkeys.prg
* tests/gtcolors.prg
* tests/destruct.prg
* tests/seconds.prg
* tests/gtkeys.prg
* tests/usrrdd/exarr.prg
* doc/en/diskspac.txt
* doc/en/string.txt
* doc/en/rdd.txt
* doc/en/hashes.txt
* doc/en/hb_apigt.txt
* doc/en/rddord.txt
* doc/en/hb_api.txt
* doc/en/hb_date.txt
* doc/en/math.txt
* doc/en/hb_vm.txt
* doc/en/treport.txt
* doc/en/terminal.txt
* doc/en/hb_apiln.txt
* doc/en/dir.txt
* doc/en/command.txt
* doc/en/rddmisc.txt
* doc/en/errsys.txt
* doc/en/nation.txt
* doc/en/var.txt
* doc/en/dbstrux.txt
* doc/en/datetime.txt
* doc/en/memo.txt
* doc/en/tgetlist.txt
* doc/en/tlabel.txt
* doc/en/1stread.txt
* doc/en/hb_set.txt
* doc/en/hb_compa.txt
* doc/en/hb_apier.txt
* doc/en/hbinet.txt
* doc/en/hb_macro.txt
* doc/en/array.txt
* doc/en/hb_apiit.txt
* doc/en/rdddb.txt
* doc/en/dbsdf.txt
* doc/en/hvm.txt
* doc/en/input.txt
* doc/en/dbdelim.txt
* doc/en/browse.txt
* doc/en/menu.txt
* doc/en/hb_apird.txt
* doc/en/hb_apifs.txt
* doc/en/file.txt
* doc/en/lang.txt
* doc/en/objfunc.txt
* doc/en/eval.txt
* doc/en/binnum.txt
* doc/en/tclass.txt
* doc/en/misc.txt
* doc/en/set.txt
* doc/en/readme.txt
* doc/man/harbour.1
* doc/man/hbmk2.1
* doc/man/hbpp.1
* doc/man/hbtest.1
* doc/man/hbrun.1
* examples/hbextern/hbextern.prg
* examples/pp/pp.c
* examples/pp/hbpragma.c
* examples/pp/hbppcore.c
* examples/pp/hbppcomp.c
* examples/pp/hbpptbl.c
* examples/pp/hbppdef.h
* examples/superlib/hbsuper.prg
* examples/hbsqlit2/hbsqlit2.ch
* examples/misc/mankala.prg
* examples/misc/guess.prg
* examples/rddado/adordd.prg
* examples/rddado/adordd.ch
* examples/hbapollo/apollo.ch
* examples/hbapollo/apollo.c
* examples/hbapollo/apollo1.prg
* examples/hbdoc2/gentpl.prg
* examples/hbdoc2/gentxt.prg
* examples/hbdoc2/tmplates.prg
* examples/hbdoc2/genxml.prg
* examples/hbdoc2/genhtml.prg
* examples/hbdoc2/hbdoc2.prg
* examples/hbdoc2/hbdoc2.ch
* examples/guestbk/guestbk.prg
* examples/httpsrv/uhttpd.ini
* examples/httpsrv/uhttpd.prg
* examples/httpsrv/cookie.prg
* examples/httpsrv/cgifunc.prg
* examples/httpsrv/session.prg
* examples/terminal/trm_cli.prg
* examples/terminal/terminal.prg
* examples/terminal/trm_srv.prg
* examples/terminal/trm_app.prg
* examples/hbbtree/hb_btree.h
* examples/hbbtree/hb_btree.ch
* examples/hbbtree/hb_btree.c
* examples/hbbtree/tbtree.prg
* examples/hscript/hscript.prg
* examples/hscript/dir.hs
* examples/hscript/multiply.hs
* examples/hscript/ugly.hs
* examples/hscript/hello.hs
* examples/gtwvw/hbole.h
* examples/gtwvw/wvwdraw.c
* examples/gtwvw/wvwmenu.c
* examples/gtwvw/gtwvw.c
* examples/gtwvw/wvwstbar.c
* examples/gtwvw/wvwcheck.c
* examples/gtwvw/wvwfuncs.c
* examples/gtwvw/wvwpush.c
* examples/gtwvw/wvwedit.c
* examples/gtwvw/wvwtbar.c
* examples/gtwvw/hbgtwvw.h
* Deleted 'www.' from harbour-project.org website name.
(www.harbour-project.org -> harbour-project.org)
258 lines
6.5 KiB
Plaintext
258 lines
6.5 KiB
Plaintext
//
|
|
// $Id$
|
|
//
|
|
|
|
/*
|
|
* $Doc$
|
|
* $Description$ Debug function tests.
|
|
* Based on classes.prg
|
|
* $Requirement$ source\tools\stringp.prg
|
|
* source\rtl\objfunc.prg
|
|
* source\rtl\asort.prg
|
|
* $End$
|
|
*
|
|
* Written by Eddie Runia <eddie@runia.com>
|
|
* www - http://harbour-project.org
|
|
*
|
|
* Placed in the public domain
|
|
*/
|
|
|
|
function Main()
|
|
|
|
local oForm := TForm():New()
|
|
local nNumber := 15
|
|
|
|
QOut( oForm:ClassName() )
|
|
oForm:Show()
|
|
QOut()
|
|
|
|
QOut( "-OBJECT additions-" )
|
|
QOut( "What is in oForm ? " )
|
|
Debug( oForm:Transfer() )
|
|
|
|
QOut( "Does transfer exists ? ", __objHasMsg ( oForm, "Transfer" ) )
|
|
QOut( "Is transfer DATA ? ", __objHasData ( oForm, "Transfer" ) )
|
|
QOut( "Is transfer METHOD ? ", __objHasMethod( oForm, "Transfer" ) )
|
|
QOut( "Does nLeft exists ? ", __objHasMsg ( oForm, "nLeft" ) )
|
|
QOut( "Is nLeft DATA ? ", __objHasData ( oForm, "nLeft" ) )
|
|
QOut( "Is nLeft METHOD ? ", __objHasMethod( oForm, "nLeft" ) )
|
|
QOut( "Does unknown exists ? ", __objHasMsg ( oForm, "Unknown" ) )
|
|
QOut( "Is unknown DATA ? ", __objHasData ( oForm, "Unknown" ) )
|
|
QOut( "Is unknown METHOD ? ", __objHasMethod( oForm, "Unknown" ) )
|
|
|
|
QOut( "Set nLeft to 50 and nRight to 100" )
|
|
oForm:Transfer( {"nLeft", 50}, {"nRight", 100} )
|
|
Debug( oForm:Transfer() )
|
|
|
|
Pause()
|
|
|
|
|
|
QOut( "-DEBUG Functions-")
|
|
QOut( "-Statics-" )
|
|
Debug( __dbgvmVarSList() )
|
|
|
|
QOut( "-Global Stack-" )
|
|
Debug ( __dbgvmStkGList() )
|
|
|
|
QOut( "-Local Stack-" )
|
|
Debug ( __dbgvmStkLList() )
|
|
|
|
QOut( "-Parameters-" )
|
|
Debug ( __dbgvmParLList() )
|
|
|
|
Pause()
|
|
|
|
FuncSecond( 241, "Hello" )
|
|
|
|
return nil
|
|
|
|
|
|
function Pause()
|
|
return __Accept("")
|
|
|
|
|
|
function FuncSecond( nParam, cParam, uParam )
|
|
|
|
local cWhat := "Something"
|
|
local nNumber := 2
|
|
local xParam
|
|
local xStack
|
|
|
|
QOut()
|
|
QOut( "-Second procedure-")
|
|
QOut()
|
|
|
|
QOut( "-Statics-" )
|
|
Debug ( __dbgvmVarSList() )
|
|
QOut()
|
|
|
|
QOut( "-Global Stack- Len=", __dbgvmStkGCount() )
|
|
Debug ( __dbgvmStkGList() )
|
|
QOut()
|
|
|
|
QOut( "-Local Stack- Len=", __dbgvmStkLCount() )
|
|
xStack := Debug ( __dbgvmStkLList() )
|
|
QOut()
|
|
|
|
QOut( "-Parameters-" )
|
|
xParam := Debug( __dbgvmParLList() )
|
|
if xParam[ xStack[ 7 ] ] == "Hello"
|
|
QOut( ":-)" )
|
|
endif
|
|
|
|
Pause()
|
|
|
|
return nil
|
|
|
|
|
|
/* $Doc$
|
|
* $FuncName$ <oForm> TForm()
|
|
* $Description$ Returns TForm object
|
|
* $End$ */
|
|
function TForm()
|
|
|
|
static oClass
|
|
|
|
if oClass == nil
|
|
oClass := HBClass():New( "TFORM" ) // starts a new class definition
|
|
|
|
oClass:AddData( "cName" ) // define this class objects datas
|
|
oClass:AddData( "nTop" )
|
|
oClass:AddData( "nLeft" )
|
|
oClass:AddData( "nBottom" )
|
|
oClass:AddData( "nRight" )
|
|
|
|
oClass:AddVirtual( "aExcept" ) // Export exceptions
|
|
|
|
oClass:AddMethod( "New", @New() ) // define this class objects methods
|
|
oClass:AddMethod( "Show", @Show() )
|
|
oClass:AddMethod( "Transfer", @Transfer() )
|
|
|
|
oClass:Create() // builds this class
|
|
endif
|
|
|
|
return oClass:Instance() // builds an object of this class
|
|
|
|
|
|
/* $Doc$
|
|
* $FuncName$ <oForm> TForm:New()
|
|
* $Description$ Constructor
|
|
* $End$ */
|
|
static function New()
|
|
|
|
local Self := QSelf()
|
|
|
|
::nTop := 10
|
|
::nLeft := 10
|
|
::nBottom := 20
|
|
::nRight := 40
|
|
|
|
return Self
|
|
|
|
|
|
/* $Doc$
|
|
* $FuncName$ TForm:Show()
|
|
* $Description$ Show a form
|
|
* $End$ */
|
|
static function Show()
|
|
|
|
local Self := QSelf()
|
|
|
|
QOut( "lets show a form from here :-)" )
|
|
|
|
return nil
|
|
|
|
|
|
//
|
|
// <xRet> TForm:Transfer( [<xArg,..>] )
|
|
//
|
|
// Generic object import and export function
|
|
//
|
|
// <xArg> is present.
|
|
//
|
|
// Maximum number of arguments passed is limited to 10 !
|
|
//
|
|
// An argument can be one of the following :
|
|
//
|
|
// { <cSymbol>, <xValue> } Set DATA <cSymbol> to <xValue>
|
|
// { { <cSym1>, <xVal1> }, { <cSym2>, <xVal2> }, ... }
|
|
// Set a whole list symbols to value
|
|
// Normal way of set objects from external
|
|
// sources, like memo files.
|
|
// <oObject> Set self according to the DATA
|
|
// contained in <oObject>
|
|
// Can be used to transfer info from
|
|
// one class to another
|
|
//
|
|
// If <xArg> is not present, the current object will be returned as an array
|
|
// for description see __objSetValueList / __objGetValueList.
|
|
//
|
|
// The method aExcept() is called to determine the DATA which should not
|
|
// be returned. Eg. hWnd ( do not copy this DATA from external source )
|
|
//
|
|
// Say we want to copy oSource into oTarget we say :
|
|
//
|
|
// oTarget:Transfer( oSource )
|
|
//
|
|
// If we do not want 'cName' duplicated we have to use __objGetValueList :
|
|
//
|
|
// aNewExcept := aClone( oSource:aExcept() )
|
|
// aAdd( aNewExcept, "cName" ) /* Add cName to exception list */
|
|
// oTarget:Transfer( __objGetValueList( oSource, aNewExcept ) )
|
|
// /* Get DATA from oSource with new exceptions */
|
|
// /* Transfer DATA to oTarget */
|
|
//
|
|
// To set two DATA of oTarget :
|
|
//
|
|
// oTarget:Transfer( { "nLeft", 10 }, { "nRight", 5 } )
|
|
//
|
|
// or :
|
|
//
|
|
// aCollect := {}
|
|
// aAdd( aCollect, { "nLeft" , 10 } )
|
|
// aAdd( aCollect, { "nRight", 5 } )
|
|
// oTarget:Transfer( aCollect )
|
|
//
|
|
// Copy oSource to a memo field :
|
|
//
|
|
// DbObject->Memo := oSource:Transfer()
|
|
//
|
|
// (Re)create oTarget from the memo field :
|
|
//
|
|
// oTarget := TTarget():New()
|
|
// oTarget:Transfer( DbObject->Memo )
|
|
//
|
|
static function Transfer( x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 /* etc */ )
|
|
|
|
local self := QSelf()
|
|
local aParam := __dbgvmParLList()
|
|
local nLen := PCount()
|
|
local xRet
|
|
local xData
|
|
local n
|
|
|
|
if nLen == 0
|
|
xRet := __objGetValueList( self, ::aExcept() )
|
|
else
|
|
for n := 1 to nLen
|
|
|
|
xData := aParam[ n ]
|
|
if ValType( xData ) == "A"
|
|
|
|
if ValType( xData[1] ) == "A" // 2D array passed
|
|
xRet := __objSetValueList( self, xData )
|
|
else // 1D array passed
|
|
xRet := __objSetValueList( self, {xData} )
|
|
endif
|
|
|
|
elseif ValType( xData ) == "O" // Object passed
|
|
xRet := ::Transfer( xData:Transfer() )
|
|
elseif ValType( xData ) != "U"
|
|
QOut( "TRANSFER: Incorrect argument(", n, ") ", xData )
|
|
endif
|
|
|
|
next n
|
|
endif
|
|
|
|
return xRet
|