Changeset: 43 Changeset: 43 - Arreglo del bug del método movido y de los espacios que se pierden por el TEXT/ENDTEXT

- Nuevos casos de prueba para comprobar la solución (UT)
This commit is contained in:
fernando
2013-12-07 14:02:17 +01:00
parent f88a5be8f7
commit 9839876b5a
4 changed files with 217 additions and 70 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -71,39 +71,41 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" , loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG"
*-- TEST *-- TEST
TRY IF ISNULL(toEx) && Respetar errores previos
lcTipoBinario = UPPER( JUSTEXT( tc_OutputFile ) ) TRY
lcTipoBinario = UPPER( JUSTEXT( tc_OutputFile ) )
IF FILE(tc_OutputFile) IF FILE(tc_OutputFile)
SELECT 0 SELECT 0
USE (tc_OutputFile) SHARED NOUPDATE ALIAS TABLABIN USE (tc_OutputFile) SHARED NOUPDATE ALIAS TABLABIN
ELSE ELSE
ERROR 'No se encontr<74> el archivo "' + tc_OutputFile + '"' ERROR 'No se encontr<74> el archivo "' + tc_OutputFile + '"'
ENDIF
IF EMPTY(tcParent) AND EMPTY(tcClass) AND EMPTY(tcObjName)
DO CASE
CASE lcTipoBinario = 'SCX'
LOCATE FOR PLATFORM=="COMMENT " AND UniqueID=="Screen "
CASE lcTipoBinario = 'VCX'
LOCATE FOR PLATFORM=="COMMENT " AND UniqueID=="Class "
ENDCASE
IF NOT FOUND()
ERROR 'No se encontr<74> el registro de cabecera "' + UniqueID + '"'
ENDIF ENDIF
ELSE
LOCATE FOR CLASS==tcClass AND PARENT==tcParent AND objName==tcObjName IF EMPTY(tcParent) AND EMPTY(tcClass) AND EMPTY(tcObjName)
IF NOT FOUND() DO CASE
ERROR 'No se encontr<74> el registro para CLASS=="' + tcClass + '" AND PARENT=="' + tcParent + '" AND objName=="' + tcObjName + '"' CASE lcTipoBinario = 'SCX'
LOCATE FOR PLATFORM=="COMMENT " AND UniqueID=="Screen "
CASE lcTipoBinario = 'VCX'
LOCATE FOR PLATFORM=="COMMENT " AND UniqueID=="Class "
ENDCASE
IF NOT FOUND()
ERROR 'No se encontr<74> el registro de cabecera "' + UniqueID + '"'
ENDIF
ELSE
LOCATE FOR CLASS==tcClass AND PARENT==tcParent AND objName==tcObjName
IF NOT FOUND()
ERROR 'No se encontr<74> el registro para CLASS=="' + tcClass + '" AND PARENT=="' + tcParent + '" AND objName=="' + tcObjName + '"'
ENDIF
ENDIF ENDIF
ENDIF
SCATTER MEMO NAME toReg SCATTER MEMO NAME toReg
CATCH TO toEx CATCH TO toEx
FINALLY FINALLY
USE IN (SELECT("TABLABIN")) USE IN (SELECT("TABLABIN"))
ENDTRY ENDTRY
ENDIF
IF ISNULL(toEx) IF ISNULL(toEx)
@@ -225,8 +227,18 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
ENDFOR ENDFOR
*-- METHODS *-- METHODS
lcMensaje = "Tama<6D>o de METHODS para " + lcExtraData
* COMPROBAR "BUG DEL M<>TODO MOVIDO"
IF LEN( STRTRAN( toReg_Esperado.METHODS, CHR(13)+CHR(10), CHR(13) ) ) <> LEN( STRTRAN( toReg.METHODS, CHR(13)+CHR(10), CHR(13) ) )
IF "BUG DEL M<>TODO MOVIDO" $ toReg.METHODS AND NOT "BUG DEL M<>TODO MOVIDO" $ toReg_Esperado.METHODS
lcMensaje = lcMensaje + ' >>> ATENCI<43>N!! - COMPROBAR "BUG DEL M<>TODO MOVIDO"'
ENDIF
ENDIF
*-- Fin comprobaci<63>n
THIS.assertequals( LEN( STRTRAN( toReg_Esperado.METHODS, CHR(13)+CHR(10), CHR(13) ) ) ; THIS.assertequals( LEN( STRTRAN( toReg_Esperado.METHODS, CHR(13)+CHR(10), CHR(13) ) ) ;
, LEN( STRTRAN( toReg.METHODS, CHR(13)+CHR(10), CHR(13) ) ), "Tama<6D>o de METHODS para " + lcExtraData ) , LEN( STRTRAN( toReg.METHODS, CHR(13)+CHR(10), CHR(13) ) ), lcMensaje )
THIS.assertequals( lnMethods_Count_Esperado, lnMethods_Count, "Cantidad de METHODS para " + lcExtraData ) THIS.assertequals( lnMethods_Count_Esperado, lnMethods_Count, "Cantidad de METHODS para " + lcExtraData )
FOR I = 1 TO lnMethods_Count_Esperado FOR I = 1 TO lnMethods_Count_Esperado
THIS.asserttrue( ASCAN( laMethods, laMethods_Esperado(I,1), 1, -1, 1, 0+2+4) > 0 ; THIS.asserttrue( ASCAN( laMethods, laMethods_Esperado(I,1), 1, -1, 1, 0+2+4) > 0 ;
@@ -320,13 +332,125 @@ DEFINE CLASS ut__foxbin2prg AS FxuTestCase OF FxuTestCase.prg
*loCnv.l_Debug = .F. *loCnv.l_Debug = .F.
loCnv.l_ShowErrors = .F. loCnv.l_ShowErrors = .F.
*loCnv.l_Test = .T. *loCnv.l_Test = .T.
loCnv.l_PropSort_Enabled = .F. && Para buscar diferencias *loCnv.l_PropSort_Enabled = .F. && Para buscar diferencias
loCnv.l_MethodSort_Enabled = .F. && Para buscar diferencias *loCnv.l_MethodSort_Enabled = .F. && Para buscar diferencias
*-- DATOS DE ENTRADA *-- DATOS DE ENTRADA
STORE 0 TO lnCodError STORE 0 TO lnCodError
lc_File = 'fb2p_test.vcx' && 'THCALC.VCX' && lc_File = 'fb2p_test.vcx'
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
loCnv.Convertir( lc_OutputFile, .F., .F., .T. )
loCnv.Convertir( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), .F., .F., .T. )
SELECT 0
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIBOBIN_IN
SCAN ALL FOR NOT DELETED() AND ( UniqueID==PADR('Class',10) OR PLATFORM==PADR("WINDOWS",8) )
*-- DATOS ESPERADOS
STORE 0 TO lnCodError_Esperado
SCATTER MEMO NAME loReg_Esperado
lcClass = loReg_Esperado.CLASS
lcParent = loReg_Esperado.PARENT
lcObjName = loReg_Esperado.objName
THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado )
ENDSCAN
CATCH TO loEx
THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado )
FINALLY
USE IN (SELECT("ARCHIBOBIN_IN"))
ENDTRY
ENDFUNC
*******************************************************************************************************************************************
FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaLibreria_FB2P_TEST_VCX_YValidarEl_BUG_DelMetodoMovidoEntreClases
LOCAL lnCodError, lnCodError_Esperado ;
, lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado ;
, loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ;
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ;
, loEx AS EXCEPTION
#IF .F.
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
#ENDIF
TRY
loEx = NULL
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
*loCnv.l_Debug = .F.
loCnv.l_ShowErrors = .F.
*loCnv.l_Test = .T.
*loCnv.l_PropSort_Enabled = .F. && Para buscar diferencias
*loCnv.l_MethodSort_Enabled = .F. && Para buscar diferencias
*-- DATOS DE ENTRADA
STORE 0 TO lnCodError
lc_File = 'fb2p_test_bug_metodo_movido.vcx'
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )
oFXU_LIB.copiarArchivosParaTest( FORCEEXT( lc_File, LEFT( JUSTEXT(lc_File),2 ) + '?' ) )
loCnv.Convertir( lc_OutputFile, .F., .F., .T. )
loCnv.Convertir( FORCEEXT(lc_OutputFile, LEFT( JUSTEXT(lc_File),2 ) + '2' ), .F., .F., .T. )
SELECT 0
USE (lc_InputFile) SHARED AGAIN NOUPDATE ALIAS ARCHIBOBIN_IN
SCAN ALL FOR NOT DELETED() AND ( UniqueID==PADR('Class',10) OR PLATFORM==PADR("WINDOWS",8) )
*-- DATOS ESPERADOS
STORE 0 TO lnCodError_Esperado
SCATTER MEMO NAME loReg_Esperado
lcClass = loReg_Esperado.CLASS
lcParent = loReg_Esperado.PARENT
lcObjName = loReg_Esperado.objName
THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado )
ENDSCAN
CATCH TO loEx
THIS.Evaluate_results( loEx, lnCodError_Esperado, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado )
FINALLY
USE IN (SELECT("ARCHIBOBIN_IN"))
ENDTRY
ENDFUNC
*******************************************************************************************************************************************
FUNCTION Deberia_Ejecutar_FOXBIN2PRG_ParaLaLibreria_FB2P_TEST_VCX_YValidarEl_BUG_Del_PROCEDURE_SIN_ENDPROC
LOCAL lnCodError, lnCodError_Esperado ;
, lc_File, lc_InputFile, lc_OutputFile, lcParent, lcClass, lcObjName, loReg_Esperado ;
, loModulo AS CL_CLASE OF "FOXBIN2PRG.PRG" ;
, loCnv AS c_foxbin2prg OF "FOXBIN2PRG.PRG" ;
, loEx AS EXCEPTION
#IF .F.
PUBLIC oFXU_LIB AS CL_FXU_CONFIG OF 'TESTS\fxu_lib_objetos_y_funciones_de_soporte.PRG'
#ENDIF
TRY
loEx = NULL
loCnv = NEWOBJECT("c_foxbin2prg", "FOXBIN2PRG.PRG")
*loCnv.l_Debug = .F.
loCnv.l_ShowErrors = .F.
*loCnv.l_Test = .T.
*loCnv.l_PropSort_Enabled = .F. && Para buscar diferencias
*loCnv.l_MethodSort_Enabled = .F. && Para buscar diferencias
*-- DATOS DE ENTRADA
STORE 0 TO lnCodError
lc_File = 'fb2p_test_bug_estructural.vcx'
lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' ) lc_InputFile = FORCEPATH( lc_File, 'TESTS\DATOS_READONLY' )
lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' ) lc_OutputFile = FORCEPATH( lc_File, 'TESTS\DATOS_TEST' )

