More advances for the android sdk bindings gen

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1680 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
sekelsenmat
2011-06-15 13:39:45 +00:00
parent 2dbb8ee493
commit d734ddb71b
2 changed files with 51 additions and 50 deletions

View File

@ -130,8 +130,8 @@
<IsVisibleTab Value="True"/>
<EditorIndex Value="2"/>
<WindowIndex Value="0"/>
<TopLine Value="219"/>
<CursorPos X="65" Y="247"/>
<TopLine Value="206"/>
<CursorPos X="48" Y="229"/>
<UsageCount Value="20"/>
<Loaded Value="True"/>
</Unit8>
@ -165,7 +165,7 @@
<Filename Value="../../../p-tools/turbochessclock4android/android/src/com/pascal/turbochessclock/AndroidView.java"/>
<EditorIndex Value="3"/>
<WindowIndex Value="0"/>
<TopLine Value="157"/>
<TopLine Value="183"/>
<CursorPos X="39" Y="177"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
@ -175,123 +175,123 @@
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="144" Column="33" TopLine="110"/>
<Caret Line="175" Column="35" TopLine="150"/>
</Position1>
<Position2>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="90" Column="143" TopLine="78"/>
<Caret Line="21" Column="31" TopLine="40"/>
</Position2>
<Position3>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="22" Column="24" TopLine="1"/>
<Caret Line="98" Column="42" TopLine="75"/>
</Position3>
<Position4>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="116" Column="21" TopLine="96"/>
<Caret Line="84" Column="3" TopLine="77"/>
</Position4>
<Position5>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="175" Column="35" TopLine="150"/>
<Caret Line="89" Column="1" TopLine="77"/>
</Position5>
<Position6>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="21" Column="31" TopLine="40"/>
<Caret Line="114" Column="29" TopLine="91"/>
</Position6>
<Position7>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="98" Column="42" TopLine="75"/>
<Filename Value="../../../p-tools/turbochessclock4android/androidview.pas"/>
<Caret Line="421" Column="3" TopLine="395"/>
</Position7>
<Position8>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="84" Column="3" TopLine="77"/>
<Caret Line="157" Column="85" TopLine="124"/>
</Position8>
<Position9>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="89" Column="1" TopLine="77"/>
<Caret Line="127" Column="88" TopLine="104"/>
</Position9>
<Position10>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="114" Column="29" TopLine="91"/>
<Caret Line="151" Column="31" TopLine="129"/>
</Position10>
<Position11>
<Filename Value="../../../p-tools/turbochessclock4android/androidview.pas"/>
<Caret Line="421" Column="3" TopLine="395"/>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="24" Column="24" TopLine="1"/>
</Position11>
<Position12>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="157" Column="85" TopLine="124"/>
<Caret Line="25" Column="34" TopLine="1"/>
</Position12>
<Position13>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="127" Column="88" TopLine="104"/>
<Caret Line="123" Column="82" TopLine="97"/>
</Position13>
<Position14>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="151" Column="31" TopLine="129"/>
<Caret Line="18" Column="26" TopLine="1"/>
</Position14>
<Position15>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="24" Column="24" TopLine="1"/>
<Caret Line="124" Column="120" TopLine="101"/>
</Position15>
<Position16>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="25" Column="34" TopLine="1"/>
<Caret Line="66" Column="44" TopLine="40"/>
</Position16>
<Position17>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="123" Column="82" TopLine="97"/>
<Caret Line="21" Column="27" TopLine="1"/>
</Position17>
<Position18>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="18" Column="26" TopLine="1"/>
<Caret Line="88" Column="3" TopLine="80"/>
</Position18>
<Position19>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="124" Column="120" TopLine="101"/>
<Caret Line="128" Column="3" TopLine="66"/>
</Position19>
<Position20>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="66" Column="44" TopLine="40"/>
<Caret Line="19" Column="61" TopLine="1"/>
</Position20>
<Position21>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="21" Column="27" TopLine="1"/>
<Caret Line="21" Column="37" TopLine="2"/>
</Position21>
<Position22>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="88" Column="3" TopLine="80"/>
<Caret Line="39" Column="18" TopLine="38"/>
</Position22>
<Position23>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="128" Column="3" TopLine="66"/>
<Caret Line="301" Column="70" TopLine="267"/>
</Position23>
<Position24>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="19" Column="61" TopLine="1"/>
<Caret Line="22" Column="35" TopLine="1"/>
</Position24>
<Position25>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="21" Column="37" TopLine="2"/>
<Caret Line="237" Column="100" TopLine="196"/>
</Position25>
<Position26>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="39" Column="18" TopLine="38"/>
<Caret Line="189" Column="3" TopLine="148"/>
</Position26>
<Position27>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="301" Column="70" TopLine="267"/>
<Caret Line="247" Column="65" TopLine="219"/>
</Position27>
<Position28>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="22" Column="35" TopLine="1"/>
<Caret Line="246" Column="49" TopLine="223"/>
</Position28>
<Position29>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="237" Column="100" TopLine="196"/>
<Caret Line="154" Column="16" TopLine="145"/>
</Position29>
<Position30>
<Filename Value="android_sdk_bindings_gen.pas"/>
<Caret Line="189" Column="3" TopLine="148"/>
<Caret Line="211" Column="20" TopLine="188"/>
</Position30>
</JumpHistory>
</ProjectOptions>

View File

