You've already forked lazarus-ccr
Added the option --unit-prefix to gir2pascal so that you can add a prefix to the generated units names.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2878 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -41,6 +41,7 @@ type
|
|||||||
FPaths: TStringList;
|
FPaths: TStringList;
|
||||||
FOutPutDirectory : String;
|
FOutPutDirectory : String;
|
||||||
FFileToConvert: String;
|
FFileToConvert: String;
|
||||||
|
FUnitPrefix: String;
|
||||||
FOverWriteFiles: Boolean;
|
FOverWriteFiles: Boolean;
|
||||||
FOptions: TgirOptions;
|
FOptions: TgirOptions;
|
||||||
procedure AddDefaultPaths;
|
procedure AddDefaultPaths;
|
||||||
@ -178,7 +179,7 @@ begin
|
|||||||
girFile.ParseXMLDocument(Doc);
|
girFile.ParseXMLDocument(Doc);
|
||||||
Doc.Free;
|
Doc.Free;
|
||||||
|
|
||||||
Writer := TgirPascalWriter.Create(girFile.NameSpaces, FOptions);
|
Writer := TgirPascalWriter.Create(girFile.NameSpaces, FOptions, FUnitPrefix);
|
||||||
Writer.OnUnitWriteEvent:= @WriteFile;
|
Writer.OnUnitWriteEvent:= @WriteFile;
|
||||||
Writer.GenerateUnits;
|
Writer.GenerateUnits;
|
||||||
|
|
||||||
@ -259,6 +260,9 @@ begin
|
|||||||
FFileToConvert:=FCmdOptions.OptionValue('input');
|
FFileToConvert:=FCmdOptions.OptionValue('input');
|
||||||
AddPaths(ExtractFilePath(FFileToConvert));
|
AddPaths(ExtractFilePath(FFileToConvert));
|
||||||
|
|
||||||
|
if FCmdOptions.HasOption('unit-prefix') then
|
||||||
|
FUnitPrefix := FCmdOptions.OptionValue('unit-prefix');
|
||||||
|
|
||||||
if FCmdOptions.HasOption('paths') then
|
if FCmdOptions.HasOption('paths') then
|
||||||
AddPaths(FCmdOptions.OptionValue('paths'));
|
AddPaths(FCmdOptions.OptionValue('paths'));
|
||||||
|
|
||||||
|
@ -33,12 +33,13 @@ type
|
|||||||
TgirPascalWriter = class
|
TgirPascalWriter = class
|
||||||
private
|
private
|
||||||
FDefaultUnitExtension: String;
|
FDefaultUnitExtension: String;
|
||||||
|
FUnitPrefix: String;
|
||||||
FOnUnitWriteEvent: TgirWriteEvent;
|
FOnUnitWriteEvent: TgirWriteEvent;
|
||||||
FNameSpaces: TgirNamespaces;
|
FNameSpaces: TgirNamespaces;
|
||||||
FUnits: TList;
|
FUnits: TList;
|
||||||
FOptions: TgirOptions;
|
FOptions: TgirOptions;
|
||||||
public
|
public
|
||||||
constructor Create(ANameSpaces: TgirNamespaces; AOptions: TgirOptions);
|
constructor Create(ANameSpaces: TgirNamespaces; AOptions: TgirOptions; AUnitPrefix: String);
|
||||||
procedure GenerateUnits;
|
procedure GenerateUnits;
|
||||||
property OnUnitWriteEvent: TgirWriteEvent read FOnUnitWriteEvent write FOnUnitWriteEvent;
|
property OnUnitWriteEvent: TgirWriteEvent read FOnUnitWriteEvent write FOnUnitWriteEvent;
|
||||||
property DefaultUnitExtension: String read FDefaultUnitExtension write FDefaultUnitExtension; // is .pas by default
|
property DefaultUnitExtension: String read FDefaultUnitExtension write FDefaultUnitExtension; // is .pas by default
|
||||||
@ -52,9 +53,10 @@ uses girCTypesMapping;
|
|||||||
|
|
||||||
{ TgirPascalWriter }
|
{ TgirPascalWriter }
|
||||||
|
|
||||||
constructor TgirPascalWriter.Create(ANameSpaces: TgirNamespaces; AOptions: TgirOptions);
|
constructor TgirPascalWriter.Create(ANameSpaces: TgirNamespaces; AOptions: TgirOptions; AUnitPrefix: String);
|
||||||
begin
|
begin
|
||||||
FNameSpaces := ANameSpaces;
|
FNameSpaces := ANameSpaces;
|
||||||
|
FUnitPrefix := AUnitPrefix;
|
||||||
FUnits := TList.Create;
|
FUnits := TList.Create;
|
||||||
FDefaultUnitExtension:='.pas';
|
FDefaultUnitExtension:='.pas';
|
||||||
FOptions:=AOptions;
|
FOptions:=AOptions;
|
||||||
@ -70,7 +72,7 @@ begin
|
|||||||
for i := 0 to FNameSpaces.Count-1 do
|
for i := 0 to FNameSpaces.Count-1 do
|
||||||
begin
|
begin
|
||||||
WriteLn(Format('Converting %s', [FNameSpaces.NameSpace[i].NameSpace]));
|
WriteLn(Format('Converting %s', [FNameSpaces.NameSpace[i].NameSpace]));
|
||||||
UnitGroup := TPascalUnitGroup.Create(Self, FNameSpaces.NameSpace[i], FOptions);
|
UnitGroup := TPascalUnitGroup.Create(Self, FNameSpaces.NameSpace[i], FOptions, FUnitPrefix);
|
||||||
UnitGroup.GenerateUnits;
|
UnitGroup.GenerateUnits;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -152,12 +152,13 @@ type
|
|||||||
FSimpleUnit: Boolean;
|
FSimpleUnit: Boolean;
|
||||||
FOptions: TgirOptions;
|
FOptions: TgirOptions;
|
||||||
FNameSpace: TgirNamespace;
|
FNameSpace: TgirNamespace;
|
||||||
|
FUnitPrefix: String;
|
||||||
FWriter: TObject;//girPascalWriter;
|
FWriter: TObject;//girPascalWriter;
|
||||||
FUnits: TFPList;
|
FUnits: TFPList;
|
||||||
//Units: array[TPascalUnitType] of TPascalUnit;
|
//Units: array[TPascalUnitType] of TPascalUnit;
|
||||||
function GetUnitForType(AType: TPascalUnitType): TPascalUnit;
|
function GetUnitForType(AType: TPascalUnitType): TPascalUnit;
|
||||||
public
|
public
|
||||||
constructor Create(AWriter: TObject{TgirPascalWriter}; ANameSpace: TgirNamespace; AOptions: TgirOptions);
|
constructor Create(AWriter: TObject{TgirPascalWriter}; ANameSpace: TgirNamespace; AOptions: TgirOptions; AUnitPrefix: String);
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
procedure GenerateUnits;
|
procedure GenerateUnits;
|
||||||
property UnitForType[AType: TPascalUnitType]: TPascalUnit read GetUnitForType;
|
property UnitForType[AType: TPascalUnitType]: TPascalUnit read GetUnitForType;
|
||||||
@ -170,6 +171,7 @@ type
|
|||||||
private
|
private
|
||||||
FDynamicLoadUnloadSection: TPCodeText;
|
FDynamicLoadUnloadSection: TPCodeText;
|
||||||
FDynamicEntryNames: TStringList;
|
FDynamicEntryNames: TStringList;
|
||||||
|
FUnitPrefix: String;
|
||||||
FGroup : TPascalUnitGroup;
|
FGroup : TPascalUnitGroup;
|
||||||
FOptions: TgirOptions;
|
FOptions: TgirOptions;
|
||||||
FFinalizeSection: TPFinialization;
|
FFinalizeSection: TPFinialization;
|
||||||
@ -187,6 +189,7 @@ type
|
|||||||
function GetUnitFileName: String;
|
function GetUnitFileName: String;
|
||||||
function GetUnitName: String;
|
function GetUnitName: String;
|
||||||
function GetUnitPostfix: String;
|
function GetUnitPostfix: String;
|
||||||
|
function UnitPrefix: String;
|
||||||
|
|
||||||
// functions to ensure the type is being written in the correct declaration
|
// functions to ensure the type is being written in the correct declaration
|
||||||
function WantTypeSection: TPDeclarationType;
|
function WantTypeSection: TPDeclarationType;
|
||||||
@ -241,7 +244,7 @@ type
|
|||||||
procedure ResolveFuzzyTypes;
|
procedure ResolveFuzzyTypes;
|
||||||
procedure AddTestType(AGType: TgirGType);
|
procedure AddTestType(AGType: TgirGType);
|
||||||
public
|
public
|
||||||
constructor Create(AGroup: TPascalUnitGroup; ANameSpace: TgirNamespace; AOptions: TgirOptions; AUnitType: TPascalUnitTypes);
|
constructor Create(AGroup: TPascalUnitGroup; ANameSpace: TgirNamespace; AOptions: TgirOptions; AUnitType: TPascalUnitTypes; AUnitPrefix: String);
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
procedure ProcessConsts(AList:TList); // of TgirBaseType descandants
|
procedure ProcessConsts(AList:TList); // of TgirBaseType descandants
|
||||||
procedure ProcessTypes(AList:TFPHashObjectList); // of TgirBaseType descandants
|
procedure ProcessTypes(AList:TFPHashObjectList); // of TgirBaseType descandants
|
||||||
@ -324,17 +327,18 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TPascalUnitGroup.Create(AWriter:TObject{TgirPascalWriter}; ANameSpace: TgirNamespace;
|
constructor TPascalUnitGroup.Create(AWriter:TObject{TgirPascalWriter}; ANameSpace: TgirNamespace;
|
||||||
AOptions: TgirOptions);
|
AOptions: TgirOptions; AUnitPrefix: String);
|
||||||
begin
|
begin
|
||||||
FWriter := AWriter;
|
FWriter := AWriter;
|
||||||
FNameSpace := ANameSpace;
|
FNameSpace := ANameSpace;
|
||||||
FOptions := AOptions;
|
FOptions := AOptions;
|
||||||
FUnits := TFPList.Create;
|
FUnits := TFPList.Create;
|
||||||
|
FUnitPrefix:=AUnitPrefix;
|
||||||
FSimpleUnit := ([goSeperateConsts, goClasses, goObjects] * AOptions ) = [];
|
FSimpleUnit := ([goSeperateConsts, goClasses, goObjects] * AOptions ) = [];
|
||||||
|
|
||||||
if FSimpleUnit then
|
if FSimpleUnit then
|
||||||
begin
|
begin
|
||||||
FUnits.Add(TPascalUnit.Create(Self, FNameSpace, FOptions, PascalUnitTypeAll));
|
FUnits.Add(TPascalUnit.Create(Self, FNameSpace, FOptions, PascalUnitTypeAll, FUnitPrefix));
|
||||||
//Units[utSimple] := TPascalUnit.Create(Self, FNameSpace, FOptions, [utSimple])
|
//Units[utSimple] := TPascalUnit.Create(Self, FNameSpace, FOptions, [utSimple])
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -343,11 +347,11 @@ begin
|
|||||||
//Units[utConsts] := TPascalUnit.Create(Self, FNameSpace, FOptions, [utConsts]);
|
//Units[utConsts] := TPascalUnit.Create(Self, FNameSpace, FOptions, [utConsts]);
|
||||||
//Units[utTypes] := TPascalUnit.Create(Self, FNameSpace, FOptions, [utTypes]);
|
//Units[utTypes] := TPascalUnit.Create(Self, FNameSpace, FOptions, [utTypes]);
|
||||||
//Units[utFunctions] := TPascalUnit.Create(Self, FNameSpace, FOptions, [utFunctions]);
|
//Units[utFunctions] := TPascalUnit.Create(Self, FNameSpace, FOptions, [utFunctions]);
|
||||||
FUnits.Add(TPascalUnit.Create(Self, FNameSpace, FOptions, PascalUnitTypeCommon));
|
FUnits.Add(TPascalUnit.Create(Self, FNameSpace, FOptions, PascalUnitTypeCommon, FUnitPrefix));
|
||||||
if goClasses in FOptions then
|
if goClasses in FOptions then
|
||||||
FUnits.Add(TPascalUnit.Create(Self, FNameSpace, FOptions, [utClasses]))
|
FUnits.Add(TPascalUnit.Create(Self, FNameSpace, FOptions, [utClasses], FUnitPrefix))
|
||||||
else
|
else
|
||||||
FUnits.Add(TPascalUnit.Create(Self, FNameSpace, FOptions, [utObjects]))
|
FUnits.Add(TPascalUnit.Create(Self, FNameSpace, FOptions, [utObjects], FUnitPrefix))
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
@ -560,7 +564,7 @@ end;
|
|||||||
|
|
||||||
function TPascalUnit.GetUnitFileName: String;
|
function TPascalUnit.GetUnitFileName: String;
|
||||||
begin
|
begin
|
||||||
Result := UnitName+GetUnitPostfix;
|
Result := UnitPrefix+UnitName+GetUnitPostfix;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TPascalUnit.GetUnitPostfix: String;
|
function TPascalUnit.GetUnitPostfix: String;
|
||||||
@ -803,6 +807,11 @@ begin
|
|||||||
FTestPascalBody.Add(Format('Test_%s;',[AGType.CType])); //call pascal testproc
|
FTestPascalBody.Add(Format('Test_%s;',[AGType.CType])); //call pascal testproc
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TPascalUnit.UnitPrefix: String;
|
||||||
|
begin
|
||||||
|
Result := FUnitPrefix;
|
||||||
|
end;
|
||||||
|
|
||||||
function TPascalUnit.WantTypeSection: TPDeclarationType;
|
function TPascalUnit.WantTypeSection: TPDeclarationType;
|
||||||
begin
|
begin
|
||||||
if (InterfaceSection.Declarations.Count = 0)
|
if (InterfaceSection.Declarations.Count = 0)
|
||||||
@ -2160,7 +2169,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TPascalUnit.Create(AGroup: TPascalUnitGroup; ANameSpace: TgirNamespace; AOptions: TgirOptions; AUnitType: TPascalUnitTypes);
|
constructor TPascalUnit.Create(AGroup: TPascalUnitGroup; ANameSpace: TgirNamespace; AOptions: TgirOptions; AUnitType: TPascalUnitTypes; AUnitPrefix: String);
|
||||||
const
|
const
|
||||||
//CBasic = '#include <%s>'+LineEnding;
|
//CBasic = '#include <%s>'+LineEnding;
|
||||||
PBasic = 'program %s_test;'+LineEnding+
|
PBasic = 'program %s_test;'+LineEnding+
|
||||||
@ -2182,6 +2191,7 @@ begin
|
|||||||
FGroup := AGroup;
|
FGroup := AGroup;
|
||||||
FOptions := AOptions;
|
FOptions := AOptions;
|
||||||
FUnitType:=AUnitType;
|
FUnitType:=AUnitType;
|
||||||
|
FUnitPrefix := AUnitPrefix;
|
||||||
FFinalizeSection := TPFinialization.Create(Self);
|
FFinalizeSection := TPFinialization.Create(Self);
|
||||||
FImplementationSection := TPImplementation.Create(Self);
|
FImplementationSection := TPImplementation.Create(Self);
|
||||||
FInitializeSection := TPInitialize.Create(Self);
|
FInitializeSection := TPInitialize.Create(Self);
|
||||||
@ -2310,7 +2320,7 @@ begin
|
|||||||
for i := 0 to FNameSpace.RequiredNameSpaces.Count-1 do
|
for i := 0 to FNameSpace.RequiredNameSpaces.Count-1 do
|
||||||
begin
|
begin
|
||||||
NS := TgirNamespace(FNameSpace.RequiredNameSpaces.Items[i]);
|
NS := TgirNamespace(FNameSpace.RequiredNameSpaces.Items[i]);
|
||||||
NeedUnit:=CalculateUnitName(NS.NameSpace,NS.Version);
|
NeedUnit:=UnitPrefix+CalculateUnitName(NS.NameSpace,NS.Version);
|
||||||
|
|
||||||
if FUnitType = PascalUnitTypeAll then
|
if FUnitType = PascalUnitTypeAll then
|
||||||
InterfaceSection.UsesSection.Units.Add(' '+NeedUnit)
|
InterfaceSection.UsesSection.Units.Add(' '+NeedUnit)
|
||||||
@ -2377,7 +2387,7 @@ begin
|
|||||||
Libs := GetLibs;
|
Libs := GetLibs;
|
||||||
Result := TStringStream.Create('');
|
Result := TStringStream.Create('');
|
||||||
Str.WriteString(IndentText('{ This is an autogenerated unit using gobject introspection (gir2pascal). Do not Edit. }',0,1));
|
Str.WriteString(IndentText('{ This is an autogenerated unit using gobject introspection (gir2pascal). Do not Edit. }',0,1));
|
||||||
Str.WriteString(IndentText('unit '+ UnitFileName+';',0,2));
|
Str.WriteString(IndentText('unit '+ UnitPrefix+UnitFileName+';',0,2));
|
||||||
Str.WriteString(IndentText('{$MODE OBJFPC}{$H+}',0,2));
|
Str.WriteString(IndentText('{$MODE OBJFPC}{$H+}',0,2));
|
||||||
if utTypes in FUnitType then
|
if utTypes in FUnitType then
|
||||||
Str.WriteString(IndentText('{$PACKRECORDS C}',0,1));
|
Str.WriteString(IndentText('{$PACKRECORDS C}',0,1));
|
||||||
|
Reference in New Issue
Block a user