* include/hbapi.h
* source/rtl/empty.c
* source/rtl/idle.c
* source/vm/arrays.c
* source/vm/estack.c
* source/vm/extend.c
* source/vm/itemapi.c
* added missing code to use HB_IT_POINTER just like
other value's type
You can use:
hb_retptr( void * pointer )
hb_parptr( ) -> void *
hb_storptr( void * pointer, ...... )
to return/manage pointers from low level functions.
For example:
p = GET_SOME_POINTER()
? VALTYPE(p) //prints: 'P'
? p //prints: 0x12345678
* tests/onidle.prg
* fixed to use values of pointer type
* tests/tstmacro.prg
* added code to test TYPE() function
77 lines
1.7 KiB
Plaintext
77 lines
1.7 KiB
Plaintext
//
|
|
// $Id$
|
|
//
|
|
|
|
#include "hbmemory.ch"
|
|
|
|
FUNCTION MAIN
|
|
LOCAL nH1, nH2, nH3, nH4
|
|
LOCAL n:=0
|
|
LOCAL aSign:={"|", "/", "-", "\" }
|
|
LOCAL nPrev:=SECONDS()
|
|
|
|
CLS
|
|
? " Time: Memory used: Miliseconds elapsed"
|
|
?
|
|
? "Can you see it ??? :) Press any key or wait 30 seconds"
|
|
?
|
|
?
|
|
@ 10,2 SAY "Memory before TEST() call" + STR( MEMORY(HB_MEM_USED) )
|
|
TEST()
|
|
@ 11,2 SAY "Memory after TEST() and before collecting" + STR( MEMORY(HB_MEM_USED) )
|
|
HB_GCALL()
|
|
@ 12,2 SAY "Memory after collecting" + STR( MEMORY(HB_MEM_USED) )
|
|
nH1 = HB_IDLEADD( {|| DEVPOS(0,01), DEVOUT( TIME() ) } )
|
|
nH2 = HB_IDLEADD( {|| DEVPOS(0,21), TEST(), DEVOUT( MEMORY(HB_MEM_USED) ) } )
|
|
nH3 = HB_IDLEADD( {|| DEVPOS(0,41), IIF(n=4,n:=1,n++),DEVOUT(aSign[n]) } )
|
|
nH4 = HB_IDLEADD( {|| DEVPOS(0,61), DEVOUT( 1000*(SECONDS()-nPrev) ), nPrev:=SECONDS() } )
|
|
|
|
? VALTYPE(nH1), nH1, VALTYPE(nH2), nH2, VALTYPE(nH3), nH3, VALTYPE(nH4), nH4
|
|
|
|
INKEY( 30 )
|
|
IF( !EMPTY(nH3) )
|
|
@ 14,2 SAY "Delete task 3: " + HB_VALTOSTR(nH3)
|
|
HB_IDLEDEL( nH3 )
|
|
ENDIF
|
|
IF( !EMPTY(nH2) )
|
|
@ 15,2 SAY "Delete task 2: " + HB_VALTOSTR(nH2)
|
|
HB_IDLEDEL( nH2 )
|
|
ENDIF
|
|
IF( !EMPTY(nH1) )
|
|
@ 16,2 SAY "Delete task 1: " + HB_VALTOSTR(nH1)
|
|
HB_IDLEDEL( nH1 )
|
|
ENDIF
|
|
IF( !EMPTY(nH4) )
|
|
@ 17,2 SAY "Delete task 4: " + HB_VALTOSTR(nH4)
|
|
HB_IDLEDEL( nH4 )
|
|
ENDIF
|
|
|
|
@ 18,2 SAY "Memory after idle states" + STR( MEMORY(HB_MEM_USED) )
|
|
HB_GCALL()
|
|
@ 19,2 SAY "Memory after collecting" + STR( MEMORY(HB_MEM_USED) )
|
|
|
|
RETURN 1
|
|
|
|
PROC TEST()
|
|
LOCAL a, b, c
|
|
LOCAL cb
|
|
|
|
a := ARRAY( 3 )
|
|
b := ARRAY( 3 )
|
|
c := ARRAY( 3 )
|
|
a[1] :=a
|
|
a[2] :=b
|
|
a[3] :=c
|
|
b[1] :=a
|
|
b[2] :=b
|
|
b[3] :=c
|
|
c[1] :=a
|
|
c[2] :=b
|
|
c[3] :=c
|
|
|
|
cb := {|x| x:=cb}
|
|
EVAL( cb )
|
|
|
|
RETURN
|
|
|