Extension 1.19.56

Bug: On special setting for import in form file[.baseclass].class.vc2
Enhancement: New value 2 for option RedirectClassType. Alter single class for input form file[.baseclass].class.vc2
This commit is contained in:
Lutz
2021-03-04 18:36:11 +01:00
parent 837bf978f1
commit 5f7c066b10
8 changed files with 119 additions and 26 deletions

View File

@@ -242,6 +242,10 @@
* 21/02/2021 LScheffler v1.19.55 Enhancement: Info screen-doc improved
* 21/02/2021 LScheffler v1.19.55 Enhancement: added option to create config file template
* 23/02/2021 LScheffler v1.19.55 Enhancement: inserted option OldFilesPerDBC to define the use splitting of DBC like version pre 1.20.0
* 04/03/2021 LScheffler v1.19.56 Bug Fix: Inputfile in form classlib.class.vc2 AND RedirectClassType = 1 and Execute param tcRecompile = 1
* generates classlib.class.vcx and tries to recompile classlib.vcx
* fails silent if classlib.vcx exists (compiles wrong lib), with message if not.
* 04/03/2021 LScheffler v1.19.56 Enhancement: New value for RedirectClassType = 2, just process the single class of classlib.class.vc2
* </HISTORIAL DE CAMBIOS Y NOTAS IMPORTANTES>
@@ -844,8 +848,8 @@ Define Class c_foxbin2prg As Session
Dimension a_ProcessedFiles(1, 6)
Protected n_CFG_Actual, l_Main_CFG_Loaded, o_Configuration, l_CFG_CachedAccess
*--
n_FB2PRG_Version = 1.21
c_FB2PRG_Version_Real = '1.19.55'
n_FB2PRG_Version = 1.19
c_FB2PRG_Version_Real = '1.19.56'
*--
c_Language = '' && EN, FR, ES, DE
c_SimulateError = '' && SIMERR_I0, SIMERR_I1, SIMERR_O1
@@ -1895,6 +1899,7 @@ Define Class c_foxbin2prg As Session
Procedure compileFoxProBinary
Lparameters tcFileName
Local lcType
tcFileName = Evl(tcFileName, This.c_OutputFile)
lcType = Upper(Justext(tcFileName))
@@ -2443,12 +2448,16 @@ Define Class c_foxbin2prg As Session
Endif
*!* /Changed by: Lutz Scheffler 21.02.2021
*!* Changed by: Lutz Scheffler 04.3.2021
*!* change date="{^2021-03-04,13:12:00}"
* new value 2, just add one class
Case Left( laConfig(m.I), 18 ) == Lower('RedirectClassType:')
lcValue = Alltrim( Substr( laConfig(m.I), 19 ) )
If Inlist( lcValue, '0', '1' ) Then
If Inlist( lcValue, '0', '1', '2' ) Then
lo_CFG.n_RedirectClassType = Int( Val( lcValue ) )
.writeLog( C_TAB + Justfname(lcConfigFile) + ' > RedirectClassType: ' + Transform(lcValue) )
Endif
*!* /Changed by: Lutz Scheffler 04.3.2021
Case Left( laConfig(m.I), 24 ) == Lower('RemoveNullCharsFromCode:')
lcValue = Alltrim( Substr( laConfig(m.I), 25 ) )
@@ -3244,7 +3253,40 @@ Define Class c_foxbin2prg As Session
.evaluateConfiguration( @tcDontShowProgress, @tcDontShowErrors, @tcNoTimestamps, @tcDebug, @tcRecompile, @tcBackupLevels ;
, @tcClearUniqueID, @tcOptimizeByFilestamp, @tc_InputFile, @lcInputFile_Type )
* Redefinir nombre archivo de entrada según el tipo de conversión (IMPORT/EXPORT)
*!* Changed by: Lutz Scheffler 04.3.2021
*!* change date="{^2021-03-04,13:25:00}"
* for Input file in the form file[.baseclass].class.vc2 (normaly sc2 too, but no support in old code)
* allow to import only the class to file.VCX with n_RedirectClassType = 2
* n_RedirectClassType = 0 will import all classes of file.VCX (as just handing file.vc2)
* n_RedirectClassType = 1 will import the class to single lib file[.baseclass].class.VCX
Do Case
Case .n_RedirectClassType # 2
* not handled
Case !Empty(.c_ClassToConvert)
* not otherwise
Case .n_UseClassPerFile = 0
* not handled
Case Occurs('.',m.tc_InputFile) > .n_UseClassPerFile
* we must have more dots then UseClassPerFile, because there is an extension
*class
.c_ClassToConvert = Lower( Justext( Juststem( m.tc_InputFile ) ) )
*remove class
tc_InputFile = Lower( Juststem( Juststem( m.tc_InputFile ) ) + '.' + Justext( m.tc_InputFile ) )
*remove baseclass
If .n_UseClassPerFile = 0
*remove baseclass
tc_InputFile = Lower( Juststem( Juststem( m.tc_InputFile ) ) + '.' + Justext( m.tc_InputFile ) )
Endif
* count anything then -BIN2PRG as import
.c_ClassOperationType = Iif( Atc('-BIN2PRG','-'+tcType) > 0 , 'E', 'I')
Otherwise
* not handled
Endcase
*!* /Changed by: Lutz Scheffler 04.3.2021
* Redefinir nombre archivo de entrada según el tipo de conversión (IMPORT/EXPORT)
If .c_ClassOperationType = 'I'
* En el caso de importar, debo cambiar la sintaxis de tc_InputFile para poder usar
* la conversión existente de clase vc2.
@@ -4136,15 +4178,13 @@ Define Class c_foxbin2prg As Session
OR Not Empty(.c_ClassToConvert))
Do Case
* SF
* n_RedirectClassType looks like lavacode. At least I see not where it set, except in cfg file, not documented in cfg Files
Case .n_RedirectClassType = 1 Or Not Empty(.c_ClassToConvert) && Redireccionar solo esta clase
If Occurs('.', Juststem(.c_InputFile)) = 0 Then
lc_BaseFile = .c_InputFile
Else
lc_BaseFile = Forcepath( Forceext( Juststem( Juststem(.c_InputFile) ), Justext(.c_InputFile)) , Justpath(.c_InputFile) )
Endif
* /SF
Case .n_UseClassPerFile = 1 And Inlist(lcExtension,.c_VC2,.c_SC2)
If Occurs('.', Juststem(.c_InputFile)) = 0 Then
@@ -10796,8 +10836,20 @@ Define Class c_conversor_prg_a_vcx As c_conversor_prg_a_bin
If toFoxBin2Prg.n_RedirectClassType = 1 Or Not Empty(toFoxBin2Prg.c_ClassToConvert) && Redireccionar solo esta clase a main
llReplaceClass = .T.
If Empty(toFoxBin2Prg.c_ClassToConvert)
toFoxBin2Prg.c_OutputFile = Fullpath( Forceext( lcBaseFilename, 'VCX' ), .c_InputFile)
* - new operations of DBF
If Empty(toFoxBin2Prg.c_ClassToConvert)
*!* Changed by: Lutz Scheffler 04.03.2021
*!* change date="{^2021-03-04,10:03:00}"
* If inputfile in the form classlib.class.vc2 AND toFoxBin2Prg.n_RedirectClassType = 1 and Execute parameter tcRecompile = 1
* the change of outputfile might generate an error
* toFoxBin2Prg.c_OutputFile is renamed to classlib.vcx, while this.c_OutputFile is classlib.class.vcx
* this will generate classlib.class.vcx, tries to recompile and toFoxBin2Prg recompiles classlib.vcx
* if classlib.vcx is not existing, it errors out, els it compiles the wrong file.
* So we do not rename if toFoxBin2Prg.n_RedirectClassType = 1
If toFoxBin2Prg.n_RedirectClassType = 0
toFoxBin2Prg.c_OutputFile = Fullpath( Forceext( lcBaseFilename, 'VCX' ), .c_InputFile)
Endif
*!* /Changed by: Lutz Scheffler 04.03.2021
Else
loClase = toModulo._Clases(1)
* Ajusto el nombre interno de la clase al indicado en el nombre del archivo
@@ -29354,10 +29406,16 @@ Define Class CL_LANG As Custom
<<>>DBF_BinChar_Base64: 1 && 0=For character type fields, if NoCPTrans 0=do not transform, 1=use Base64 transform (default)
<<>>DBF_IncludeDeleted: 0 && 0=Do not include deleted records (default), 1=Include deleted records
<<>>
<<>>-- CLASS and FORM options
<<>>-- CLASS and FORM options (tx2 is to read as vc2 or sc2, VCX might be SCX)
<<>>- Class per file options (UseClassPerFile: 1)
<<>>UseClassPerFile: 0 && 0=One library tx2 file, 1=Multiple file.class.tx2 files, 2=Multiple file.baseclass.class.tx2 files
<<>>RedirectClassPerFileToMain: 0 && 0=Don't redirect to file.tx2, 1=Redirect to file.tx2 when selecting file.class.tx2
<<>>RedirectClassType: 0 && For classes created with UseClassPerFile>0 in the form file[.baseclass].class.tx2
<<>> && Those files could be imported like file.tx2::Class::import or like file[.baseclass].class.tx2
<<>> && For the second form:
<<>> && 0 Redirect file[.baseclass].class.tx2 to file.VCX and add / replace all other classes of this library
<<>> && 1 Redirect file[.baseclass].class.tx2 to file[.baseclass].class.VCX and do not touch file.VCX
<<>> && 2 Redirect file[.baseclass].class.tx2 to file.VCX and do not touch other classes of file.VCX
<<>>ClassPerFileCheck: 0 && 0=Don't check file.class.tx2 inclusion, 1=Check file.class.tx2 inclusion
<<>>
<<>>-- Example configuration for SourceSafe compatibility:
@@ -29560,6 +29618,12 @@ Define Class CL_LANG As Custom
<<>>- Class per file options (UseClassPerFile: 1)
<<>>UseClassPerFile: 0 && 0=One library tx2 file, 1=Multiple file.class.tx2 files, 2=Multiple file.baseclass.class.tx2 files
<<>>RedirectClassPerFileToMain: 0 && 0=Don't redirect to file.tx2, 1=Redirect to file.tx2 when selecting file.class.tx2
<<>>RedirectClassType: 0 && For classes created with UseClassPerFile>0 in the form file[.baseclass].class.tx2
<<>> && Those files could be imported like file.tx2::Class::import or like file[.baseclass].class.tx2
<<>> && For the second form:
<<>> && 0 Redirect file[.baseclass].class.tx2 to file.VCX and add / replace all other classes of this library
<<>> && 1 Redirect file[.baseclass].class.tx2 to file[.baseclass].class.VCX and do not touch file.VCX
<<>> && 2 Redirect file[.baseclass].class.tx2 to file.VCX and do not touch other classes of file.VCX
<<>>ClassPerFileCheck: 0 && 0=Don't check file.class.tx2 inclusion, 1=Check file.class.tx2 inclusion
<<>>
<<>>-- Example configuration for SourceSafe compatibility:
@@ -29793,6 +29857,12 @@ Define Class CL_LANG As Custom
<<>>UseClassPerFile: 0 && 0=Eine Textdatei pro VCX/SCX, 1=Mehrere Dateien <Dateiname>.KlassenName.vc2 files, 2=Mehrere Dateien <Dateiname>.Basisklasse.KlassenName.vc2
<<>> && Für 1, 2 wird jeweils auch ein Headerdatei <Dateiname>.vc2 erzeugt
<<>>RedirectClassPerFileToMain: 0 && 0=Keine Umlenkung, 1=Klassen (und Objekte) werden in die VCX/SCX geschrieben wenn eine Datei <Dateiname>[.Basisklasse].KlassenName.vc2 gewählt wurde
<<>>RedirectClassType: 0 && Für Textdateien die mit UseClassPerFile>0 in der Form file[.baseclass].class.tx2 erstellt wurden.
<<>> && diese Dateien können als file.tx2::Class::import oder als file[.baseclass].class.tx2 importiert werden.
<<>> && Für die zweite Form gilt:
<<>> && 0 Aus file[.baseclass].class.tx2 wird file.VCX und alle dclassen dieser Bibliothek werden neu gelesen
<<>> && 1 Aus file[.baseclass].class.tx2 wird file[.baseclass].class.VCX, die Bibliothek file.VCX wird ignoriert
<<>> && 2 Aus file[.baseclass].class.tx2 wird file.VCX aber alle anderen Klassen bleiben unverändert
<<>>ClassPerFileCheck: 0 && 0=Aus, 1=Teste, ob die Datei einbezogen <Dateiname>[.Basisklasse].KlassenName.vc2 wurde
<<>>
<<>>----------------------------------------------------------------------------------------------------------------
@@ -30006,6 +30076,12 @@ Define Class CL_LANG As Custom
<<>>- Class per file options (UseClassPerFile: 1)
<<>>UseClassPerFile: 0 && 0=One library tx2 file, 1=Multiple file.class.tx2 files, 2=Multiple file.baseclass.class.tx2 files
<<>>RedirectClassPerFileToMain: 0 && 0=Don't redirect to file.tx2, 1=Redirect to file.tx2 when selecting file.class.tx2
<<>>RedirectClassType: 0 && For classes created with UseClassPerFile>0 in the form file[.baseclass].class.tx2
<<>> && Those files could be imported like file.tx2::Class::import or like file[.baseclass].class.tx2
<<>> && For the second form:
<<>> && 0 Redirect file[.baseclass].class.tx2 to file.VCX and add / replace all other classes of this library
<<>> && 1 Redirect file[.baseclass].class.tx2 to file[.baseclass].class.VCX and do not touch file.VCX
<<>> && 2 Redirect file[.baseclass].class.tx2 to file.VCX and do not touch other classes of file.VCX
<<>>ClassPerFileCheck: 0 && 0=Don't check file.class.tx2 inclusion, 1=Check file.class.tx2 inclusion
<<>>
<<>>-- Example configuration for SourceSafe compatibility:
@@ -31465,3 +31541,4 @@ Define Class CL_MEMVAR_RECORD As CL_CUS_BASE
Enddefine