Changeset: 361 fdbozzo - 14/07/2014 18:20:21:

Optimizaciones sobre el código de Doug Hennig
This commit is contained in:
fdbozzo
2014-07-15 20:38:03 +02:00
parent f69cdd73c9
commit dfd5386ab1

View File

@@ -272,7 +272,7 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb
*** DH 06/02/2014: added additional constants *** DH 06/02/2014: added additional constants
#DEFINE C_RECORDS_I '<RECORDS>' #DEFINE C_RECORDS_I '<RECORDS>'
#DEFINE C_RECORDS_F '</RECORDS>' #DEFINE C_RECORDS_F '</RECORDS>'
#DEFINE C_RECORD_I '<RECORD>' #DEFINE C_RECORD_I '<RECORD num="##">' && *** FDBOZZO 2014/07/15: Optimized RECORD tag adding num property to not use REGNUM field
#DEFINE C_RECORD_F '</RECORD>' #DEFINE C_RECORD_F '</RECORD>'
#DEFINE C_RECNO_I '<RECNO>' #DEFINE C_RECNO_I '<RECNO>'
#DEFINE C_RECNO_F '</RECNO>' #DEFINE C_RECNO_F '</RECNO>'
@@ -11726,13 +11726,13 @@ DEFINE CLASS CL_DBC_COL_BASE AS CL_COL_BASE
* tnParentID (v! IN ) ID del objeto Padre * tnParentID (v! IN ) ID del objeto Padre
*--------------------------------------------------------------------------------------------------- *---------------------------------------------------------------------------------------------------
LPARAMETERS tc_OutputFile, tnLastID, tnParentID LPARAMETERS tc_OutputFile, tnLastID, tnParentID
LOCAL loObject LOCAL loObject
loObject = NULL loObject = NULL
FOR EACH loObject IN THIS FOXOBJECT FOR EACH loObject IN THIS FOXOBJECT
loObject.updateDBC( tc_OutputFile, @tnLastID, tnParentID ) loObject.updateDBC( tc_OutputFile, @tnLastID, tnParentID )
loObject = NULL loObject = NULL
ENDFOR ENDFOR
RETURN RETURN
ENDPROC ENDPROC
@@ -15288,7 +15288,7 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE
*-- *--
THIS.ADDOBJECT("_Fields", "CL_DBF_FIELDS") THIS.ADDOBJECT("_Fields", "CL_DBF_FIELDS")
THIS.ADDOBJECT("_Indexes", "CL_DBF_INDEXES") THIS.ADDOBJECT("_Indexes", "CL_DBF_INDEXES")
*** DH 06/02/2014: added _Records *** DH 06/02/2014: added _Records
THIS.ADDOBJECT("_Records", "CL_DBF_RECORDS") THIS.ADDOBJECT("_Records", "CL_DBF_RECORDS")
ENDPROC ENDPROC
@@ -15381,6 +15381,9 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE
LOCAL lcText, loEx AS EXCEPTION ; LOCAL lcText, loEx AS EXCEPTION ;
, loFields AS CL_DBF_FIELDS OF 'FOXBIN2PRG.PRG' ; , loFields AS CL_DBF_FIELDS OF 'FOXBIN2PRG.PRG' ;
, loIndexes AS CL_DBF_INDEXES OF 'FOXBIN2PRG.PRG' , loIndexes AS CL_DBF_INDEXES OF 'FOXBIN2PRG.PRG'
*** DH 06/02/2014: created variables
LOCAL laFields[1], lnFieldCount
STORE NULL TO loIndexes, loFields STORE NULL TO loIndexes, loFields
lcText = '' lcText = ''
@@ -15395,21 +15398,17 @@ DEFINE CLASS CL_DBF_TABLE AS CL_CUS_BASE
<<>> <FileType_Descrip><<tc_FileTypeDesc>></FileType_Descrip> <<>> <FileType_Descrip><<tc_FileTypeDesc>></FileType_Descrip>
ENDTEXT ENDTEXT
*** DH 06/02/2014: created variables
local laFields[1], lnFieldCount
*-- Fields *-- Fields
loFields = THIS._Fields loFields = THIS._Fields
*** DH 06/02/2014: passed variables to toText *** DH 06/02/2014: passed variables to toText
* lcText = lcText + loFields.toText()
lcText = lcText + loFields.toText(@laFields, @lnFieldCount) lcText = lcText + loFields.toText(@laFields, @lnFieldCount)
*-- Indexes *-- Indexes
loIndexes = THIS._Indexes loIndexes = THIS._Indexes
lcText = lcText + loIndexes.toText( '', '', tc_InputFile ) lcText = lcText + loIndexes.toText( '', '', tc_InputFile )
*** DH 06/02/2014: added _Records *** DH 06/02/2014: added _Records
lcText = lcText + This._Records.toText(@laFields, lnFieldCount) lcText = lcText + THIS._Records.toText(@laFields, lnFieldCount)
TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<C_TABLE_F>> <<C_TABLE_F>>
@@ -15996,7 +15995,7 @@ DEFINE CLASS CL_DBF_RECORDS AS CL_COL_BASE
* tnCodeLines (@! IN ) Cantidad de l<>neas del programa analizado * tnCodeLines (@! IN ) Cantidad de l<>neas del programa analizado
*--------------------------------------------------------------------------------------------------- *---------------------------------------------------------------------------------------------------
LPARAMETERS tcLine, taCodeLines, I, tnCodeLines LPARAMETERS tcLine, taCodeLines, I, tnCodeLines
*** DH 06/02/2014: not implemented *** DH 06/02/2014: not implemented
ENDPROC ENDPROC
@@ -16022,9 +16021,9 @@ DEFINE CLASS CL_DBF_RECORDS AS CL_COL_BASE
loRecord = CREATEOBJECT('CL_DBF_RECORD') loRecord = CREATEOBJECT('CL_DBF_RECORD')
scan SCAN
lcText = lcText + loRecord.toText(@taFields, tnField_Count) lcText = lcText + loRecord.toText(@taFields, tnField_Count)
endscan ENDSCAN
TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 TEXT TO lcText ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<>> <<C_RECORDS_F>> <<>> <<C_RECORDS_F>>
@@ -16069,7 +16068,7 @@ DEFINE CLASS CL_DBF_RECORD AS CL_CUS_BASE
* tnCodeLines (@! IN ) Cantidad de l<>neas del programa analizado * tnCodeLines (@! IN ) Cantidad de l<>neas del programa analizado
*--------------------------------------------------------------------------------------------------- *---------------------------------------------------------------------------------------------------
LPARAMETERS tcLine, taCodeLines, I, tnCodeLines LPARAMETERS tcLine, taCodeLines, I, tnCodeLines
*** DH 06/02/2014: not implemented *** DH 06/02/2014: not implemented
ENDPROC ENDPROC
@@ -16084,28 +16083,41 @@ DEFINE CLASS CL_DBF_RECORD AS CL_CUS_BASE
EXTERNAL ARRAY taFields EXTERNAL ARRAY taFields
TRY TRY
LOCAL I, lcText, loEx AS EXCEPTION, lcField, luValue LOCAL I, lcText, loEx AS EXCEPTION, lcField, luValue, lcFieldType
lcText = '' lcText = ''
*** FDBOZZO 2014/07/15: New "num" property invalidates the use of REGNUM field
TEXT TO lcText TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 TEXT TO lcText TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<>> <<C_RECORD_I>> <<>> <<STRTRAN( C_RECORD_I, '##', TRANSFORM(RECNO()) )>>
<<>> <<C_RECNO_I>><<recno()>><<C_RECNO_F>> ENDTEXT
endtext
for I = 1 to tnField_Count FOR I = 1 TO tnField_Count
lcField = taFields[I, 1] lcField = taFields[I, 1]
luValue = evaluate(lcField) lcFieldType = taFields[I, 2]
do case
case taFields[I, 2] $ 'CMV' *** FDBOZZO 2014/07/15: Added field restrictions on binary and general fields
luValue = trim(luValue) DO CASE
if This.Encode(luValue) <> luValue CASE lcFieldType == 'G'
luValue = '<![CDATA[' + luValue + ']]>' luValue = 'GENERAL FIELD NOT SUPPORTED'
endif This.Encode(luValue) <> luValue CASE lcFieldType == 'W'
endcase luValue = 'BLOB FIELD NOT SUPPORTED'
CASE lcFieldType == 'Q'
luValue = 'VARBINARY FIELD NOT SUPPORTED'
OTHERWISE
luValue = EVALUATE(lcField)
ENDCASE
DO CASE
CASE taFields[I, 2] $ 'CMV'
luValue = TRIM(luValue)
IF THIS.Encode(luValue) <> luValue
luValue = '<![CDATA[' + luValue + ']]>'
ENDIF THIS.Encode(luValue) <> luValue
ENDCASE
TEXT TO lcText TEXTMERGE NOSHOW flags 1+2 PRETEXT 1+2 additive TEXT TO lcText TEXTMERGE NOSHOW flags 1+2 PRETEXT 1+2 additive
<<>> <<'<' + lcField + '>'>><<luValue>></<<lcField>>> <<>> <<'<' + lcField + '>'>><<luValue>></<<lcField>>>
endtext ENDTEXT
next NEXT
TEXT TO lcText TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 additive TEXT TO lcText TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 additive
<<>> <<C_RECORD_F>> <<>> <<C_RECORD_F>>
@@ -16122,22 +16134,22 @@ DEFINE CLASS CL_DBF_RECORD AS CL_CUS_BASE
ENDTRY ENDTRY
RETURN lcText RETURN lcText
endproc ENDPROC
procedure Encode PROCEDURE Encode
lparameters tcString LPARAMETERS tcString
local lcString LOCAL lcString
lcString = strtran(tcString, '&', '&amp;') lcString = STRTRAN(tcString, '&', '&amp;')
lcString = strtran(lcString, '>', '&gt;') lcString = STRTRAN(lcString, '>', '&gt;')
lcString = strtran(lcString, '<', '&lt;') lcString = STRTRAN(lcString, '<', '&lt;')
lcString = strtran(lcString, '"', '&quot;') lcString = STRTRAN(lcString, '"', '&quot;')
lcString = strtran(lcString, "'", '&#39;') lcString = STRTRAN(lcString, "'", '&#39;')
lcString = strtran(lcString, '/', '&#47;') lcString = STRTRAN(lcString, '/', '&#47;')
lcString = strtran(lcString, chr(13), '&#13;') lcString = STRTRAN(lcString, CHR(13), '&#13;')
lcString = strtran(lcString, chr(10), '&#10;') lcString = STRTRAN(lcString, CHR(10), '&#10;')
lcString = strtran(lcString, chr(9), '&#9;') lcString = STRTRAN(lcString, CHR(9), '&#9;')
return lcString RETURN lcString
endproc ENDPROC
ENDDEFINE ENDDEFINE
@@ -16633,14 +16645,14 @@ DEFINE CLASS CL_MENU_COL_BASE AS CL_COL_BASE
THROW THROW
FINALLY FINALLY
IF toReg.ObjType = 2 IF toReg.ObjType = 2
lnLastKey = toCol_LastLevelName.GETKEY(toReg.LevelName) lnLastKey = toCol_LastLevelName.GETKEY(toReg.LevelName)
IF lnLastKey > 0 IF lnLastKey > 0
toCol_LastLevelName.REMOVE(lnLastKey) toCol_LastLevelName.REMOVE(lnLastKey)
ENDIF ENDIF
ENDIF ENDIF
STORE NULL TO loBarPop, loOption STORE NULL TO loBarPop, loOption
RELEASE I, lcLevelName, lnLastKey, llHayDatos, loReg, loBarPop, loOption RELEASE I, lcLevelName, lnLastKey, llHayDatos, loReg, loBarPop, loOption
ENDTRY ENDTRY
RETURN llRetorno RETURN llRetorno