From fec7bc744816be29d7d45a7a14999261ebe20654 Mon Sep 17 00:00:00 2001 From: Teo Fonrouge Date: Tue, 25 Sep 2007 05:55:44 +0000 Subject: [PATCH] 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: [n] : access assign is not implemented ( [n] := ) negative index is not implemented ( [-n] ) + added "$" operator overloading for the following type classes: HBCharacter : $ HBDate : $ HBLogical : $ HBNil : $ HBNumeric : $ ; all the new extended types, has a ::ClassName with the "HB" prefix. --- harbour/ChangeLog | 16 +++++ harbour/contrib/xhb/xhbcomp.prg | 122 ++++++++++++++++++++++++++++++++ 2 files changed, 138 insertions(+) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 86d4a0a427..fb48a7841e 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,22 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +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: + [n] : access + assign is not implemented ( [n] := ) + negative index is not implemented ( [-n] ) + + + added "$" operator overloading for the following type classes: + HBCharacter : $ + HBDate : $ + HBLogical : $ + HBNil : $ + HBNumeric : $ + + ; 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 diff --git a/harbour/contrib/xhb/xhbcomp.prg b/harbour/contrib/xhb/xhbcomp.prg index ad8ba4bb03..9fe8af436d 100644 --- a/harbour/contrib/xhb/xhbcomp.prg +++ b/harbour/contrib/xhb/xhbcomp.prg @@ -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 [n] := +* 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 "$" // $ 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 "$" // $ 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 +*/