You've already forked lazarus-ccr
android-sdk: Now tested that it can parse correctly the CheckBox
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1681 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -70,7 +70,7 @@
|
||||
<UnitName Value="androidmenu"/>
|
||||
<EditorIndex Value="5"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="77"/>
|
||||
<TopLine Value="51"/>
|
||||
<CursorPos X="25" Y="24"/>
|
||||
<UsageCount Value="10"/>
|
||||
<Loaded Value="True"/>
|
||||
@ -90,8 +90,8 @@
|
||||
<UnitName Value="androidview"/>
|
||||
<EditorIndex Value="7"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="109"/>
|
||||
<CursorPos X="59" Y="419"/>
|
||||
<TopLine Value="187"/>
|
||||
<CursorPos X="1" Y="219"/>
|
||||
<UsageCount Value="10"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit4>
|
||||
@ -130,8 +130,8 @@
|
||||
<IsVisibleTab Value="True"/>
|
||||
<EditorIndex Value="2"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="206"/>
|
||||
<CursorPos X="48" Y="229"/>
|
||||
<TopLine Value="263"/>
|
||||
<CursorPos X="55" Y="286"/>
|
||||
<UsageCount Value="20"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit8>
|
||||
@ -175,123 +175,123 @@
|
||||
<JumpHistory Count="30" HistoryIndex="29">
|
||||
<Position1>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="175" Column="35" TopLine="150"/>
|
||||
<Caret Line="157" Column="85" TopLine="124"/>
|
||||
</Position1>
|
||||
<Position2>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="21" Column="31" TopLine="40"/>
|
||||
<Caret Line="127" Column="88" TopLine="104"/>
|
||||
</Position2>
|
||||
<Position3>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="98" Column="42" TopLine="75"/>
|
||||
<Caret Line="151" Column="31" TopLine="129"/>
|
||||
</Position3>
|
||||
<Position4>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="84" Column="3" TopLine="77"/>
|
||||
<Caret Line="24" Column="24" TopLine="1"/>
|
||||
</Position4>
|
||||
<Position5>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="89" Column="1" TopLine="77"/>
|
||||
<Caret Line="25" Column="34" TopLine="1"/>
|
||||
</Position5>
|
||||
<Position6>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="114" Column="29" TopLine="91"/>
|
||||
<Caret Line="123" Column="82" TopLine="97"/>
|
||||
</Position6>
|
||||
<Position7>
|
||||
<Filename Value="../../../p-tools/turbochessclock4android/androidview.pas"/>
|
||||
<Caret Line="421" Column="3" TopLine="395"/>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="18" Column="26" TopLine="1"/>
|
||||
</Position7>
|
||||
<Position8>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="157" Column="85" TopLine="124"/>
|
||||
<Caret Line="124" Column="120" TopLine="101"/>
|
||||
</Position8>
|
||||
<Position9>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="127" Column="88" TopLine="104"/>
|
||||
<Caret Line="66" Column="44" TopLine="40"/>
|
||||
</Position9>
|
||||
<Position10>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="151" Column="31" TopLine="129"/>
|
||||
<Caret Line="21" Column="27" TopLine="1"/>
|
||||
</Position10>
|
||||
<Position11>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="24" Column="24" TopLine="1"/>
|
||||
<Caret Line="88" Column="3" TopLine="80"/>
|
||||
</Position11>
|
||||
<Position12>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="25" Column="34" TopLine="1"/>
|
||||
<Caret Line="128" Column="3" TopLine="66"/>
|
||||
</Position12>
|
||||
<Position13>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="123" Column="82" TopLine="97"/>
|
||||
<Caret Line="19" Column="61" TopLine="1"/>
|
||||
</Position13>
|
||||
<Position14>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="18" Column="26" TopLine="1"/>
|
||||
<Caret Line="21" Column="37" TopLine="2"/>
|
||||
</Position14>
|
||||
<Position15>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="124" Column="120" TopLine="101"/>
|
||||
<Caret Line="39" Column="18" TopLine="38"/>
|
||||
</Position15>
|
||||
<Position16>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="66" Column="44" TopLine="40"/>
|
||||
<Caret Line="301" Column="70" TopLine="267"/>
|
||||
</Position16>
|
||||
<Position17>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="21" Column="27" TopLine="1"/>
|
||||
<Caret Line="22" Column="35" TopLine="1"/>
|
||||
</Position17>
|
||||
<Position18>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="88" Column="3" TopLine="80"/>
|
||||
<Caret Line="237" Column="100" TopLine="196"/>
|
||||
</Position18>
|
||||
<Position19>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="128" Column="3" TopLine="66"/>
|
||||
<Caret Line="189" Column="3" TopLine="148"/>
|
||||
</Position19>
|
||||
<Position20>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="19" Column="61" TopLine="1"/>
|
||||
<Caret Line="247" Column="65" TopLine="219"/>
|
||||
</Position20>
|
||||
<Position21>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="21" Column="37" TopLine="2"/>
|
||||
<Caret Line="246" Column="49" TopLine="223"/>
|
||||
</Position21>
|
||||
<Position22>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="39" Column="18" TopLine="38"/>
|
||||
<Caret Line="154" Column="16" TopLine="145"/>
|
||||
</Position22>
|
||||
<Position23>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="301" Column="70" TopLine="267"/>
|
||||
<Caret Line="211" Column="20" TopLine="188"/>
|
||||
</Position23>
|
||||
<Position24>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="22" Column="35" TopLine="1"/>
|
||||
<Caret Line="26" Column="63" TopLine="1"/>
|
||||
</Position24>
|
||||
<Position25>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="237" Column="100" TopLine="196"/>
|
||||
<Caret Line="309" Column="32" TopLine="305"/>
|
||||
</Position25>
|
||||
<Position26>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="189" Column="3" TopLine="148"/>
|
||||
<Caret Line="26" Column="35" TopLine="1"/>
|
||||
</Position26>
|
||||
<Position27>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="247" Column="65" TopLine="219"/>
|
||||
<Caret Line="305" Column="54" TopLine="305"/>
|
||||
</Position27>
|
||||
<Position28>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="246" Column="49" TopLine="223"/>
|
||||
<Caret Line="24" Column="59" TopLine="1"/>
|
||||
</Position28>
|
||||
<Position29>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="154" Column="16" TopLine="145"/>
|
||||
<Caret Line="22" Column="27" TopLine="1"/>
|
||||
</Position29>
|
||||
<Position30>
|
||||
<Filename Value="android_sdk_bindings_gen.pas"/>
|
||||
<Caret Line="211" Column="20" TopLine="188"/>
|
||||
<Caret Line="23" Column="17" TopLine="1"/>
|
||||
</Position30>
|
||||
</JumpHistory>
|
||||
</ProjectOptions>
|
||||
|
@ -19,10 +19,13 @@ type
|
||||
FClassNum, FMethodNum: Integer;
|
||||
procedure ProcessModelFile(ASourceFile, APasOutputFile, AJavaOutputFile: string);
|
||||
procedure ProcessModelLine(ASourceLine: string);
|
||||
procedure ProcessModelMethodClass(ASourceLine: string);
|
||||
procedure ProcessModelMethodLine(ASourceLine: string);
|
||||
procedure ProcessModelClass(ASourceLine: string);
|
||||
procedure ProcessModelMethod(ASourceLine: string);
|
||||
procedure ProcessModelConstructor(ASourceLine: string);
|
||||
function GetNextWord(ALine: string; var AStartPos: Integer): string;
|
||||
function GetPascalTypeName(ABaseName: string): string;
|
||||
function GetJavaResultFunction(AReturnType: string): string;
|
||||
function GetJavaTypeReader(AType: string): string;
|
||||
public
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
@ -105,19 +108,25 @@ begin
|
||||
// Starting a new class
|
||||
if ASourceLine[1] = '[' then
|
||||
begin
|
||||
ProcessModelMethodClass(ASourceLine);
|
||||
ProcessModelClass(ASourceLine);
|
||||
Exit;
|
||||
end;
|
||||
|
||||
// Adding methods to a class
|
||||
if lCurWord = 'method' then
|
||||
begin
|
||||
ProcessModelMethodLine(ASourceLine);
|
||||
ProcessModelMethod(ASourceLine);
|
||||
Exit;
|
||||
end;
|
||||
|
||||
if lCurWord = 'constructor' then
|
||||
begin
|
||||
ProcessModelConstructor(ASourceLine);
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TAndroidSDKBindingsGen.ProcessModelMethodClass(ASourceLine: string);
|
||||
procedure TAndroidSDKBindingsGen.ProcessModelClass(ASourceLine: string);
|
||||
var
|
||||
lReaderPos: Integer = 1;
|
||||
lCurWord, lParentClassName: string;
|
||||
@ -146,7 +155,7 @@ begin
|
||||
FJavaOutputIDs.Add(' // ' + FClassName);
|
||||
end;
|
||||
|
||||
procedure TAndroidSDKBindingsGen.ProcessModelMethodLine(
|
||||
procedure TAndroidSDKBindingsGen.ProcessModelMethod(
|
||||
ASourceLine: string);
|
||||
var
|
||||
lReaderPos: Integer = 1;
|
||||
@ -179,17 +188,17 @@ begin
|
||||
FPasOutputImpl.Add(' vAndroidPipesComm.SendInt(Index); // Self, Java Pointer');
|
||||
|
||||
lJavaParamSelf := 'param_self_' + FClassName;
|
||||
FJavaOutputMethods.Add(' // ' + ASourceLine);
|
||||
FJavaOutputMethods.Add(' case ' + lIDString + ':');
|
||||
FJavaOutputMethods.Add(' DebugOut("' + lIDString + '");');
|
||||
FJavaOutputMethods.Add(' // Self');
|
||||
FJavaOutputMethods.Add(' lInt = MyAndroidPipesComm.GetInt();');
|
||||
FJavaOutputMethods.Add(' ' + lJavaParamSelf + ' = (' + FClassName + ') ViewElements.get(lInt);');
|
||||
FJavaOutputMethods.Add(' // params');
|
||||
FJavaOutputMethods.Add(' // ' + ASourceLine);
|
||||
FJavaOutputMethods.Add(' case ' + lIDString + ':');
|
||||
FJavaOutputMethods.Add(' DebugOut("' + lIDString + '");');
|
||||
FJavaOutputMethods.Add(' // Self');
|
||||
FJavaOutputMethods.Add(' lInt = MyAndroidPipesComm.GetInt();');
|
||||
FJavaOutputMethods.Add(' ' + lJavaParamSelf + ' = (' + FClassName + ') ViewElements.get(lInt);');
|
||||
FJavaOutputMethods.Add(' // params');
|
||||
|
||||
// Lists of constants for the IDs
|
||||
FPasOutputIDs.Add(' ' + lIDString + ' = 0' + IntToHex(FClassNum*$1000+FMethodNum, 8) + ';');
|
||||
FJavaOutputIDs.Add(' static final int ' + lIDString + ' = 0x0' + IntToHex(FClassNum*$1000+FMethodNum, 8) + ';');
|
||||
FPasOutputIDs.Add(' ' + lIDString + ' = $' + IntToHex(FClassNum*$1000+FMethodNum, 8) + ';');
|
||||
FJavaOutputIDs.Add(' static final int ' + lIDString + ' = 0x' + IntToHex(FClassNum*$1000+FMethodNum, 8) + ';');
|
||||
|
||||
// Add all parameters
|
||||
TmpStr := lMethodName + '(';
|
||||
@ -208,7 +217,7 @@ begin
|
||||
|
||||
// Java parameter reading
|
||||
lJavaParamVar := 'l' + lParamType + '_' + IntToStr(lParamNum);
|
||||
FJavaOutputMethods.Add(' ' + lJavaParamVar + ' = MyAndroidPipesComm.GetInt();');
|
||||
FJavaOutputMethods.Add(' ' + lJavaParamVar + ' = MyAndroidPipesComm.' + GetJavaTypeReader(lParamType) + '();');
|
||||
lJavaParams := lJavaParams + lJavaParamVar + ', ';
|
||||
|
||||
Inc(lParamNum);
|
||||
@ -236,18 +245,57 @@ begin
|
||||
FPasOutputImpl.Add('end;');
|
||||
FPasOutputImpl.Add('');
|
||||
|
||||
FJavaOutputMethods.Add(' //');
|
||||
FJavaOutputMethods.Add(' //');
|
||||
if lMethodReturn = 'void' then
|
||||
begin
|
||||
FJavaOutputMethods.Add(' ' + lJavaParamSelf + '.' + lMethodName + '(' + lJavaParams + ');');
|
||||
FJavaOutputMethods.Add(' MyAndroidPipesComm.SendResult();');
|
||||
FJavaOutputMethods.Add(' ' + lJavaParamSelf + '.' + lMethodName + '(' + lJavaParams + ');');
|
||||
FJavaOutputMethods.Add(' MyAndroidPipesComm.SendResult();');
|
||||
end
|
||||
else
|
||||
begin
|
||||
FJavaOutputMethods.Add(' lResult_' + lMethodReturn + ' = ' + lJavaParamSelf + '.' + lMethodName + '(' + lJavaParams + ');');
|
||||
FJavaOutputMethods.Add(' MyAndroidPipesComm.SendIntResult(lResult_' + lMethodReturn + ');');
|
||||
FJavaOutputMethods.Add(' lResult_' + lMethodReturn + ' = ' + lJavaParamSelf + '.' + lMethodName + '(' + lJavaParams + ');');
|
||||
FJavaOutputMethods.Add(' MyAndroidPipesComm.' + GetJavaResultFunction(lMethodReturn) + '(lResult_' + lMethodReturn + ');');
|
||||
end;
|
||||
FJavaOutputMethods.Add(' break;');
|
||||
FJavaOutputMethods.Add(' break;');
|
||||
|
||||
Inc(FMethodNum);
|
||||
end;
|
||||
|
||||
procedure TAndroidSDKBindingsGen.ProcessModelConstructor(ASourceLine: string);
|
||||
var
|
||||
lReaderPos: Integer = 1;
|
||||
lCurWord: string;
|
||||
lParamNum: Integer = 1;
|
||||
lMethodName, lParamType, lParamTypePas, lParamName: string;
|
||||
DeclarationBase, TmpStr, lIDString: string;
|
||||
FPasOutputImplCurLine: Integer;
|
||||
begin
|
||||
if ASourceLine = '' then Exit;
|
||||
|
||||
lCurWord := GetNextWord(ASourceLine, lReaderPos);
|
||||
|
||||
// Method type and name
|
||||
lMethodName := GetNextWord(ASourceLine, lReaderPos);
|
||||
|
||||
lIDString := 'amkUI_' + FClassNamePas + '_' + lMethodName;
|
||||
|
||||
FPasOutputClasses.Add(' constructor ' + lMethodName + '();');
|
||||
|
||||
FPasOutputImpl.Add('constructor ' + FClassNamePas + '.' + lMethodName + '();');
|
||||
FPasOutputImpl.Add('begin');
|
||||
FPasOutputImpl.Add(' vAndroidPipesComm.SendByte(ShortInt(amkUICommand));');
|
||||
FPasOutputImpl.Add(' vAndroidPipesComm.SendInt(' + lIDString + ');');
|
||||
FPasOutputImpl.Add(' Index := vAndroidPipesComm.WaitForIntReturn();');
|
||||
FPasOutputImpl.Add('end;');
|
||||
|
||||
FPasOutputIDs.Add(' ' + lIDString + ' = $' + IntToHex(FClassNum*$1000+FMethodNum, 8) + ';');
|
||||
FJavaOutputIDs.Add(' static final int ' + lIDString + ' = 0x' + IntToHex(FClassNum*$1000+FMethodNum, 8) + ';');
|
||||
|
||||
FJavaOutputMethods.Add(' case ' + lIDString + ':');
|
||||
FJavaOutputMethods.Add(' DebugOut("' + lIDString + '");');
|
||||
FJavaOutputMethods.Add(' ViewElements.add(new ' + FClassName + '(activity));');
|
||||
FJavaOutputMethods.Add(' MyAndroidPipesComm.SendIntResult(ViewElements.size() - 1);');
|
||||
FJavaOutputMethods.Add(' break;');
|
||||
|
||||
Inc(FMethodNum);
|
||||
end;
|
||||
@ -301,6 +349,19 @@ begin
|
||||
else Result := 'T' + ABaseName;
|
||||
end;
|
||||
|
||||
function TAndroidSDKBindingsGen.GetJavaResultFunction(AReturnType: string
|
||||
): string;
|
||||
begin
|
||||
if AReturnType = 'boolean' then Result := 'SendBoolResult'
|
||||
else Result := 'SendIntResult';
|
||||
end;
|
||||
|
||||
function TAndroidSDKBindingsGen.GetJavaTypeReader(AType: string): string;
|
||||
begin
|
||||
if AType = 'boolean' then Exit('GetBool')
|
||||
else Exit('GetInt');
|
||||
end;
|
||||
|
||||
constructor TAndroidSDKBindingsGen.Create;
|
||||
begin
|
||||
FSourceFile := TStringList.Create;
|
||||
|
Reference in New Issue
Block a user