Code: Select all
;{
declareModule float
;{ //
interFace iBase
;{ //
queryInterface ( *riid,
*addr )
addRef ( )
release ( )
toCharacter$ ( )
toString$ ( )
set ( value. d )
;} //
endInterFace
structure base
;{ //
*virtual
instances. i
mutex. i
value. d
;} //
endStructure
declare new ( value. d = 0 )
;} //
endDeclareModule
module float
;{ //
;{ //
procedure queryInterface ( *this. base,
*riid,
*addr )
;{ //
procedureReturn ( $80004002 )
;} //
endProcedure
procedure addRef ( *this. base )
;{ //
lockMutex ( *this\ mutex )
*this\ instances + 1
unlockMutex ( *this\ mutex )
procedureReturn ( *this\ instances )
;} //
endProcedure
procedure release ( *this. base )
;{ //
protected index
protected instances
lockMutex ( *this\ mutex )
if ( not ( *this\ instances ) )
;{ //
freeMutex ( *this\ mutex )
freeStructure ( *this )
procedureReturn
;}
else
;{
*this\ instances - 1
;} //
endIf
unlockMutex ( *this\ mutex )
procedureReturn ( *this\ instances )
;} //
endProcedure
;} //
procedure new ( value. d = 0 )
;{ //
protected *object. base = allocateStructure ( base )
if ( *object )
;{ //
*object\ virtual = ?vtVars
*object\ mutex = createMutex ( )
*object\ instances = 1
*object\ value = value
;}
endIf
procedureReturn ( *object )
;} //
endProcedure
;{ // object methods
procedure set ( *this. base,
value. d )
;{ //
*this\ value = value
;} //
endProcedure
procedure$ toCharacter ( *this. base )
;{ //
procedureReturn ( chr ( int ( *this\ value ) ) )
;} //
endProcedure
procedure$ toString ( *this. base )
;{ //
procedureReturn ( str ( int ( *this\ value ) ) )
;} //
endProcedure
;} //
dataSection
;{ //
vtVars:
data. i @ queryInterface ( )
data. i @ addRef ( )
data. i @ release ( )
data. i @ toCharacter ( )
data. i @ toString ( )
data. i @ set ( )
;} //
endDataSection
;} //
endModule
;}
;{ // main
openConsole ( "" )
*float. float::iBase = float::new ( 33 )
printN ( *float\ toCharacter$ ( ) )
printN ( "Chr() of the number " + *float\ toString$ ( ) )
input ( )
;} //
Since the PB IDE does not fully support these features... Is there any editor supporting some of these features right now?