2007-09-25 00:55 UTC-0500 Teo Fonrouge (teo/at/windtelsoft/dot/com)

* contrib/xhb/xhbcomp.prg
    + added "[]" operator overloading for the HBCharacter type class:
      <string>[n] : access
      assign is not implemented ( <string>[n] := <char> )
      negative index is not implemented ( <string>[-n] )

    + added "$" operator overloading for the following type classes:
      HBCharacter : <char> $ <array|hash>
      HBDate      : <date> $ <array|hash>
      HBLogical   : <logical> $ <array|hash>
      HBNil       : <nil> $ <array|hash>
      HBNumeric   : <numeric> $ <array|hash>

    ; all the new extended types, has a ::ClassName with the "HB" prefix.
This commit is contained in:
Teo Fonrouge
2007-09-25 05:55:44 +00:00
parent d71fa590e7
commit fec7bc7448
2 changed files with 138 additions and 0 deletions

View File

@@ -8,6 +8,22 @@
2002-12-01 13:30 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
2007-09-25 00:55 UTC-0500 Teo Fonrouge (teo/at/windtelsoft/dot/com)
* contrib/xhb/xhbcomp.prg
+ added "[]" operator overloading for the HBCharacter type class:
<string>[n] : access
assign is not implemented ( <string>[n] := <char> )
negative index is not implemented ( <string>[-n] )
+ added "$" operator overloading for the following type classes:
HBCharacter : <char> $ <array|hash>
HBDate : <date> $ <array|hash>
HBLogical : <logical> $ <array|hash>
HBNil : <nil> $ <array|hash>
HBNumeric : <numeric> $ <array|hash>
; all the new extended types, has a ::ClassName with the "HB" prefix.
2007-09-25 04:30 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* contrib/xhb/Makefile
* contrib/xhb/xhbfunc.c

View File

@@ -51,6 +51,7 @@
*/
#include "common.ch"
#include "hbclass.ch"
ANNOUNCE XHB_LIB
@@ -77,3 +78,124 @@ FUNCTION xhb_ADel( a, n, l )
ENDIF
RETURN a
/*
* Overloading of "$","[]" operators in scalar classes
* "$" is done for types:
* HBCharacter
* HBDate
* HBLogical
* HBNil
* HBNumeric
* // HBPointer
* // HBSymbol
* "[]" is only for HBCharacter type
* TODO: assign. in the form <string>[n] := <char>
* 2007 tfonrouge
*/
/*
HBScalar
*/
CLASS HBScalar
METHOD IsIn OPERATOR "$"
ENDCLASS
/*
HBScalar:IsIn : "$" operator
*/
METHOD IsIn( itm ) CLASS HBScalar
IF HB_IsArray( itm )
RETURN AScan( itm, Self ) > 0
ENDIF
IF HB_IsHash( itm )
RETURN HB_HHasKey( itm, Self )
ENDIF
/*
* we need to raise a error here ? when ?
*/
RETURN .F. /* */
/*
HBArray
*/
CLASS HBArray FROM HBScalar
METHOD IsIn OPERATOR "$" // <array> $ <any> returns .F.
ENDCLASS
/*
HBArray:IsIn : "$" operators
*/
METHOD IsIn CLASS HBArray
RETURN .F.
/*
HBCharacter
*/
CLASS HBCharacter FROM HBScalar
METHOD Index OPERATOR "[]"
ENDCLASS
/*
HBCharacter:Index
*/
METHOD Index( n/*, char*/ ) CLASS HBCharacter
/*
IF PCount()>1
Self := Stuff( Self, n, Len( char ), char )
RETURN Self
ENDIF
*/
RETURN SubStr( Self, n , 1 )
/*
HBDate
*/
CLASS HBDate FROM HBScalar
ENDCLASS
/*
HBHash
*/
CLASS HBHash FROM HBScalar
METHOD IsIn OPERATOR "$" // <hash> $ <any> returns .F.
ENDCLASS
/*
HBHash:IsIn : "$" operators
*/
METHOD IsIn CLASS HBHash
RETURN .F.
/*
HBLogical
*/
CLASS HBLogical FROM HBScalar
ENDCLASS
/*
HBNil
*/
CLASS HBNil FROM HBScalar
ENDCLASS
/*
HBNumeric
*/
CLASS HBNumeric FROM HBScalar
ENDCLASS
/*
HBPointer
*/
/*
CLASS HBPointer FROM HBScalar
ENDCLASS
*/
/*
HBSymbol
*/
/*
CLASS HBSymbol FROM HBScalar
ENDCLASS
*/