@ -15,7 +15,7 @@ type
private
FSourceFile, FPasOutputClasses, FPasOutputIDs, FPasOutputImpl: TStringList;
FJavaOutputIDs, FJavaOutputMethods: TStringList;
FClassName: string; // Class name of the class currently being parsed
FClassName, FClassNamePas: string; // Class name of the class currently being parsed
FClassNum, FMethodNum: Integer;
procedure ProcessModelFile(ASourceFile, APasOutputFile, AJavaOutputFile: string);
procedure ProcessModelLine(ASourceLine: string);
@ -132,16 +132,17 @@ begin
FPasOutputClasses.Add('');
end;
FClassName := GetPascalTypeName(lCurWord);
FClassNamePas := GetPascalTypeName(lCurWord);
FClassName := lCurWord;
lParentClassName := GetNextWord(ASourceLine, lReaderPos);
lParentClassName := GetPascalTypeName(lParentClassName);
FPasOutputClasses.Add(Format(' %s = class(%s)', [FClassName, lParentClassName]));
FPasOutputClasses.Add(Format(' %s = class(%s)', [FClassNamePas, lParentClassName]));
FPasOutputClasses.Add(' public');
lCurWord := GetNextWord(ASourceLine, lReaderPos);
Inc(FClassNum);
FMethodNum := 0;
FPasOutputIDs.Add(' // ' + FClassName);
FPasOutputIDs.Add(' // ' + FClassNamePas);
FJavaOutputIDs.Add(' // ' + FClassName);
end;
@ -151,7 +152,7 @@ var
lReaderPos: Integer = 1;
lParamNum: Integer = 1;
lCurWord, lParentClassName: string;
lMethodReturn, lMethodName, lParamType, lParamName: string;
lMethodReturn, lMethodReturnPas, lMethodName, lParamType, lParamTypePas, lParamName: string;
DeclarationBase, TmpStr, lIDString: string;
FPasOutputImplCurLine: Integer;
lJavaParamVar, lJavaParams, lJavaParamSelf: string;
@ -162,7 +163,7 @@ begin
// Method type and name
lMethodReturn := GetNextWord(ASourceLine, lReaderPos);
lMethodReturn := GetPascalTypeName(lMethodReturn);
lMethodReturnPas := GetPascalTypeName(lMethodReturn);
lMethodName := GetNextWord(ASourceLine, lReaderPos);
if lMethodReturn = 'void' then DeclarationBase := 'procedure '
@ -170,7 +171,7 @@ begin
// Beginning of the implementation part
FPasOutputImplCurLine := FPasOutputImpl.Count;
lIDString := 'amkUI_' + FClassName + '_' + lMethodName;
lIDString := 'amkUI_' + FClassNamePas + '_' + lMethodName;
FPasOutputImpl.Add('begin');
FPasOutputImpl.Add(' vAndroidPipesComm.SendByte(ShortInt(amkUICommand));');
@ -195,12 +196,12 @@ begin
repeat
lParamType := GetNextWord(ASourceLine, lReaderPos);
lParamType := GetPascalTypeName(lParamType);
lParamTypePas := GetPascalTypeName(lParamType);
lParamName := GetNextWord(ASourceLine, lReaderPos);
if lParamName = '' then Break;
TmpStr := TmpStr + lParamName + ': ' + lParamType + '; ';
TmpStr := TmpStr + lParamName + ': ' + lParamTypePas + '; ';
// Pascal parameter sending
FPasOutputImpl.Add(' vAndroidPipesComm.SendInt(Integer(' + lParamName + '));');
@ -226,12 +227,12 @@ begin
end
else
begin
TmpStr := TmpStr + '): ' + lMethodReturn + ';';
TmpStr := TmpStr + '): ' + lMethodReturnPas + ';';
FPasOutputImpl.Add(' Result := Boolean(vAndroidPipesComm.WaitForIntReturn());');
end;
FPasOutputClasses.Add(' ' + DeclarationBase + TmpStr);
FPasOutputImpl.Insert(FPasOutputImplCurLine, DeclarationBase + FClassName + '.' + TmpStr);
FPasOutputImpl.Insert(FPasOutputImplCurLine, DeclarationBase + FClassNamePas + '.' + TmpStr);
FPasOutputImpl.Add('end;');
FPasOutputImpl.Add('');
@ -243,7 +244,7 @@ begin
end
else
begin
FJavaOutputMethods.Add(' lResult_' + lMethodReturn + ' ' + lJavaParamSelf + '.' + lMethodName + '(' + lJavaParams + ');');
FJavaOutputMethods.Add(' lResult_' + lMethodReturn + ' = ' + lJavaParamSelf + '.' + lMethodName + '(' + lJavaParams + ');');
FJavaOutputMethods.Add(' MyAndroidPipesComm.SendIntResult(lResult_' + lMethodReturn + ');');
end;
FJavaOutputMethods.Add(' break;');
@ -329,9 +330,9 @@ end;
procedure TAndroidSDKBindingsGen.GenerateAllBindings(AInputDir, APasOutputDir,
AJavaOutputDir: string);
begin
ProcessModelFile(IncludeTrailingPathDelimiter(AInputDir) + 'android_view.txt',
IncludeTrailingPathDelimiter(APasOutputDir) + 'android_view.pas',
IncludeTrailingPathDelimiter(AJavaOutputDir) + 'android_view.java');
ProcessModelFile(IncludeTrailingPathDelimiter(AInputDir) + 'android_all.txt',
IncludeTrailingPathDelimiter(APasOutputDir) + 'android_all.pas',
IncludeTrailingPathDelimiter(AJavaOutputDir) + 'android_all.java');
end;
initialization