* Updated the gui-project for the new type-mappings

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2356 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
loesje_
2012-03-19 14:10:59 +00:00
parent 2610161021
commit 63822c9462
6 changed files with 37 additions and 73 deletions

View File

@ -161,6 +161,7 @@ var
IDLString: string;
pCurrent: pchar;
AWord: string;
LineNr: integer;
pWordStart: pchar;
wordchars: set of char;
UUIDAttribute: string;

View File

@ -0,0 +1,15 @@
wstring=PWideChar
string=PAnsiChar
boolean=longbool
FILE=PFILE
nsQIResult,out=
nsCIDRef,in=TGuid,constref
nsIIDRef,in=TGuid,constref
long=idllong
short=idlshort
float=idlfloat
long,unsigned=idlulong
short,unsigned=idlushort
float,unsigned=idlufloat
AUTF8String,f=AUTF8String,
DOMString,f=DOMString,

View File

@ -96,7 +96,7 @@ begin
try
IDLList.OwnsObjects:=true;
ParseFile(IDLList, memoIDLFile.Lines);
GeneratePascalSource(IDLList,memoPascalfile.Lines,TypeSettings.ValueListEditor1.Strings,TypeSettings.cTypes.Lines, cbParamPrefix.Checked);
GeneratePascalSource(IDLList,memoPascalfile.Lines,TypeSettings.ValueListEditor1.Strings, cbParamPrefix.Checked);
finally
IDLList.Free;
end;

View File

@ -26,10 +26,10 @@ object TypeSettings: TTypeSettings
AutoFillColumns = True
FixedCols = 0
FixedRows = 0
RowCount = 3
RowCount = 4
TabOrder = 0
Strings.Strings = (
'--=see lazarus bug 21480 '
'IDL-Type=Pascal-Type'
'wstring=PWideChar'
'boolean=longbool'
''
@ -123,28 +123,6 @@ object TypeSettings: TTypeSettings
ClientHeight = 277
ClientWidth = 253
TabOrder = 2
object cTypes: TMemo
Left = 0
Height = 225
Top = 22
Width = 253
Align = alClient
Lines.Strings = (
'long'
'short'
'float'
)
TabOrder = 0
end
object Label3: TLabel
Left = 0
Height = 22
Top = 0
Width = 253
Align = alTop
Caption = 'List of c-types'
ParentColor = False
end
object pCListBottom: TPanel
Left = 0
Height = 30
@ -152,31 +130,18 @@ object TypeSettings: TTypeSettings
Width = 253
Align = alBottom
BevelOuter = bvNone
ClientHeight = 30
ClientWidth = 253
TabOrder = 1
object bSaveClist: TButton
Left = 151
Height = 26
Top = 2
Width = 100
Align = alRight
BorderSpacing.Around = 2
Caption = 'Save to file'
OnClick = bSaveClistClick
TabOrder = 0
end
object bLoadCList: TButton
Left = 2
Height = 26
Top = 2
Width = 100
Align = alLeft
BorderSpacing.Around = 2
Caption = 'Load from file'
OnClick = bLoadCListClick
TabOrder = 1
end
TabOrder = 0
end
object Label1: TLabel
Left = 3
Height = 241
Top = 3
Width = 247
Align = alClient
BorderSpacing.Around = 3
Caption = 'Each IDL-Type is transated into it''s corresponding Pascal-Type. '#10#10'There are some special cases. It could be that an idl-type has the flag ''unsigned''. You can specify how to handle this flag by adding '',unsigned'' to the IDL-typename. For example:'#10'long,unsigned=culong'#10'translated unsigned long types to the culong type from fpc''s ctypes unit.'#10#10'It is possible to specify to add ''var'',''constref'',''out'' or ''const'' when a type is passed as a variable, by adding '',var'', '',const'' etc to the Pascal-typename. For example'#10'pchar=char,var'#10'will adapt idl-type pchar parameters to ''var paramname: char''.'#10#10'In IDL it is possible to set a function parameter to ''in'',''out'' or ''inout''. To specify how to handle these you have to add '',in'','',out'' or '',inout'' to the IDL-typename. For example:'#10'nsCIDRef,in=TGuid,constref'#10'will translate nsCIDRef parameters which are marked with the ''in'' keyword to ''constref AParamName: TGuid''.'#10#10'When the Pascal-type is left empty, A parameter is translated to ''out ParamName'' with further no additions.'#10#10'When the IDL-parses has to do something special when a given IDL-type is a function result, add the '',f'' suffix to the IDL-typename. When the Pascal-typename of such a rule contains a comma (,) the parameter will be forced to be passed as a parameter, and not as a function result.'
ParentColor = False
WordWrap = True
end
end
object OpenDialog: TOpenDialog

View File

@ -43,13 +43,10 @@ type
{ TTypeSettings }
TTypeSettings = class(TForm)
bLoadCList: TButton;
bSaveMap: TButton;
bLoadMap: TButton;
bSaveClist: TButton;
cTypes: TMemo;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
OpenDialog: TOpenDialog;
pMapBottom: TPanel;
pCListBottom: TPanel;
@ -58,9 +55,7 @@ type
SaveDialog: TSaveDialog;
Splitter1: TSplitter;
ValueListEditor1: TValueListEditor;
procedure bLoadCListClick(Sender: TObject);
procedure bLoadMapClick(Sender: TObject);
procedure bSaveClistClick(Sender: TObject);
procedure bSaveMapClick(Sender: TObject);
private
{ private declarations }
@ -83,18 +78,6 @@ begin
ValueListEditor1.Strings.LoadFromFile(OpenDialog.FileName);
end;
procedure TTypeSettings.bSaveClistClick(Sender: TObject);
begin
if SaveDialog.Execute then
cTypes.Lines.SaveToFile(SaveDialog.FileName);
end;
procedure TTypeSettings.bLoadCListClick(Sender: TObject);
begin
if OpenDialog.Execute then
cTypes.Lines.LoadFromFile(OpenDialog.FileName);
end;
procedure TTypeSettings.bSaveMapClick(Sender: TObject);
begin
if SaveDialog.Execute then

View File

@ -6,11 +6,11 @@ It could be that it can be used or extended to parse idl-files from other
projects, but I never tested that.
The generated Pascal-sources are as close as possible to the original idl
files. C-types are converted to their corresponding types in fpc's ctypes
unit.
files.
It is possible to map some types from their idl to Pascal name. You can also
specify which types have to be converted to their ctypes-unit equivalent.
It is possible to specify what to do with each idl-type and how to
translate them into Pascal code. These settings are passed in a separate
configuration file. An example of such a file is idltypemap.cfg.
All files are licensed by the modified LGPL, as used in the Lazarus LCL.
@ -18,4 +18,4 @@ I hope this is useful for someone,
Joost van der Sluis, CNOC
March 14, 2012
March 19, 2012