View File

@@ -46,7 +46,8 @@
* 01/12/2013 FDBOZZO v1.6 Refactorizaci<63>n completa generaci<63>n BIN y PRG, cambio de algoritmos, arreglo de bugs, Unit Testing con FoxUnit * 01/12/2013 FDBOZZO v1.6 Refactorizaci<63>n completa generaci<63>n BIN y PRG, cambio de algoritmos, arreglo de bugs, Unit Testing con FoxUnit
* 02/12/2013 FDBOZZO v1.7 Arreglo bug "Name", barra de progreso, agregado mensaje de ayuda si se llama sin par<61>metros, verificaci<63>n y logueo de archivos READONLY con debug activa * 02/12/2013 FDBOZZO v1.7 Arreglo bug "Name", barra de progreso, agregado mensaje de ayuda si se llama sin par<61>metros, verificaci<63>n y logueo de archivos READONLY con debug activa
* 03/12/2013 FDBOZZO v1.8 Arreglo bug "Name" (otra vez), sort encapsulado y reutilizado para versiones TEXTO y BIN por seguridad * 03/12/2013 FDBOZZO v1.8 Arreglo bug "Name" (otra vez), sort encapsulado y reutilizado para versiones TEXTO y BIN por seguridad
* 03/12/2013 FDBOZZO v1.9 Arreglo bug p<>rdida de propiedades causado por una mejora anterior * 06/12/2013 FDBOZZO v1.9 Arreglo bug p<>rdida de propiedades causado por una mejora anterior
* 06/12/2013 FDBOZZO v1.10 Arreglo del bug de mezcla de m<>todos de una clase con la siguiente
* *
*--------------------------------------------------------------------------------------------------- *---------------------------------------------------------------------------------------------------
* TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS) * TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)
@@ -55,6 +56,7 @@
* 02/12/2013 Fidel Charny REPORTE BUG: Se pierden algunas propiedades y no muestra picture si "Name" no es la <20>ltima (arreglado en v.1.7) * 02/12/2013 Fidel Charny REPORTE BUG: Se pierden algunas propiedades y no muestra picture si "Name" no es la <20>ltima (arreglado en v.1.7)
* 03/12/2013 Fidel Charny REPORTE BUG: Se siguen perdiendo algunas propiedades por implementaci<63>n defectuosa del arreglo anterior (arreglado en v.1.8) * 03/12/2013 Fidel Charny REPORTE BUG: Se siguen perdiendo algunas propiedades por implementaci<63>n defectuosa del arreglo anterior (arreglado en v.1.8)
* 03/12/2013 Fidel Charny REPORTE BUG: Se siguen perdiendo algunas propiedades por implementaci<63>n defectuosa de una mejora anterior (arreglado en v.1.9) * 03/12/2013 Fidel Charny REPORTE BUG: Se siguen perdiendo algunas propiedades por implementaci<63>n defectuosa de una mejora anterior (arreglado en v.1.9)
* 06/12/2013 Fidel Charny REPORTE BUG: Cuando hay m<>todos que tienen el mismo nombre, aparecen mezclados en objetos a los que no corresponden
* *
*--------------------------------------------------------------------------------------------------- *---------------------------------------------------------------------------------------------------
* TRAMIENTOS ESPECIALES DE ASIGNACIONES DE PROPIEDADES: * TRAMIENTOS ESPECIALES DE ASIGNACIONES DE PROPIEDADES:
@@ -350,7 +352,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias
lFileMode = .F. lFileMode = .F.
nClassTimeStamp = '' nClassTimeStamp = ''
n_FB2PRG_Version = 1.9 n_FB2PRG_Version = 1.10
o_Conversor = NULL o_Conversor = NULL
c_VC2 = 'VC2' c_VC2 = 'VC2'
c_SC2 = 'SC2' c_SC2 = 'SC2'
@@ -2428,11 +2430,12 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
#ENDIF #ENDIF
TRY TRY
LOCAL loProcedure AS CL_PROCEDURE OF 'FOXBIN2PRG.PRG' LOCAL llEsProcedureDeClase, loProcedure AS CL_PROCEDURE OF 'FOXBIN2PRG.PRG'
IF '.' $ tcProcedureAbierto AND VARTYPE(toObjeto) = 'O' AND toObjeto._Procedure_Count > 0 IF '.' $ tcProcedureAbierto AND VARTYPE(toObjeto) = 'O' AND toObjeto._Procedure_Count > 0
loProcedure = toObjeto._Procedures(toObjeto._Procedure_Count) loProcedure = toObjeto._Procedures(toObjeto._Procedure_Count)
ELSE ELSE
llEsProcedureDeClase = .T.
loProcedure = toClase._Procedures(toClase._Procedure_Count) loProcedure = toClase._Procedures(toClase._Procedure_Count)
ENDIF ENDIF
@@ -2443,10 +2446,22 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
IF NOT .lineaExcluida( I, tnBloquesExclusion, @taBloquesExclusion ) ; IF NOT .lineaExcluida( I, tnBloquesExclusion, @taBloquesExclusion ) ;
AND NOT .lineIsOnlyCommentAndNoMetadata( @tcLine, @tc_Comentario ) AND NOT .lineIsOnlyCommentAndNoMetadata( @tcLine, @tc_Comentario )
IF LEFT( tcLine, 8 ) + ' ' == C_ENDPROC + ' ' && Fin del PROCEDURE DO CASE
*tcProcedureAbierto = '' CASE LEFT( tcLine, 8 ) + ' ' == C_ENDPROC + ' ' && Fin del PROCEDURE
tcProcedureAbierto = ''
EXIT EXIT
ENDIF
CASE LEFT( tcLine + ' ', 10 ) == C_ENDDEFINE + ' ' && Fin de bloque (ENDDEFINE) encontrado
IF llEsProcedureDeClase
ERROR 'Error de anidamiento de estructuras. Se esperaba ENDPROC y se encontr<74> ENDDEFINE en la clase ' ;
+ toClase._Nombre + ' (' + loProcedure._Nombre + ')' ;
+ ', l<>nea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile
ELSE
ERROR 'Error de anidamiento de estructuras. Se esperaba ENDPROC y se encontr<74> ENDDEFINE en la clase ' ;
+ toClase._Nombre + ' (' + toObjeto._Nombre + '.' + loProcedure._Nombre + ')' ;
+ ', l<>nea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile
ENDIF
ENDCASE
ENDIF ENDIF
*-- Quito 2 TABS de la izquierda (si se puede y si el integrador/desarrollador no la li<6C> quit<69>ndolos) *-- Quito 2 TABS de la izquierda (si se puede y si el integrador/desarrollador no la li<6C> quit<69>ndolos)
@@ -2650,14 +2665,13 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
******************************************************************************************************************* *******************************************************************************************************************
PROCEDURE analizarBloque_DEFINE_CLASS PROCEDURE analizarBloque_DEFINE_CLASS
LPARAMETERS toModulo, toClase, toObjeto, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto ; LPARAMETERS toModulo, toClase, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto ;
, taBloquesExclusion, tnBloquesExclusion, tc_Comentario , taBloquesExclusion, tnBloquesExclusion, tc_Comentario
EXTERNAL ARRAY taCodeLines, tnBloquesExclusion, taBloquesExclusion EXTERNAL ARRAY taCodeLines, tnBloquesExclusion, taBloquesExclusion
#IF .F. #IF .F.
LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG'
LOCAL toObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG'
LOCAL toClase AS CL_CLASE OF 'FOXBIN2PRG.PRG' LOCAL toClase AS CL_CLASE OF 'FOXBIN2PRG.PRG'
#ENDIF #ENDIF
@@ -2668,7 +2682,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
llBloqueEncontrado = .T. llBloqueEncontrado = .T.
LOCAL Z, lcProp, lcValue, loEx AS EXCEPTION ; LOCAL Z, lcProp, lcValue, loEx AS EXCEPTION ;
, llMETADATA_Completed, llPROTECTED_Completed, llHIDDEN_Completed, llDEFINED_PAM_Completed ; , llMETADATA_Completed, llPROTECTED_Completed, llHIDDEN_Completed, llDEFINED_PAM_Completed ;
, llINCLUDE_Completed, llCLASS_PROPERTY_Completed , llINCLUDE_Completed, llCLASS_PROPERTY_Completed ;
, loObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG'
STORE '' TO tcProcedureAbierto STORE '' TO tcProcedureAbierto
toClase = CREATEOBJECT('CL_CLASE') toClase = CREATEOBJECT('CL_CLASE')
@@ -2699,11 +2714,11 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
tc_Comentario = '' tc_Comentario = ''
.set_Line( @tcLine, @taCodeLines, I ) .set_Line( @tcLine, @taCodeLines, I )
.lineIsOnlyCommentAndNoMetadata( @tcLine, @tc_Comentario )
DO CASE DO CASE
CASE .analizarBloque_PROCEDURE( @toModulo, @toClase, @toObjeto, @tcLine, @taCodeLines, @I, @tnCodeLines ; CASE .lineIsOnlyCommentAndNoMetadata( @tcLine, @tc_Comentario )
LOOP
CASE .analizarBloque_PROCEDURE( @toModulo, @toClase, @loObjeto, @tcLine, @taCodeLines, @I, @tnCodeLines ;
, @tcProcedureAbierto, @tc_Comentario, @taBloquesExclusion, @tnBloquesExclusion ) , @tcProcedureAbierto, @tc_Comentario, @taBloquesExclusion, @tnBloquesExclusion )
*-- OJO: Esta se analiza primero a prop<6F>sito, solo porque no puede estar detr<74>s de PROTECTED y HIDDEN *-- OJO: Esta se analiza primero a prop<6F>sito, solo porque no puede estar detr<74>s de PROTECTED y HIDDEN
llCLASS_PROPERTY_Completed = .T. llCLASS_PROPERTY_Completed = .T.
@@ -2722,7 +2737,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
llHIDDEN_Completed = .T. llHIDDEN_Completed = .T.
CASE NOT llINCLUDE_Completed AND .c_Type <> "SCX" AND .analizarBloque_INCLUDE( @toModulo, @toClase, @toObjeto, @tcLine, @taCodeLines ; CASE NOT llINCLUDE_Completed AND .c_Type <> "SCX" AND .analizarBloque_INCLUDE( @toModulo, @toClase, @tcLine, @taCodeLines ;
, @I, @tnCodeLines, @tcProcedureAbierto ) , @I, @tnCodeLines, @tcProcedureAbierto )
llINCLUDE_Completed = .T. llINCLUDE_Completed = .T.
@@ -2848,7 +2863,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
******************************************************************************************************************* *******************************************************************************************************************
PROCEDURE analizarBloque_INCLUDE PROCEDURE analizarBloque_INCLUDE
LPARAMETERS toModulo, toClase, toObjeto, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto LPARAMETERS toModulo, toClase, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto
LOCAL llBloqueEncontrado LOCAL llBloqueEncontrado
#IF .F. #IF .F.
@@ -2906,13 +2921,11 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
******************************************************************************************************************* *******************************************************************************************************************
PROCEDURE analizarBloque_OLE_DEF PROCEDURE analizarBloque_OLE_DEF
LPARAMETERS toModulo, toClase, toObjeto, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto LPARAMETERS toModulo, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto
LOCAL llBloqueEncontrado LOCAL llBloqueEncontrado
#IF .F. #IF .F.
LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG' LOCAL toModulo AS CL_MODULO OF 'FOXBIN2PRG.PRG'
LOCAL toObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG'
LOCAL toClase AS CL_CLASE OF 'FOXBIN2PRG.PRG'
#ENDIF #ENDIF
IF LEFT( tcLine + ' ', C_LEN_OLE_I + 1 ) == C_OLE_I + ' ' IF LEFT( tcLine + ' ', C_LEN_OLE_I + 1 ) == C_OLE_I + ' '
@@ -2992,7 +3005,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
IF llBloqueEncontrado IF llBloqueEncontrado
*-- Eval<61>o todo el contenido del PROCEDURE *-- Eval<61>o todo el contenido del PROCEDURE
THIS.analizarLineasDeProcedure( @toClase, @toObjeto, @tcLine, @taCodeLines, @I, @tnCodeLines, tcProcedureAbierto ; THIS.analizarLineasDeProcedure( @toClase, @toObjeto, @tcLine, @taCodeLines, @I, @tnCodeLines, @tcProcedureAbierto ;
, @tc_Comentario, @taBloquesExclusion, @tnBloquesExclusion ) , @tc_Comentario, @taBloquesExclusion, @tnBloquesExclusion )
ENDIF ENDIF
@@ -3063,6 +3076,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
IF lnObjProc = 0 IF lnObjProc = 0
*-- Procedimiento de clase *-- Procedimiento de clase
toClase.add_Procedure( loProcedure ) toClase.add_Procedure( loProcedure )
toObjeto = NULL
ELSE ELSE
*-- Procedimiento de objeto *-- Procedimiento de objeto
toObjeto = toClase._AddObjects( lnObjProc ) toObjeto = toClase._AddObjects( lnObjProc )
@@ -3113,7 +3127,6 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
LOCAL I, loEx AS EXCEPTION ; LOCAL I, loEx AS EXCEPTION ;
, llFoxBin2Prg_Completed, llOLE_DEF_Completed, llINCLUDE_SCX_Completed ; , llFoxBin2Prg_Completed, llOLE_DEF_Completed, llINCLUDE_SCX_Completed ;
, lc_Comentario, lcProcedureAbierto, lcLine ; , lc_Comentario, lcProcedureAbierto, lcLine ;
, loObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG' ;
, loClase AS CL_CLASE OF 'FOXBIN2PRG.PRG' , loClase AS CL_CLASE OF 'FOXBIN2PRG.PRG'
STORE '' TO lcProcedureAbierto STORE '' TO lcProcedureAbierto
@@ -3136,21 +3149,19 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
CASE THIS.lineaExcluida( I, tnBloquesExclusion, @taBloquesExclusion ) ; CASE THIS.lineaExcluida( I, tnBloquesExclusion, @taBloquesExclusion ) ;
OR .lineIsOnlyCommentAndNoMetadata( @lcLine, @lc_Comentario ) && Excluida, vac<61>a o solo Comentarios OR .lineIsOnlyCommentAndNoMetadata( @lcLine, @lc_Comentario ) && Excluida, vac<61>a o solo Comentarios
*.analizarLineasDeProcedure( @loClase, @loObjeto, @lcLine, @taCodeLines, @I, tnCodeLines, @lcProcedureAbierto )
CASE NOT llFoxBin2Prg_Completed AND .analizarBloque_FoxBin2Prg( toModulo, @lcLine, @taCodeLines, @I, tnCodeLines ) CASE NOT llFoxBin2Prg_Completed AND .analizarBloque_FoxBin2Prg( toModulo, @lcLine, @taCodeLines, @I, tnCodeLines )
llFoxBin2Prg_Completed = .T. llFoxBin2Prg_Completed = .T.
CASE NOT llOLE_DEF_Completed AND .analizarBloque_OLE_DEF( @toModulo, @loClase, @loObjeto, @lcLine, @taCodeLines ; CASE NOT llOLE_DEF_Completed AND .analizarBloque_OLE_DEF( @toModulo, @lcLine, @taCodeLines ;
, @I, tnCodeLines, @lcProcedureAbierto ) , @I, tnCodeLines, @lcProcedureAbierto )
*-- Puede haber varios *-- Puede haber varios
CASE NOT llINCLUDE_SCX_Completed AND .c_Type = 'SCX' AND .analizarBloque_INCLUDE( @toModulo, @loClase, @loObjeto, @lcLine ; CASE NOT llINCLUDE_SCX_Completed AND .c_Type = 'SCX' AND .analizarBloque_INCLUDE( @toModulo, @loClase, @lcLine ;
, @taCodeLines, @I, tnCodeLines, @lcProcedureAbierto ) , @taCodeLines, @I, tnCodeLines, @lcProcedureAbierto )
* Espec<65>fico para SCX que lo tiene al inicio * Espec<65>fico para SCX que lo tiene al inicio
llINCLUDE_SCX_Completed = .T. llINCLUDE_SCX_Completed = .T.
CASE .analizarBloque_DEFINE_CLASS( @toModulo, @loClase, @loObjeto, @lcLine, @taCodeLines, @I, tnCodeLines ; CASE .analizarBloque_DEFINE_CLASS( @toModulo, @loClase, @lcLine, @taCodeLines, @I, tnCodeLines ;
, @lcProcedureAbierto, @taBloquesExclusion, @tnBloquesExclusion, @lc_Comentario ) , @lcProcedureAbierto, @taBloquesExclusion, @tnBloquesExclusion, @lc_Comentario )
*-- Puede haber varias *-- Puede haber varias
@@ -3168,8 +3179,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
THROW THROW
FINALLY FINALLY
STORE NULL TO loObjeto, loClase STORE NULL TO loClase
RELEASE loObjeto, loClase RELEASE loClase
ENDTRY ENDTRY
RETURN RETURN
@@ -4812,11 +4823,16 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
ENDIF ENDIF
*-- Genero el m<>todo SIN indentar, ya que se hace luego *-- Genero el m<>todo SIN indentar, ya que se hace luego
TEXT TO tcMethods ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 *TEXT TO tcMethods ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<'PROCEDURE'>> <<tcMethodName>> * <<'PROCEDURE'>> <<tcMethodName>>
<<THIS.IndentarMemo( taCode(taMethods(I,2)) )>> * <<THIS.IndentarMemo( taCode(taMethods(I,2)) )>>
<<'ENDPROC'>> * <<'ENDPROC'>>
ENDTEXT *ENDTEXT
*-- Sustituyo el TEXT/ENDTEXT aqu<71> porque a veces quita espacios de la derecha, y eso es peligroso
tcMethods = tcMethods + CR_LF + 'PROCEDURE ' + tcMethodName
tcMethods = tcMethods + CR_LF + THIS.IndentarMemo( taCode(taMethods(I,2)) )
tcMethods = tcMethods + CR_LF + 'ENDPROC'
tcMethods = tcMethods + CR_LF
ENDFOR ENDFOR
ENDIF ENDIF
@@ -5369,12 +5385,17 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
FOR I = 1 TO lnMethodCount FOR I = 1 TO lnMethodCount
*-- Genero los m<>todos indentados *-- Genero los m<>todos indentados
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 *TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<C_TAB>><<laMethods(I,3)>>PROCEDURE <<laMethods(I,1)>> * <<C_TAB>><<laMethods(I,3)>>PROCEDURE <<laMethods(I,1)>>
<<THIS.IndentarMemo( laCode(laMethods(I,2)), CHR(9) + CHR(9) )>> * <<THIS.IndentarMemo( laCode(laMethods(I,2)), CHR(9) + CHR(9) )>>
<<C_TAB>>ENDPROC * <<C_TAB>>ENDPROC
ENDTEXT *ENDTEXT
*-- Sustituyo el TEXT/ENDTEXT aqu<71> porque a veces quita espacios de la derecha, y eso es peligroso
C_FB2PRG_CODE = C_FB2PRG_CODE + CR_LF + C_TAB + laMethods(I,3) + 'PROCEDURE ' + laMethods(I,1)
C_FB2PRG_CODE = C_FB2PRG_CODE + CR_LF + THIS.IndentarMemo( laCode(laMethods(I,2)), CHR(9) + CHR(9) )
C_FB2PRG_CODE = C_FB2PRG_CODE + CR_LF + C_TAB + 'ENDPROC'
C_FB2PRG_CODE = C_FB2PRG_CODE + CR_LF
ENDFOR ENDFOR
ENDIF ENDIF
@@ -5432,8 +5453,10 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
* <<C_TAB>>ENDPROC * <<C_TAB>>ENDPROC
*ENDTEXT *ENDTEXT
*-- Sustituyo el TEXT/ENDTEXT aqu<71> porque a veces quita espacios de la derecha, y eso es peligroso
lcMethods = lcMethods + CR_LF + THIS.IndentarMemo( taCode(taMethods(I,2)), C_TAB + C_TAB ) lcMethods = lcMethods + CR_LF + THIS.IndentarMemo( taCode(taMethods(I,2)), C_TAB + C_TAB )
lcMethods = lcMethods + CR_LF + C_TAB + 'ENDPROC' + CR_LF lcMethods = lcMethods + CR_LF + C_TAB + 'ENDPROC'
lcMethods = lcMethods + CR_LF
ENDFOR ENDFOR
*TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 *TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2