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

View File

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