From b724106c91a0ec6e271cd79c513514e88ecb0d74 Mon Sep 17 00:00:00 2001 From: Antonio Linares Date: Tue, 4 Sep 2001 09:30:38 +0000 Subject: [PATCH] some improvements for arrays --- harbour/source/rtl/persist.prg | 58 +++++++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/harbour/source/rtl/persist.prg b/harbour/source/rtl/persist.prg index e5dcda56b6..c4b15d51a4 100644 --- a/harbour/source/rtl/persist.prg +++ b/harbour/source/rtl/persist.prg @@ -102,14 +102,12 @@ METHOD SaveToText( cObjectName ) CLASS TPersistent otherwise cObject += Space( nIndent ) + " ::" + aProperties[ n ] + " = " + ; - If( ValType( uValue ) == "C", '"', "" ) + ; - HB_ValToStr( uValue ) + ; - If( ValType( uValue ) == "C", '"', "" ) + ValToText( uValue ) endcase cObject += HB_OsNewLine() next - cObject += HB_OsNewLine() + Space( nIndent ) + "ENDOBJECT" + cObject += HB_OsNewLine() + Space( nIndent ) + "ENDOBJECT" + HB_OsNewLine() nIndent -= 3 if nIndent > 0 cObject += HB_OsNewLine() @@ -121,15 +119,53 @@ static function ArrayToText( aArray, cName, nIndent ) local cArray := Space( nIndent ) + "ARRAY ::" + cName + " LEN " + ; AllTrim( Str( Len( aArray ) ) ) + HB_OsNewLine() + HB_OsNewLine() - local n, uValue + local n, uValue, cType for n = 1 to Len( aArray ) - if __objDerivedFrom( aArray[ n ], "TPERSISTENT" ) - cArray += aArray[ n ]:SaveToText( cName + "[ " + AllTrim( Str( n ) ) + ; - " ]" ) + HB_OsNewLine() - endif + uValue = aArray[ n ] + cType = ValType( uValue ) + + do case + case cType == "A" + nIndent += 3 + cArray += HB_OsNewLine() + ArrayToText( uValue, cName + "[ " + ; + AllTrim( Str( n ) ) + " ]", nIndent ) + HB_OsNewLine() + nIndent -= 3 + + case cType == "O" + if __objDerivedFrom( uValue, "TPERSISTENT" ) + cArray += uValue:SaveToText( cName + "[ " + AllTrim( Str( n ) ) + ; + " ]" ) + HB_OsNewLine() + endif + + otherwise + cArray += Space( nIndent ) + " ::" + cName + ; + + "[ " + AllTrim( Str( n ) ) + " ]" + " = " + ; + ValToText( uValue ) + HB_OsNewLine() + endcase next - cArray += Space( nIndent ) + "ENDARRAY" + cArray += HB_OsNewLine() + Space( nIndent ) + "ENDARRAY" + HB_OsNewLine() -return cArray \ No newline at end of file +return cArray + +static function ValToText( uValue ) + + local cType := ValType( uValue ) + local cText + + do case + case cType == "C" + cText = '"' + uValue + '"' + + case cType == "N" + cText = AllTrim( Str( uValue ) ) + + case cType == "D" + cText = 'CToD( "' + DToC( uValue ) + '" )' + + otherwise + cText = HB_ValToStr( uValue ) + endcase + +return cText \ No newline at end of file