Worker thread
This commit is contained in:
@@ -1,17 +1,13 @@
|
|||||||
unit AG.PascalTokenizer;
|
unit AG.PascalTokenizer;
|
||||||
|
{$IFDEF FPC}
|
||||||
|
{$MODE Delphi}
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
{$IFDEF FPC}
|
SysUtils, Classes, IniFiles, SyncObjs, Generics.Collections;
|
||||||
SysUtils,Classes
|
|
||||||
{$ELSE}
|
|
||||||
System.Generics.Collections,System.SysUtils,System.Classes
|
|
||||||
{$ENDIF};
|
|
||||||
|
|
||||||
{$IFDEF FPC}
|
|
||||||
{$mode Delphi}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
type
|
type
|
||||||
TAGTokenizerPos = record
|
TAGTokenizerPos = record
|
||||||
@@ -22,13 +18,13 @@ type
|
|||||||
Text:string;
|
Text:string;
|
||||||
&begin, &end: TAGTokenizerPos;
|
&begin, &end: TAGTokenizerPos;
|
||||||
ended: boolean;
|
ended: boolean;
|
||||||
{$IFNDEF FPC}constructor Create(Text: string; &begin, &end: TAGTokenizerPos;ended:boolean);{$ENDIF}
|
procedure Make(const Text:string;&begin, &end: TAGTokenizerPos;ended: boolean);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TAGPasTokenizer = class
|
TAGPasTokenizer = class
|
||||||
strict protected
|
strict protected
|
||||||
s: TStrings;
|
FStrings: TStrings;
|
||||||
y: integer;
|
FLineIx: integer;
|
||||||
x: integer;
|
x: integer;
|
||||||
function DoReadable(): boolean;
|
function DoReadable(): boolean;
|
||||||
function IsReadable(): boolean;
|
function IsReadable(): boolean;
|
||||||
@@ -41,59 +37,76 @@ type
|
|||||||
function GetNext(): TAGToken;
|
function GetNext(): TAGToken;
|
||||||
// procedure read_next();
|
// procedure read_next();
|
||||||
constructor Create(input: TStrings);
|
constructor Create(input: TStrings);
|
||||||
property Pos:TAGTokenizerPos read GetPos write SetPos;
|
property pos: TAGTokenizerPos read GetPos write SetPos;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFNDEF FPC}
|
|
||||||
TAGPasTokenizerStack = class
|
TAGPasTokenizerStack = class
|
||||||
strict protected
|
strict protected
|
||||||
type
|
type
|
||||||
GetCall=reference to function(Tokenizer:TAGPasTokenizer):TAGToken;
|
GetCall = function(Tokenizer: TAGPasTokenizer): TAGToken of object;
|
||||||
|
|
||||||
var
|
var
|
||||||
Stack:TStack<TAGToken>;
|
Stack: TQueue<TAGToken>;
|
||||||
Tokenizer: TAGPasTokenizer;
|
Tokenizer: TAGPasTokenizer;
|
||||||
Get: GetCall;
|
Get: GetCall;
|
||||||
function GetLast():TAGToken;
|
IsEnd: boolean;
|
||||||
function IsEnded():Boolean;
|
function GetLast(): TAGToken;virtual;
|
||||||
|
function GetWithComments(Tokenizer: TAGPasTokenizer): TAGToken;
|
||||||
|
function GetWithoutComments(Tokenizer: TAGPasTokenizer): TAGToken;
|
||||||
|
destructor Destroy;override;
|
||||||
|
protected
|
||||||
|
function GetCachedCount: integer;inline;
|
||||||
public
|
public
|
||||||
constructor Create(input: TStrings;GetComments: boolean = True);
|
constructor Create(input: TStrings;GetComments: boolean = True);
|
||||||
procedure Push(t:TAGToken);
|
procedure Push(const t: TAGToken);virtual;
|
||||||
function Pop():TAGToken;
|
function Pop(): TAGToken;virtual;
|
||||||
property Last: TAGToken read GetLast write Push;
|
property Last: TAGToken read GetLast write Push;
|
||||||
property Ended:Boolean read IsEnded;
|
property ended: boolean read IsEnd;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{TAGPasTokenizerParallelStack=class(TAGPasTokenizerStack)
|
TAGPasTokenizerParallelStack = class(TAGPasTokenizerStack)
|
||||||
strict protected
|
strict protected
|
||||||
var
|
type
|
||||||
Stack:TStack<TAGToken>;
|
TWorkerThread = class(TThread)
|
||||||
Tokenizer:TAGPasTokenizer;
|
strict protected
|
||||||
Get:GetCall;
|
FStack: TAGPasTokenizerParallelStack;
|
||||||
function GetLast():TAGToken;
|
procedure Execute;override;
|
||||||
function IsEnded():Boolean;
|
|
||||||
public
|
public
|
||||||
constructor Create(input:TStrings;GetComments:boolean=True);
|
Idling: boolean;
|
||||||
procedure Push(t:TAGToken);
|
constructor Create(const Stack: TAGPasTokenizerParallelStack);
|
||||||
function Pop():TAGToken;
|
end;
|
||||||
end; }
|
|
||||||
{$ENDIF}
|
var
|
||||||
|
FWorker: TWorkerThread;
|
||||||
|
FStackLock: TCriticalSection;
|
||||||
|
function AddTokenToStack: boolean;
|
||||||
|
function GetLast(): TAGToken;override;
|
||||||
|
procedure EnsureThreadDone();
|
||||||
|
destructor Destroy;override;
|
||||||
|
protected
|
||||||
|
FStackHalfMax: integer;
|
||||||
|
FSignal: TEvent;
|
||||||
|
procedure Push(const t: TAGToken);override;
|
||||||
|
public
|
||||||
|
constructor Create(const input: TStrings;GetComments: boolean = True;
|
||||||
|
stackMax: integer = 1000);
|
||||||
|
function Pop(): TAGToken;override;
|
||||||
|
end;
|
||||||
|
|
||||||
function IsComment(s:string): boolean;
|
function IsComment(s:string): boolean;
|
||||||
function IsName(s:string): boolean;
|
function IsName(s:string): boolean;
|
||||||
function IsString(s: string): boolean;
|
function IsString(const s:string): boolean;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
{$IFNDEF FPC}
|
procedure TAGToken.Make(const Text:string;&begin, &end: TAGTokenizerPos;ended:
|
||||||
constructor TAGToken.Create(Text: string; &begin, &end: TAGTokenizerPos;
|
boolean);
|
||||||
ended: boolean);
|
|
||||||
begin
|
begin
|
||||||
Self.Text := Text;
|
Self.Text := Text;
|
||||||
Self.&begin := &begin;
|
Self.&begin := &begin;
|
||||||
Self.&end := &end;
|
Self.&end := &end;
|
||||||
Self.ended := ended;
|
Self.ended := ended;
|
||||||
end;
|
end;
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
const
|
const
|
||||||
SYMS1 = '()[]/|\@#=><:;,.$+-*^';
|
SYMS1 = '()[]/|\@#=><:;,.$+-*^';
|
||||||
@@ -104,7 +117,7 @@ const
|
|||||||
fix = {$IFDEF NEXTGEN}-1{$ELSE}0{$ENDIF};
|
fix = {$IFDEF NEXTGEN}-1{$ELSE}0{$ENDIF};
|
||||||
|
|
||||||
var
|
var
|
||||||
SYMS2:{$IFDEF FPC}TStringList{$ELSE}TList<string>{$ENDIF}; // array[0..8]of string=();
|
SYMS2: THashedStringList;
|
||||||
|
|
||||||
function IsComment(s:string): boolean;
|
function IsComment(s:string): boolean;
|
||||||
begin
|
begin
|
||||||
@@ -129,29 +142,29 @@ begin
|
|||||||
Result := True;
|
Result := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function IsString(s: string):boolean;
|
function IsString(const s:string): boolean;
|
||||||
begin
|
begin
|
||||||
Result:=s.StartsWith(#39);
|
Result := s.startswith(#39);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAGPasTokenizer.DoReadable(): boolean;
|
function TAGPasTokenizer.DoReadable(): boolean;
|
||||||
begin
|
begin
|
||||||
if not IsReadable()then
|
if not IsReadable()then
|
||||||
begin
|
begin
|
||||||
if (y + 1 = s.Count) then
|
if(FLineIx + 1 = FStrings.Count)then
|
||||||
ended := True
|
ended := True
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
inc(y);
|
inc(FLineIx);
|
||||||
x := 1+Fix;
|
x := 1 + fix;
|
||||||
while s[y]='' do
|
while FStrings[FLineIx]<= '' do
|
||||||
begin
|
begin
|
||||||
if y + 1 = s.Count then
|
if FLineIx + 1 = FStrings.Count then
|
||||||
begin
|
begin
|
||||||
ended := True;
|
ended := True;
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
inc(y);
|
inc(FLineIx);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
Exit(True);
|
Exit(True);
|
||||||
@@ -162,7 +175,7 @@ end;
|
|||||||
|
|
||||||
function TAGPasTokenizer.IsReadable(): boolean;
|
function TAGPasTokenizer.IsReadable(): boolean;
|
||||||
begin
|
begin
|
||||||
Exit(length(s[y])+1+Fix > x);
|
Result := x <= length(FStrings[FLineIx])+ fix;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAGPasTokenizer.NextReadable(): boolean;
|
function TAGPasTokenizer.NextReadable(): boolean;
|
||||||
@@ -176,7 +189,7 @@ begin
|
|||||||
DoReadable();
|
DoReadable();
|
||||||
if not ended then
|
if not ended then
|
||||||
begin
|
begin
|
||||||
while SPACES.Contains(s[y][x]) do
|
while SPACES.Contains(FStrings[FLineIx][x])do
|
||||||
NextReadable();
|
NextReadable();
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@@ -184,23 +197,23 @@ end;
|
|||||||
function TAGPasTokenizer.GetPos(): TAGTokenizerPos;
|
function TAGPasTokenizer.GetPos(): TAGTokenizerPos;
|
||||||
begin
|
begin
|
||||||
Result.x := x;
|
Result.x := x;
|
||||||
Result.y := y;
|
Result.y := FLineIx;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAGPasTokenizer.SetPos(pos: TAGTokenizerPos);
|
procedure TAGPasTokenizer.SetPos(pos: TAGTokenizerPos);
|
||||||
begin
|
begin
|
||||||
y:=Pos.x;
|
FLineIx := pos.x;
|
||||||
x:=Pos.y;
|
x := pos.y;
|
||||||
ended := False;
|
ended := False;
|
||||||
DoReadable();
|
DoReadable();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAGPasTokenizer.GetNext(): TAGToken;
|
function TAGPasTokenizer.GetNext(): TAGToken;
|
||||||
var
|
var
|
||||||
l,i,last_i0:integer;
|
l, last_i0: integer;
|
||||||
ml, ss, line:string;
|
ml, ss, line:string;
|
||||||
now_sym, next_sym: char;
|
now_sym, next_sym: char;
|
||||||
f{$IFDEF FPC},ff{$ENDIF}:boolean;
|
f: boolean;
|
||||||
begin_pos: TAGTokenizerPos;
|
begin_pos: TAGTokenizerPos;
|
||||||
begin
|
begin
|
||||||
ml := '';
|
ml := '';
|
||||||
@@ -209,22 +222,22 @@ begin
|
|||||||
begin_pos := GetPos();
|
begin_pos := GetPos();
|
||||||
while f and not ended do
|
while f and not ended do
|
||||||
begin
|
begin
|
||||||
line:=s[y];
|
line := FStrings[FLineIx];
|
||||||
now_sym := line[x];
|
now_sym := line[x];
|
||||||
l := length(line);
|
l := length(line);
|
||||||
if x<>l+Fix then
|
if x < l + fix then
|
||||||
next_sym := line[x + 1]
|
next_sym := line[x + 1]
|
||||||
else
|
else
|
||||||
next_sym := #0;
|
next_sym := #0;
|
||||||
|
|
||||||
if ml = '' then
|
if ml = '' then
|
||||||
begin
|
begin
|
||||||
if now_sym = '/' then
|
if now_sym = '/' then
|
||||||
begin
|
begin
|
||||||
if next_sym = '/' then
|
if next_sym = '/' then
|
||||||
begin
|
begin
|
||||||
for i:=x to l+Fix do
|
ss := Copy(line, x, l);
|
||||||
ss:=ss+line[i];
|
x := l + 1 + fix;
|
||||||
x:=l+Fix;
|
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
@@ -232,7 +245,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
ml := '}';
|
ml := '}';
|
||||||
ss := now_sym;
|
ss := now_sym;
|
||||||
last_i0:=y;
|
last_i0 := FLineIx;
|
||||||
end
|
end
|
||||||
else if now_sym = '(' then
|
else if now_sym = '(' then
|
||||||
begin
|
begin
|
||||||
@@ -240,7 +253,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
ml := ')';
|
ml := ')';
|
||||||
inc(x);
|
inc(x);
|
||||||
last_i0:=y;
|
last_i0 := FLineIx;
|
||||||
ss := now_sym + next_sym;
|
ss := now_sym + next_sym;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@@ -256,13 +269,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
ss := now_sym;
|
ss := now_sym;
|
||||||
inc(x);
|
inc(x);
|
||||||
if SYMS2.
|
if SYMS2.IndexOf(now_sym + next_sym)<>-1 then begin
|
||||||
{$IFDEF FPC}
|
|
||||||
IndexOf(now_sym+next_sym)<>-1
|
|
||||||
{$ELSE}
|
|
||||||
Contains(now_sym+next_sym)
|
|
||||||
{$ENDIF}then
|
|
||||||
begin
|
|
||||||
inc(x);
|
inc(x);
|
||||||
ss := ss + next_sym;
|
ss := ss + next_sym;
|
||||||
end;
|
end;
|
||||||
@@ -304,7 +311,7 @@ begin
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
while last_i0<>y do
|
while last_i0 <> FLineIx do
|
||||||
begin
|
begin
|
||||||
ss := ss + #10;
|
ss := ss + #10;
|
||||||
inc(last_i0);
|
inc(last_i0);
|
||||||
@@ -324,29 +331,33 @@ begin
|
|||||||
end;
|
end;
|
||||||
NextReadable();
|
NextReadable();
|
||||||
end;
|
end;
|
||||||
{$IFDEF FPC}
|
Result.Make(ss, begin_pos, GetPos, ended);
|
||||||
Result.Text:=ss;
|
|
||||||
Result.&begin:=begin_pos;
|
|
||||||
Result.&end:=GetPos;
|
|
||||||
Result.ended:=ended;
|
|
||||||
{$ELSE}
|
|
||||||
Result:=TAGToken.Create(ss,begin_pos,GetPos,ended);
|
|
||||||
{$ENDIF}
|
|
||||||
SkipSpaces;
|
SkipSpaces;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TAGPasTokenizer.Create(input: TStrings);
|
constructor TAGPasTokenizer.Create(input: TStrings);
|
||||||
begin
|
begin
|
||||||
s:=input;
|
FStrings := input;
|
||||||
y:=0;
|
FLineIx := 0;
|
||||||
x := 1 + fix;
|
x := 1 + fix;
|
||||||
ended := False;
|
ended := False;
|
||||||
SkipSpaces;
|
SkipSpaces;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFNDEF FPC}
|
|
||||||
{ TAGPasTokenizerStack }
|
{ TAGPasTokenizerStack }
|
||||||
|
|
||||||
|
destructor TAGPasTokenizerStack.Destroy;
|
||||||
|
begin
|
||||||
|
FreeAndNil(Stack);
|
||||||
|
FreeAndNil(Tokenizer);
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TAGPasTokenizerStack.GetCachedCount: integer;
|
||||||
|
begin
|
||||||
|
Result := Stack.Count
|
||||||
|
end;
|
||||||
|
|
||||||
function TAGPasTokenizerStack.GetLast(): TAGToken;
|
function TAGPasTokenizerStack.GetLast(): TAGToken;
|
||||||
begin
|
begin
|
||||||
if Stack.Count <> 0 then
|
if Stack.Count <> 0 then
|
||||||
@@ -354,53 +365,169 @@ if Stack.Count<>0 then
|
|||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
Result := Get(Tokenizer);
|
Result := Get(Tokenizer);
|
||||||
Stack.Push(Result);
|
Stack.Enqueue(Result);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAGPasTokenizerStack.IsEnded():Boolean;
|
function TAGPasTokenizerStack.GetWithComments(
|
||||||
|
Tokenizer: TAGPasTokenizer): TAGToken;
|
||||||
begin
|
begin
|
||||||
|
Result := Tokenizer.GetNext;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TAGPasTokenizerStack.Create(input:TStrings;GetComments:boolean=True);
|
function TAGPasTokenizerStack.GetWithoutComments(
|
||||||
|
Tokenizer: TAGPasTokenizer): TAGToken;
|
||||||
|
var done: boolean;
|
||||||
begin
|
begin
|
||||||
Stack:=TStack<TAGToken>.Create();
|
repeat
|
||||||
|
Result := Tokenizer.GetNext;
|
||||||
|
until Result.ended or not IsComment(Result.Text);
|
||||||
|
IsEnd := Result.ended;
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TAGPasTokenizerStack.Create(input: TStrings;
|
||||||
|
GetComments: boolean = True);
|
||||||
|
begin
|
||||||
|
Stack := TQueue<TAGToken>.Create();
|
||||||
Tokenizer := TAGPasTokenizer.Create(input);
|
Tokenizer := TAGPasTokenizer.Create(input);
|
||||||
|
|
||||||
if GetComments then
|
if GetComments then
|
||||||
Get:=function(Tokenizer:TAGPasTokenizer):TAGToken
|
Get := GetWithComments
|
||||||
begin
|
|
||||||
Result:=Tokenizer.GetNext;
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
Get:=function(Tokenizer:TAGPasTokenizer):TAGToken
|
Get := GetWithoutComments;
|
||||||
begin
|
|
||||||
while True do
|
|
||||||
begin
|
|
||||||
Result:=Tokenizer.GetNext;
|
|
||||||
if Result.ended or not IsComment(Result.Text) then
|
|
||||||
break;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAGPasTokenizerStack.Push(t:TAGToken);
|
procedure TAGPasTokenizerStack.Push(const t: TAGToken);
|
||||||
begin
|
begin
|
||||||
Stack.Push(t);
|
Stack.Enqueue(t);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAGPasTokenizerStack.Pop(): TAGToken;
|
function TAGPasTokenizerStack.Pop(): TAGToken;
|
||||||
begin
|
begin
|
||||||
if Stack.Count<>0 then
|
if Stack.Count > 0 then
|
||||||
Result:=Stack.Pop
|
Result := Stack.Dequeue
|
||||||
else
|
else
|
||||||
Result := Get(Tokenizer);
|
Result := Get(Tokenizer);
|
||||||
|
IsEnd := Result.ended;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$ENDIF}
|
{ TAGPasTokenizerParallelStack }
|
||||||
|
|
||||||
|
function TAGPasTokenizerParallelStack.AddTokenToStack(): boolean;
|
||||||
|
var tkn: TAGToken;
|
||||||
|
begin
|
||||||
|
FStackLock.Enter;
|
||||||
|
tkn := Get(Tokenizer);
|
||||||
|
Result := tkn.ended;
|
||||||
|
Stack.Enqueue(tkn);
|
||||||
|
FStackLock.Leave;
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TAGPasTokenizerParallelStack.Create(const input: TStrings;
|
||||||
|
GetComments:
|
||||||
|
boolean = True;stackMax: integer = 1000);
|
||||||
|
begin
|
||||||
|
inherited Create(input, GetComments);
|
||||||
|
FStackHalfMax := stackMax shr 1;
|
||||||
|
FStackLock := TCriticalSection.Create();
|
||||||
|
FSignal := TEvent.Create(nil, False, True, 'ag_tkn_work_signal');
|
||||||
|
FWorker := TWorkerThread.Create(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TAGPasTokenizerParallelStack.Destroy;
|
||||||
|
begin
|
||||||
|
EnsureThreadDone();
|
||||||
|
FreeAndNil(FStackLock);
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAGPasTokenizerParallelStack.EnsureThreadDone;
|
||||||
|
begin
|
||||||
|
if not FWorker.Terminated then begin
|
||||||
|
FWorker.Terminate;
|
||||||
|
FSignal.SetEvent();// stop idling
|
||||||
|
FWorker.WaitFor();
|
||||||
|
end;
|
||||||
|
FreeAndNil(FWorker);
|
||||||
|
FreeAndNil(FSignal);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TAGPasTokenizerParallelStack.GetLast: TAGToken;
|
||||||
|
begin
|
||||||
|
FStackLock.Enter;
|
||||||
|
try
|
||||||
|
Result := inherited GetLast();
|
||||||
|
finally
|
||||||
|
FStackLock.Leave;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TAGPasTokenizerParallelStack.Pop: TAGToken;
|
||||||
|
var
|
||||||
|
doReplentishStack, wasRead: boolean;
|
||||||
|
begin
|
||||||
|
|
||||||
|
FStackLock.Enter;
|
||||||
|
|
||||||
|
wasRead := Stack.Count > 0;
|
||||||
|
if wasRead then
|
||||||
|
Result := Stack.Dequeue
|
||||||
|
else
|
||||||
|
Result := Get(Tokenizer);
|
||||||
|
|
||||||
|
doReplentishStack := FWorker.Idling and(Stack.Count < FStackHalfMax);
|
||||||
|
FStackLock.Leave;
|
||||||
|
|
||||||
|
IsEnd := Result.ended;
|
||||||
|
if doReplentishStack then
|
||||||
|
FSignal.SetEvent;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAGPasTokenizerParallelStack.Push(const t: TAGToken);
|
||||||
|
begin
|
||||||
|
FStackLock.Enter;
|
||||||
|
try
|
||||||
|
inherited Push(t);
|
||||||
|
finally
|
||||||
|
FStackLock.Leave;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TAGPasTokenizerParallelStack.TWorkerThread }
|
||||||
|
|
||||||
|
constructor TAGPasTokenizerParallelStack.TWorkerThread.Create(const Stack:
|
||||||
|
TAGPasTokenizerParallelStack);
|
||||||
|
begin
|
||||||
|
FStack := Stack;
|
||||||
|
inherited Create(False, 4 * 4096);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAGPasTokenizerParallelStack.TWorkerThread.Execute;
|
||||||
|
var Count: integer;
|
||||||
|
isDone: boolean;
|
||||||
|
max: integer;
|
||||||
|
begin
|
||||||
|
Count := FStack.GetCachedCount;
|
||||||
|
max := FStack.FStackHalfMax * 2;
|
||||||
|
repeat
|
||||||
|
isDone := FStack.AddTokenToStack();
|
||||||
|
inc(Count);
|
||||||
|
while not Terminated and(Count >= max)do begin
|
||||||
|
Count := FStack.GetCachedCount();// fetch real count
|
||||||
|
if Count < max then
|
||||||
|
break;
|
||||||
|
Idling := True;
|
||||||
|
FStack.FSignal.WaitFor(1000);
|
||||||
|
Count := FStack.GetCachedCount();
|
||||||
|
end;
|
||||||
|
Idling := False;
|
||||||
|
until Terminated or isDone or FStack.ended;
|
||||||
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
SYMS2 := {$IFDEF FPC}TStringList{$ELSE}TList<string>{$ENDIF}.Create();
|
|
||||||
|
SYMS2 := THashedStringList.Create();
|
||||||
SYMS2.Add('>=');
|
SYMS2.Add('>=');
|
||||||
SYMS2.Add('<=');
|
SYMS2.Add('<=');
|
||||||
SYMS2.Add('<>');
|
SYMS2.Add('<>');
|
||||||
@@ -416,4 +543,7 @@ SYMS2.Add('(.');
|
|||||||
SYMS2.Add('.)');
|
SYMS2.Add('.)');
|
||||||
SYMS2.Add('<<');
|
SYMS2.Add('<<');
|
||||||
SYMS2.Add('>>');
|
SYMS2.Add('>>');
|
||||||
|
finalization
|
||||||
|
FreeAndNil(SYMS2);
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ type
|
|||||||
[Test]
|
[Test]
|
||||||
procedure Test4;
|
procedure Test4;
|
||||||
[Test]
|
[Test]
|
||||||
|
procedure TestParallel;
|
||||||
|
[Test]
|
||||||
procedure Test5;
|
procedure Test5;
|
||||||
// Test with TestCase Atribute to supply parameters.
|
// Test with TestCase Atribute to supply parameters.
|
||||||
end;
|
end;
|
||||||
@@ -107,6 +109,23 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TMyTestObject.TestParallel;
|
||||||
|
var
|
||||||
|
input:TStrings;
|
||||||
|
tokenizer:TAGPasTokenizerStack;
|
||||||
|
token:TAGToken;
|
||||||
|
begin
|
||||||
|
input:= TStringList.Create();
|
||||||
|
input.LoadFromFile('..\..\MainTest.pas');
|
||||||
|
tokenizer:=TAGPasTokenizerParallelStack.Create(input);
|
||||||
|
token.ended:=False;
|
||||||
|
while not token.ended do
|
||||||
|
begin
|
||||||
|
token:=tokenizer.Pop;
|
||||||
|
TDUnitX.CurrentRunner.Log(TLogLevel.Information, token.Text);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
TDUnitX.RegisterTestFixture(TMyTestObject);
|
TDUnitX.RegisterTestFixture(TMyTestObject);
|
||||||
end.
|
end.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ProjectGuid>{D45A1419-D0B2-4C03-89FD-530EF21B4F7D}</ProjectGuid>
|
<ProjectGuid>{D45A1419-D0B2-4C03-89FD-530EF21B4F7D}</ProjectGuid>
|
||||||
<ProjectVersion>18.4</ProjectVersion>
|
<ProjectVersion>18.6</ProjectVersion>
|
||||||
<MainSource>Tests.dpr</MainSource>
|
<MainSource>Tests.dpr</MainSource>
|
||||||
<Base>True</Base>
|
<Base>True</Base>
|
||||||
<Config Condition="'$(Config)'==''">Debug</Config>
|
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||||
@@ -18,21 +18,6 @@
|
|||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
<Base>true</Base>
|
<Base>true</Base>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="('$(Platform)'=='iOSDevice32' and '$(Base)'=='true') or '$(Base_iOSDevice32)'!=''">
|
|
||||||
<Base_iOSDevice32>true</Base_iOSDevice32>
|
|
||||||
<CfgParent>Base</CfgParent>
|
|
||||||
<Base>true</Base>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="('$(Platform)'=='iOSDevice64' and '$(Base)'=='true') or '$(Base_iOSDevice64)'!=''">
|
|
||||||
<Base_iOSDevice64>true</Base_iOSDevice64>
|
|
||||||
<CfgParent>Base</CfgParent>
|
|
||||||
<Base>true</Base>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="('$(Platform)'=='iOSSimulator' and '$(Base)'=='true') or '$(Base_iOSSimulator)'!=''">
|
|
||||||
<Base_iOSSimulator>true</Base_iOSSimulator>
|
|
||||||
<CfgParent>Base</CfgParent>
|
|
||||||
<Base>true</Base>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
||||||
<Base_Win32>true</Base_Win32>
|
<Base_Win32>true</Base_Win32>
|
||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
@@ -94,48 +79,7 @@
|
|||||||
<AUP_WRITE_CALENDAR>true</AUP_WRITE_CALENDAR>
|
<AUP_WRITE_CALENDAR>true</AUP_WRITE_CALENDAR>
|
||||||
<AUP_WRITE_EXTERNAL_STORAGE>true</AUP_WRITE_EXTERNAL_STORAGE>
|
<AUP_WRITE_EXTERNAL_STORAGE>true</AUP_WRITE_EXTERNAL_STORAGE>
|
||||||
<AUP_READ_PHONE_STATE>true</AUP_READ_PHONE_STATE>
|
<AUP_READ_PHONE_STATE>true</AUP_READ_PHONE_STATE>
|
||||||
</PropertyGroup>
|
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-gcm-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar</EnabledSysJars>
|
||||||
<PropertyGroup Condition="'$(Base_iOSDevice32)'!=''">
|
|
||||||
<iPhone_AppIcon60>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png</iPhone_AppIcon60>
|
|
||||||
<iPhone_AppIcon120>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png</iPhone_AppIcon120>
|
|
||||||
<iPhone_Spotlight40>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png</iPhone_Spotlight40>
|
|
||||||
<iPhone_Spotlight80>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png</iPhone_Spotlight80>
|
|
||||||
<iPad_SpotLight40>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png</iPad_SpotLight40>
|
|
||||||
<iPad_SpotLight80>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png</iPad_SpotLight80>
|
|
||||||
<iPad_AppIcon76>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png</iPad_AppIcon76>
|
|
||||||
<iPad_AppIcon152>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png</iPad_AppIcon152>
|
|
||||||
<iPad_Launch768x1024>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png</iPad_Launch768x1024>
|
|
||||||
<iPad_Launch1024x768>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png</iPad_Launch1024x768>
|
|
||||||
<iPad_Launch1536x2048>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png</iPad_Launch1536x2048>
|
|
||||||
<iPad_Launch2048x1536>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png</iPad_Launch2048x1536>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Base_iOSDevice64)'!=''">
|
|
||||||
<iPhone_AppIcon60>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png</iPhone_AppIcon60>
|
|
||||||
<iPhone_AppIcon120>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png</iPhone_AppIcon120>
|
|
||||||
<iPhone_Spotlight40>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png</iPhone_Spotlight40>
|
|
||||||
<iPhone_Spotlight80>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png</iPhone_Spotlight80>
|
|
||||||
<iPad_SpotLight40>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png</iPad_SpotLight40>
|
|
||||||
<iPad_SpotLight80>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png</iPad_SpotLight80>
|
|
||||||
<iPad_AppIcon76>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png</iPad_AppIcon76>
|
|
||||||
<iPad_AppIcon152>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png</iPad_AppIcon152>
|
|
||||||
<iPad_Launch768x1024>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png</iPad_Launch768x1024>
|
|
||||||
<iPad_Launch1024x768>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png</iPad_Launch1024x768>
|
|
||||||
<iPad_Launch1536x2048>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png</iPad_Launch1536x2048>
|
|
||||||
<iPad_Launch2048x1536>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png</iPad_Launch2048x1536>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Base_iOSSimulator)'!=''">
|
|
||||||
<iPhone_AppIcon60>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png</iPhone_AppIcon60>
|
|
||||||
<iPhone_AppIcon120>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png</iPhone_AppIcon120>
|
|
||||||
<iPhone_Spotlight40>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png</iPhone_Spotlight40>
|
|
||||||
<iPhone_Spotlight80>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png</iPhone_Spotlight80>
|
|
||||||
<iPad_SpotLight40>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png</iPad_SpotLight40>
|
|
||||||
<iPad_SpotLight80>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png</iPad_SpotLight80>
|
|
||||||
<iPad_AppIcon76>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png</iPad_AppIcon76>
|
|
||||||
<iPad_AppIcon152>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png</iPad_AppIcon152>
|
|
||||||
<iPad_Launch768x1024>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png</iPad_Launch768x1024>
|
|
||||||
<iPad_Launch1024x768>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png</iPad_Launch1024x768>
|
|
||||||
<iPad_Launch1536x2048>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png</iPad_Launch1536x2048>
|
|
||||||
<iPad_Launch2048x1536>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png</iPad_Launch2048x1536>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||||
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||||
@@ -168,7 +112,7 @@
|
|||||||
<MainSource>MainSource</MainSource>
|
<MainSource>MainSource</MainSource>
|
||||||
</DelphiCompile>
|
</DelphiCompile>
|
||||||
<DCCReference Include="MainTest.pas"/>
|
<DCCReference Include="MainTest.pas"/>
|
||||||
<DCCReference Include="..\AG.PascalTokeniser.pas"/>
|
<DCCReference Include="..\AG.PascalTokenizer.pas"/>
|
||||||
<BuildConfiguration Include="Release">
|
<BuildConfiguration Include="Release">
|
||||||
<Key>Cfg_2</Key>
|
<Key>Cfg_2</Key>
|
||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
@@ -191,14 +135,18 @@
|
|||||||
</Source>
|
</Source>
|
||||||
</Delphi.Personality>
|
</Delphi.Personality>
|
||||||
<Deployment Version="3">
|
<Deployment Version="3">
|
||||||
<DeployFile LocalName="Win32\Debug\Tests.exe" Configuration="Debug" Class="ProjectOutput"/>
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
|
<Platform Name="OSX32">
|
||||||
<Platform Name="iOSSimulator">
|
|
||||||
<Overwrite>true</Overwrite>
|
<Overwrite>true</Overwrite>
|
||||||
</Platform>
|
</Platform>
|
||||||
</DeployFile>
|
</DeployFile>
|
||||||
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
<DeployFile LocalName="$(BDS)\Redist\osx64\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
<Platform Name="OSX32">
|
<Platform Name="OSX64">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
<Overwrite>true</Overwrite>
|
<Overwrite>true</Overwrite>
|
||||||
</Platform>
|
</Platform>
|
||||||
</DeployFile>
|
</DeployFile>
|
||||||
@@ -207,17 +155,22 @@
|
|||||||
<Overwrite>true</Overwrite>
|
<Overwrite>true</Overwrite>
|
||||||
</Platform>
|
</Platform>
|
||||||
</DeployFile>
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="Win32\Debug\Tests.exe" Configuration="Debug" Class="ProjectOutput"/>
|
||||||
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule">
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
<Platform Name="OSX32">
|
<Platform Name="OSX32">
|
||||||
<Overwrite>true</Overwrite>
|
<Overwrite>true</Overwrite>
|
||||||
</Platform>
|
</Platform>
|
||||||
</DeployFile>
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
<DeployClass Name="AdditionalDebugSymbols">
|
<DeployClass Name="AdditionalDebugSymbols">
|
||||||
<Platform Name="OSX32">
|
<Platform Name="OSX32">
|
||||||
<Operation>1</Operation>
|
<Operation>1</Operation>
|
||||||
</Platform>
|
</Platform>
|
||||||
<Platform Name="Win32">
|
<Platform Name="Win32">
|
||||||
<RemoteDir>Contents\MacOS</RemoteDir>
|
|
||||||
<Operation>0</Operation>
|
<Operation>0</Operation>
|
||||||
</Platform>
|
</Platform>
|
||||||
</DeployClass>
|
</DeployClass>
|
||||||
@@ -227,6 +180,12 @@
|
|||||||
<Operation>1</Operation>
|
<Operation>1</Operation>
|
||||||
</Platform>
|
</Platform>
|
||||||
</DeployClass>
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidFileProvider">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\xml</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
<DeployClass Name="AndroidGDBServer">
|
<DeployClass Name="AndroidGDBServer">
|
||||||
<Platform Name="Android">
|
<Platform Name="Android">
|
||||||
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
@@ -263,6 +222,12 @@
|
|||||||
<Operation>1</Operation>
|
<Operation>1</Operation>
|
||||||
</Platform>
|
</Platform>
|
||||||
</DeployClass>
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashStylesV21">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values-v21</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
<DeployClass Name="Android_DefaultAppIcon">
|
<DeployClass Name="Android_DefaultAppIcon">
|
||||||
<Platform Name="Android">
|
<Platform Name="Android">
|
||||||
<RemoteDir>res\drawable</RemoteDir>
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
@@ -339,6 +304,10 @@
|
|||||||
<Operation>1</Operation>
|
<Operation>1</Operation>
|
||||||
<Extensions>.framework</Extensions>
|
<Extensions>.framework</Extensions>
|
||||||
</Platform>
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
<Platform Name="Win32">
|
<Platform Name="Win32">
|
||||||
<Operation>0</Operation>
|
<Operation>0</Operation>
|
||||||
</Platform>
|
</Platform>
|
||||||
@@ -348,6 +317,10 @@
|
|||||||
<Operation>1</Operation>
|
<Operation>1</Operation>
|
||||||
<Extensions>.dylib</Extensions>
|
<Extensions>.dylib</Extensions>
|
||||||
</Platform>
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
<Platform Name="Win32">
|
<Platform Name="Win32">
|
||||||
<Operation>0</Operation>
|
<Operation>0</Operation>
|
||||||
<Extensions>.dll;.bpl</Extensions>
|
<Extensions>.dll;.bpl</Extensions>
|
||||||
@@ -370,6 +343,10 @@
|
|||||||
<Operation>1</Operation>
|
<Operation>1</Operation>
|
||||||
<Extensions>.dylib</Extensions>
|
<Extensions>.dylib</Extensions>
|
||||||
</Platform>
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
<Platform Name="Win32">
|
<Platform Name="Win32">
|
||||||
<Operation>0</Operation>
|
<Operation>0</Operation>
|
||||||
<Extensions>.bpl</Extensions>
|
<Extensions>.bpl</Extensions>
|
||||||
@@ -391,6 +368,9 @@
|
|||||||
<Platform Name="OSX32">
|
<Platform Name="OSX32">
|
||||||
<Operation>0</Operation>
|
<Operation>0</Operation>
|
||||||
</Platform>
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
<Platform Name="Win32">
|
<Platform Name="Win32">
|
||||||
<Operation>0</Operation>
|
<Operation>0</Operation>
|
||||||
</Platform>
|
</Platform>
|
||||||
@@ -501,6 +481,7 @@
|
|||||||
<Operation>1</Operation>
|
<Operation>1</Operation>
|
||||||
</Platform>
|
</Platform>
|
||||||
</DeployClass>
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectOSXDebug"/>
|
||||||
<DeployClass Name="ProjectOSXEntitlements"/>
|
<DeployClass Name="ProjectOSXEntitlements"/>
|
||||||
<DeployClass Name="ProjectOSXInfoPList"/>
|
<DeployClass Name="ProjectOSXInfoPList"/>
|
||||||
<DeployClass Name="ProjectOSXResource">
|
<DeployClass Name="ProjectOSXResource">
|
||||||
@@ -508,6 +489,10 @@
|
|||||||
<RemoteDir>Contents\Resources</RemoteDir>
|
<RemoteDir>Contents\Resources</RemoteDir>
|
||||||
<Operation>1</Operation>
|
<Operation>1</Operation>
|
||||||
</Platform>
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<RemoteDir>Contents\Resources</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
</DeployClass>
|
</DeployClass>
|
||||||
<DeployClass Required="true" Name="ProjectOutput">
|
<DeployClass Required="true" Name="ProjectOutput">
|
||||||
<Platform Name="Android">
|
<Platform Name="Android">
|
||||||
@@ -529,6 +514,9 @@
|
|||||||
<Platform Name="OSX32">
|
<Platform Name="OSX32">
|
||||||
<Operation>1</Operation>
|
<Operation>1</Operation>
|
||||||
</Platform>
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
<Platform Name="Win32">
|
<Platform Name="Win32">
|
||||||
<Operation>0</Operation>
|
<Operation>0</Operation>
|
||||||
</Platform>
|
</Platform>
|
||||||
@@ -568,15 +556,11 @@
|
|||||||
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
||||||
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
|
||||||
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
|
||||||
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||||
</Deployment>
|
</Deployment>
|
||||||
<Platforms>
|
<Platforms>
|
||||||
<Platform value="Android">False</Platform>
|
<Platform value="Android">False</Platform>
|
||||||
<Platform value="iOSDevice32">False</Platform>
|
|
||||||
<Platform value="iOSDevice64">False</Platform>
|
|
||||||
<Platform value="iOSSimulator">False</Platform>
|
|
||||||
<Platform value="Linux64">False</Platform>
|
|
||||||
<Platform value="OSX32">False</Platform>
|
|
||||||
<Platform value="Win32">True</Platform>
|
<Platform value="Win32">True</Platform>
|
||||||
<Platform value="Win64">False</Platform>
|
<Platform value="Win64">False</Platform>
|
||||||
</Platforms>
|
</Platforms>
|
||||||
|
|||||||
74
Demo/Demo.dpr
Normal file
74
Demo/Demo.dpr
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
program Demo;
|
||||||
|
|
||||||
|
{$IFDEF FPC}
|
||||||
|
{$MODE Delphi}
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
|
{$APPTYPE CONSOLE}
|
||||||
|
|
||||||
|
{$R *.res}
|
||||||
|
|
||||||
|
|
||||||
|
uses
|
||||||
|
{$IF not defined(FPC)}
|
||||||
|
FastMM4,
|
||||||
|
{$endif}
|
||||||
|
SysUtils,
|
||||||
|
Classes,
|
||||||
|
AG.PascalTokenizer in '../AG.PascalTokenizer.pas';
|
||||||
|
|
||||||
|
procedure Test(sList:TStrings; toStream:TStream; sync: boolean);
|
||||||
|
var tokenStack: TAGPasTokenizerStack;
|
||||||
|
s:UnicodeString;
|
||||||
|
begin
|
||||||
|
|
||||||
|
tokenStack := nil;
|
||||||
|
try
|
||||||
|
if sync then
|
||||||
|
tokenStack := TAGPasTokenizerStack.Create(sList)
|
||||||
|
else
|
||||||
|
tokenStack:= TAGPasTokenizerParallelStack.Create(sList);
|
||||||
|
|
||||||
|
while not tokenStack.ended do begin
|
||||||
|
s := tokenStack.Pop.Text+#10;
|
||||||
|
toStream.Write(Pointer(s)^, Length(s)*2);
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
FreeAndNil(tokenStack);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var start: Cardinal;
|
||||||
|
sList: TStringList;
|
||||||
|
sw:TFileStream;
|
||||||
|
begin
|
||||||
|
TObject.Create();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
try
|
||||||
|
sList := TStringList.Create();
|
||||||
|
try
|
||||||
|
sList.LoadFromFile('c:\prosoft\RIO\source\rtl\common\System.Classes.pas');
|
||||||
|
sw:=TFileStream.Create('tokens1.txt', fmCreate or fmOpenWrite);
|
||||||
|
|
||||||
|
start := TThread.GetTickCount;
|
||||||
|
Test(sList,sw, true);
|
||||||
|
|
||||||
|
start := TThread.GetTickCount - start;
|
||||||
|
Writeln('Sync Done in ', start, ' ms');
|
||||||
|
sw.Free;
|
||||||
|
sw:=TFileStream.Create('tokens2.txt', fmCreate or fmOpenWrite);
|
||||||
|
start := TThread.GetTickCount;
|
||||||
|
Test(sList,sw, false);
|
||||||
|
|
||||||
|
start := TThread.GetTickCount - start;
|
||||||
|
sw.Free;
|
||||||
|
Writeln('Sync Done in ', start, ' ms');
|
||||||
|
|
||||||
|
finally
|
||||||
|
sList.Free;
|
||||||
|
end;
|
||||||
|
except
|
||||||
|
on E: Exception do
|
||||||
|
Writeln(E.ClassName, ': ', E.Message);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
653
Demo/Demo.dproj
Normal file
653
Demo/Demo.dproj
Normal file
@@ -0,0 +1,653 @@
|
|||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectGuid>{94826175-AD0E-484E-AC0F-26CA7E737527}</ProjectGuid>
|
||||||
|
<ProjectVersion>18.6</ProjectVersion>
|
||||||
|
<FrameworkType>None</FrameworkType>
|
||||||
|
<MainSource>Demo.dpr</MainSource>
|
||||||
|
<Base>True</Base>
|
||||||
|
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||||
|
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||||
|
<TargetedPlatforms>1</TargetedPlatforms>
|
||||||
|
<AppType>Console</AppType>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
|
||||||
|
<Base_Android>true</Base_Android>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
||||||
|
<Base_Win32>true</Base_Win32>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
|
||||||
|
<Base_Win64>true</Base_Win64>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
|
||||||
|
<Cfg_1>true</Cfg_1>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
|
||||||
|
<Cfg_1_Win32>true</Cfg_1_Win32>
|
||||||
|
<CfgParent>Cfg_1</CfgParent>
|
||||||
|
<Cfg_1>true</Cfg_1>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
|
||||||
|
<Cfg_2>true</Cfg_2>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base)'!=''">
|
||||||
|
<DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
|
||||||
|
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
|
||||||
|
<DCC_E>false</DCC_E>
|
||||||
|
<DCC_N>false</DCC_N>
|
||||||
|
<DCC_S>false</DCC_S>
|
||||||
|
<DCC_F>false</DCC_F>
|
||||||
|
<DCC_K>false</DCC_K>
|
||||||
|
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<SanitizedProjectName>Demo</SanitizedProjectName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Android)'!=''">
|
||||||
|
<DCC_UsePackage>DBXSqliteDriver;RESTComponents;DBXInterBaseDriver;emsclientfiredac;DataSnapFireDAC;tethering;bindcompfmx;FmxTeeUI;FireDACIBDriver;fmx;FireDACDBXDriver;dbexpress;IndyCore;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;soapserver;bindengine;CloudService;FireDACCommonDriver;DataSnapClient;inet;bindcompdbx;IndyIPCommon;IndyIPServer;IndySystem;fmxFireDAC;FireDAC;FireDACSqliteDriver;FMXTee;soaprtl;DbxCommonDriver;xmlrtl;soapmidas;DataSnapNativeClient;FireDACDSDriver;rtl;DbxClientDriver;CustomIPTransport;bindcomp;IndyIPClient;dbxcds;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;$(DCC_UsePackage)</DCC_UsePackage>
|
||||||
|
<Android_LauncherIcon36>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png</Android_LauncherIcon36>
|
||||||
|
<Android_LauncherIcon48>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png</Android_LauncherIcon48>
|
||||||
|
<Android_LauncherIcon72>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png</Android_LauncherIcon72>
|
||||||
|
<Android_LauncherIcon96>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png</Android_LauncherIcon96>
|
||||||
|
<Android_LauncherIcon144>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png</Android_LauncherIcon144>
|
||||||
|
<Android_SplashImage426>$(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png</Android_SplashImage426>
|
||||||
|
<Android_SplashImage470>$(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png</Android_SplashImage470>
|
||||||
|
<Android_SplashImage640>$(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png</Android_SplashImage640>
|
||||||
|
<Android_SplashImage960>$(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png</Android_SplashImage960>
|
||||||
|
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services-ads-7.0.0.dex.jar;google-play-services-analytics-7.0.0.dex.jar;google-play-services-base-7.0.0.dex.jar;google-play-services-gcm-7.0.0.dex.jar;google-play-services-identity-7.0.0.dex.jar;google-play-services-maps-7.0.0.dex.jar;google-play-services-panorama-7.0.0.dex.jar;google-play-services-plus-7.0.0.dex.jar;google-play-services-wallet-7.0.0.dex.jar</EnabledSysJars>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||||
|
<DCC_UsePackage>DBXSqliteDriver;RESTComponents;DataSnapServerMidas;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;emsclientfiredac;DataSnapFireDAC;svnui;tethering;JvGlobus;FireDACADSDriver;JvPluginSystem;DBXMSSQLDriver;JvMM;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;JvBands;vcldb;bindcompfmx;svn;JvJans;DBXOracleDriver;JvNet;inetdb;JvAppFrm;VirtualTreesDR;FmxTeeUI;emsedge;JvDotNetCtrls;FireDACIBDriver;fmx;fmxdae;JvWizards;FireDACDBXDriver;dbexpress;IndyCore;vclx;JvPageComps;dsnap;DataSnapCommon;emsclient;FireDACCommon;JvDB;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;JclDeveloperTools;vclie;bindengine;DBXMySQLDriver;FireDACOracleDriver;CloudService;FireDACMySQLDriver;DBXFirebirdDriver;JvCmp;JvHMI;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;OverbyteIcsD103Run;bindcompdbx;IndyIPCommon;JvCustom;vcl;DBXSybaseASEDriver;IndyIPServer;JvXPCtrls;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;TeeDB;FireDAC;GrtPanelPackage;Jcl;JvCore;emshosting;JvCrypt;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;JvDlgs;JvRuntimeDesign;JvManagedThreads;Tee;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;JvTimeFramework;DBXSybaseASADriver;CustomIPTransport;vcldsnap;JvSystem;JvStdCtrls;FrameViewerXE9;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;SynEdit_R;TeeUI;JvDocking;dbxcds;VclSmp;JvPascalInterpreter;adortl;FireDACODBCDriver;JclVcl;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;inetdbxpress;FireDACMongoDBDriver;IndyProtocols;JvControls;JvPrintPreview;JclContainers;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
|
||||||
|
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<BT_BuildType>Debug</BT_BuildType>
|
||||||
|
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
<DCC_ConsoleTarget>true</DCC_ConsoleTarget>
|
||||||
|
<UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44>
|
||||||
|
<UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Base_Win64)'!=''">
|
||||||
|
<DCC_UsePackage>DBXSqliteDriver;RESTComponents;DataSnapServerMidas;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;emsclientfiredac;DataSnapFireDAC;tethering;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;DBXOracleDriver;inetdb;VirtualTreesDR;FmxTeeUI;emsedge;FireDACIBDriver;fmx;fmxdae;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;DataSnapCommon;emsclient;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;FireDACOracleDriver;CloudService;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;OverbyteIcsD103Run;bindcompdbx;IndyIPCommon;vcl;DBXSybaseASEDriver;IndyIPServer;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;TeeDB;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;Tee;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;SynEdit_R;TeeUI;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;inetdbxpress;FireDACMongoDBDriver;IndyProtocols;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
|
||||||
|
<DCC_ConsoleTarget>true</DCC_ConsoleTarget>
|
||||||
|
<UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44>
|
||||||
|
<UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Cfg_1)'!=''">
|
||||||
|
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
|
||||||
|
<DCC_DebugDCUs>true</DCC_DebugDCUs>
|
||||||
|
<DCC_Optimize>false</DCC_Optimize>
|
||||||
|
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
|
||||||
|
<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
|
||||||
|
<DCC_RemoteDebug>true</DCC_RemoteDebug>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
|
||||||
|
<DCC_RemoteDebug>false</DCC_RemoteDebug>
|
||||||
|
<ILINK_MapFileType>DetailedSegments</ILINK_MapFileType>
|
||||||
|
<DCC_MapFile>3</DCC_MapFile>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
<Manifest_File>(None)</Manifest_File>
|
||||||
|
<DCC_Define>FullDebugModeWhenDLLAvailable;$(DCC_Define)</DCC_Define>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Cfg_2)'!=''">
|
||||||
|
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
|
||||||
|
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
|
||||||
|
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
|
||||||
|
<DCC_DebugInformation>0</DCC_DebugInformation>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<DelphiCompile Include="$(MainSource)">
|
||||||
|
<MainSource>MainSource</MainSource>
|
||||||
|
</DelphiCompile>
|
||||||
|
<DCCReference Include="..\AG.PascalTokenizer.pas"/>
|
||||||
|
<BuildConfiguration Include="Release">
|
||||||
|
<Key>Cfg_2</Key>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
</BuildConfiguration>
|
||||||
|
<BuildConfiguration Include="Base">
|
||||||
|
<Key>Base</Key>
|
||||||
|
</BuildConfiguration>
|
||||||
|
<BuildConfiguration Include="Debug">
|
||||||
|
<Key>Cfg_1</Key>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
</BuildConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<ProjectExtensions>
|
||||||
|
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
|
||||||
|
<Borland.ProjectType>Application</Borland.ProjectType>
|
||||||
|
<BorlandProject>
|
||||||
|
<Delphi.Personality>
|
||||||
|
<Source>
|
||||||
|
<Source Name="MainSource">Demo.dpr</Source>
|
||||||
|
</Source>
|
||||||
|
<Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\bcboffice2k260.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\bcbofficexp260.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k260.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||||
|
<Excluded_Packages Name="$(BDSBIN)\dclofficexp260.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
|
||||||
|
</Excluded_Packages>
|
||||||
|
</Delphi.Personality>
|
||||||
|
<Deployment Version="3">
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx64\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgsqlite3.dylib" Class="DependencyModule">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployFile LocalName="Win32\Debug\Demo.exe" Configuration="Debug" Class="ProjectOutput">
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<RemoteName>Demo.exe</RemoteName>
|
||||||
|
<Overwrite>true</Overwrite>
|
||||||
|
</Platform>
|
||||||
|
</DeployFile>
|
||||||
|
<DeployClass Name="AdditionalDebugSymbols">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidClassesDexFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>classes</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidFileProvider">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\xml</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidGDBServer">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidLibnativeArmeabiFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\armeabi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidLibnativeMipsFile">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\mips</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidServiceOutput">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashImageDef">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashStyles">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="AndroidSplashStylesV21">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\values-v21</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_DefaultAppIcon">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_LauncherIcon144">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_LauncherIcon36">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-ldpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_LauncherIcon48">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-mdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_LauncherIcon72">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-hdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_LauncherIcon96">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xhdpi</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_SplashImage426">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-small</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_SplashImage470">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-normal</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_SplashImage640">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-large</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="Android_SplashImage960">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>res\drawable-xlarge</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DebugSymbols">
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyFramework">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.framework</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="DependencyModule">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
<Extensions>.dll;.bpl</Extensions>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Required="true" Name="DependencyPackage">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
<Extensions>.dylib</Extensions>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
<Extensions>.bpl</Extensions>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="File">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\Resources\StartUp\</RemoteDir>
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<RemoteDir>Contents\Resources\StartUp\</RemoteDir>
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="iPad_Launch1024">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="iPad_Launch1536">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="iPad_Launch2048">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="iPad_Launch768">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="iPhone_Launch320">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="iPhone_Launch640">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="iPhone_Launch640x1136">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectAndroidManifest">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectiOSDeviceDebug">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectiOSDeviceResourceRules">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectiOSEntitlements">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<RemoteDir>..\</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<RemoteDir>..\</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectiOSInfoPList">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectiOSResource">
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectOSXDebug">
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectOSXEntitlements">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>..\</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<RemoteDir>..\</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectOSXInfoPList">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<RemoteDir>Contents</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectOSXResource">
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\Resources</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<RemoteDir>Contents\Resources</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Required="true" Name="ProjectOutput">
|
||||||
|
<Platform Name="Android">
|
||||||
|
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSDevice64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="iOSSimulator">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Linux64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX32">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="OSX64">
|
||||||
|
<RemoteDir>Contents\MacOS</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>0</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="ProjectUWPManifest">
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win64">
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="UWP_DelphiLogo150">
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<RemoteDir>Assets</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win64">
|
||||||
|
<RemoteDir>Assets</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<DeployClass Name="UWP_DelphiLogo44">
|
||||||
|
<Platform Name="Win32">
|
||||||
|
<RemoteDir>Assets</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
<Platform Name="Win64">
|
||||||
|
<RemoteDir>Assets</RemoteDir>
|
||||||
|
<Operation>1</Operation>
|
||||||
|
</Platform>
|
||||||
|
</DeployClass>
|
||||||
|
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
|
||||||
|
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
|
||||||
|
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
|
||||||
|
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
|
||||||
|
<ProjectRoot Platform="OSX64" Name="$(PROJECTNAME).app"/>
|
||||||
|
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
|
||||||
|
</Deployment>
|
||||||
|
<Platforms>
|
||||||
|
<Platform value="Android">False</Platform>
|
||||||
|
<Platform value="Win32">True</Platform>
|
||||||
|
<Platform value="Win64">False</Platform>
|
||||||
|
</Platforms>
|
||||||
|
</BorlandProject>
|
||||||
|
<ProjectFileVersion>12</ProjectFileVersion>
|
||||||
|
</ProjectExtensions>
|
||||||
|
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
||||||
|
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
|
||||||
|
<Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/>
|
||||||
|
</Project>
|
||||||
73
Demo/Demo.lpi
Normal file
73
Demo/Demo.lpi
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<CONFIG>
|
||||||
|
<ProjectOptions>
|
||||||
|
<Version Value="11"/>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<General>
|
||||||
|
<Flags>
|
||||||
|
<MainUnitHasUsesSectionForAllUnits Value="False"/>
|
||||||
|
<MainUnitHasCreateFormStatements Value="False"/>
|
||||||
|
<MainUnitHasTitleStatement Value="False"/>
|
||||||
|
<MainUnitHasScaledStatement Value="False"/>
|
||||||
|
</Flags>
|
||||||
|
<SessionStorage Value="InProjectDir"/>
|
||||||
|
<MainUnit Value="0"/>
|
||||||
|
<Title Value="Demo"/>
|
||||||
|
<UseAppBundle Value="False"/>
|
||||||
|
<ResourceType Value="res"/>
|
||||||
|
</General>
|
||||||
|
<BuildModes Count="1">
|
||||||
|
<Item1 Name="Default" Default="True"/>
|
||||||
|
</BuildModes>
|
||||||
|
<PublishOptions>
|
||||||
|
<Version Value="2"/>
|
||||||
|
<UseFileFilters Value="True"/>
|
||||||
|
</PublishOptions>
|
||||||
|
<RunParams>
|
||||||
|
<FormatVersion Value="2"/>
|
||||||
|
<Modes Count="0"/>
|
||||||
|
</RunParams>
|
||||||
|
<RequiredPackages Count="1">
|
||||||
|
<Item1>
|
||||||
|
<PackageName Value="LCL"/>
|
||||||
|
</Item1>
|
||||||
|
</RequiredPackages>
|
||||||
|
<Units Count="2">
|
||||||
|
<Unit0>
|
||||||
|
<Filename Value="Demo.dpr"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
</Unit0>
|
||||||
|
<Unit1>
|
||||||
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
</Unit1>
|
||||||
|
</Units>
|
||||||
|
</ProjectOptions>
|
||||||
|
<CompilerOptions>
|
||||||
|
<Version Value="11"/>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<SearchPaths>
|
||||||
|
<IncludeFiles Value=".."/>
|
||||||
|
<OtherUnitFiles Value=".."/>
|
||||||
|
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||||
|
</SearchPaths>
|
||||||
|
<Parsing>
|
||||||
|
<SyntaxOptions>
|
||||||
|
<SyntaxMode Value="delphi"/>
|
||||||
|
</SyntaxOptions>
|
||||||
|
</Parsing>
|
||||||
|
</CompilerOptions>
|
||||||
|
<Debugging>
|
||||||
|
<Exceptions Count="3">
|
||||||
|
<Item1>
|
||||||
|
<Name Value="EAbort"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<Name Value="ECodetoolError"/>
|
||||||
|
</Item2>
|
||||||
|
<Item3>
|
||||||
|
<Name Value="EFOpenError"/>
|
||||||
|
</Item3>
|
||||||
|
</Exceptions>
|
||||||
|
</Debugging>
|
||||||
|
</CONFIG>
|
||||||
123
Demo/Demo.lps
Normal file
123
Demo/Demo.lps
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<CONFIG>
|
||||||
|
<ProjectSession>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<Version Value="11"/>
|
||||||
|
<BuildModes Active="Default"/>
|
||||||
|
<Units Count="5">
|
||||||
|
<Unit0>
|
||||||
|
<Filename Value="Demo.dpr"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<IsVisibleTab Value="True"/>
|
||||||
|
<CursorPos X="11" Y="13"/>
|
||||||
|
<UsageCount Value="20"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
<DefaultSyntaxHighlighter Value="Delphi"/>
|
||||||
|
</Unit0>
|
||||||
|
<Unit1>
|
||||||
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<EditorIndex Value="2"/>
|
||||||
|
<CursorPos X="7" Y="23"/>
|
||||||
|
<UsageCount Value="20"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
<DefaultSyntaxHighlighter Value="Delphi"/>
|
||||||
|
</Unit1>
|
||||||
|
<Unit2>
|
||||||
|
<Filename Value="..\..\..\..\pro\fpcsrc\packages\fcl-base\src\syncobjs.pp"/>
|
||||||
|
<EditorIndex Value="3"/>
|
||||||
|
<TopLine Value="124"/>
|
||||||
|
<CursorPos X="25" Y="137"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit2>
|
||||||
|
<Unit3>
|
||||||
|
<Filename Value="..\..\..\..\pro\fpcsrc\rtl\objpas\classes\classesh.inc"/>
|
||||||
|
<EditorIndex Value="1"/>
|
||||||
|
<TopLine Value="964"/>
|
||||||
|
<CursorPos X="57" Y="977"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit3>
|
||||||
|
<Unit4>
|
||||||
|
<Filename Value="..\FPCTests\fpcunitproject1.lpr"/>
|
||||||
|
<EditorIndex Value="-1"/>
|
||||||
|
<WindowIndex Value="-1"/>
|
||||||
|
<TopLine Value="-1"/>
|
||||||
|
<CursorPos X="-1" Y="-1"/>
|
||||||
|
<UsageCount Value="20"/>
|
||||||
|
<DefaultSyntaxHighlighter Value="Delphi"/>
|
||||||
|
</Unit4>
|
||||||
|
</Units>
|
||||||
|
<JumpHistory Count="13" HistoryIndex="12">
|
||||||
|
<Position1>
|
||||||
|
<Filename Value="Demo.dpr"/>
|
||||||
|
<Caret Line="13" Column="3"/>
|
||||||
|
</Position1>
|
||||||
|
<Position2>
|
||||||
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
|
<Caret Line="27" Column="11" TopLine="5"/>
|
||||||
|
</Position2>
|
||||||
|
<Position3>
|
||||||
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
|
<Caret Line="55" Column="16" TopLine="42"/>
|
||||||
|
</Position3>
|
||||||
|
<Position4>
|
||||||
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
|
<Caret Line="8" Column="6"/>
|
||||||
|
</Position4>
|
||||||
|
<Position5>
|
||||||
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
|
<Caret Line="68" Column="30" TopLine="56"/>
|
||||||
|
</Position5>
|
||||||
|
<Position6>
|
||||||
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
|
<Caret Line="88" Column="30" TopLine="78"/>
|
||||||
|
</Position6>
|
||||||
|
<Position7>
|
||||||
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
|
<Caret Line="410" Column="45" TopLine="398"/>
|
||||||
|
</Position7>
|
||||||
|
<Position8>
|
||||||
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
|
<Caret Line="453" Column="5" TopLine="441"/>
|
||||||
|
</Position8>
|
||||||
|
<Position9>
|
||||||
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
|
<Caret Line="6" Column="41"/>
|
||||||
|
</Position9>
|
||||||
|
<Position10>
|
||||||
|
<Filename Value="Demo.dpr"/>
|
||||||
|
<Caret Line="46" Column="26" TopLine="35"/>
|
||||||
|
</Position10>
|
||||||
|
<Position11>
|
||||||
|
<Filename Value="Demo.dpr"/>
|
||||||
|
<Caret Line="30" Column="29" TopLine="8"/>
|
||||||
|
</Position11>
|
||||||
|
<Position12>
|
||||||
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
|
<Caret Line="23" Column="7"/>
|
||||||
|
</Position12>
|
||||||
|
<Position13>
|
||||||
|
<Filename Value="Demo.dpr"/>
|
||||||
|
<Caret Line="13" Column="8"/>
|
||||||
|
</Position13>
|
||||||
|
</JumpHistory>
|
||||||
|
<RunParams>
|
||||||
|
<FormatVersion Value="2"/>
|
||||||
|
<Modes Count="0" ActiveMode=""/>
|
||||||
|
</RunParams>
|
||||||
|
</ProjectSession>
|
||||||
|
<SkipCheckLCLInterfaces Value="True"/>
|
||||||
|
<Debugging>
|
||||||
|
<BreakPoints Count="1">
|
||||||
|
<Item1>
|
||||||
|
<Kind Value="bpkSource"/>
|
||||||
|
<WatchScope Value="wpsLocal"/>
|
||||||
|
<WatchKind Value="wpkWrite"/>
|
||||||
|
<Source Value="Demo.dpr"/>
|
||||||
|
<Line Value="73"/>
|
||||||
|
</Item1>
|
||||||
|
</BreakPoints>
|
||||||
|
</Debugging>
|
||||||
|
</CONFIG>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<CONFIG>
|
<CONFIG>
|
||||||
<ProjectOptions>
|
<ProjectOptions>
|
||||||
<Version Value="10"/>
|
<Version Value="11"/>
|
||||||
<PathDelim Value="\"/>
|
<PathDelim Value="\"/>
|
||||||
<General>
|
<General>
|
||||||
<SessionStorage Value="InProjectDir"/>
|
<SessionStorage Value="InProjectDir"/>
|
||||||
@@ -17,9 +17,10 @@
|
|||||||
<Version Value="2"/>
|
<Version Value="2"/>
|
||||||
</PublishOptions>
|
</PublishOptions>
|
||||||
<RunParams>
|
<RunParams>
|
||||||
<local>
|
<FormatVersion Value="2"/>
|
||||||
<FormatVersion Value="1"/>
|
<Modes Count="1">
|
||||||
</local>
|
<Mode0 Name="default"/>
|
||||||
|
</Modes>
|
||||||
</RunParams>
|
</RunParams>
|
||||||
<RequiredPackages Count="3">
|
<RequiredPackages Count="3">
|
||||||
<Item1>
|
<Item1>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<CONFIG>
|
<CONFIG>
|
||||||
<ProjectSession>
|
<ProjectSession>
|
||||||
<PathDelim Value="\"/>
|
<PathDelim Value="\"/>
|
||||||
<Version Value="10"/>
|
<Version Value="11"/>
|
||||||
<BuildModes Active="Default"/>
|
<BuildModes Active="Default"/>
|
||||||
<Units Count="5">
|
<Units Count="5">
|
||||||
<Unit0>
|
<Unit0>
|
||||||
@@ -27,8 +27,8 @@
|
|||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<IsVisibleTab Value="True"/>
|
<IsVisibleTab Value="True"/>
|
||||||
<EditorIndex Value="2"/>
|
<EditorIndex Value="2"/>
|
||||||
<TopLine Value="232"/>
|
<TopLine Value="200"/>
|
||||||
<CursorPos X="13" Y="242"/>
|
<CursorPos X="6" Y="216"/>
|
||||||
<UsageCount Value="20"/>
|
<UsageCount Value="20"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit2>
|
</Unit2>
|
||||||
@@ -51,124 +51,128 @@
|
|||||||
<JumpHistory Count="30" HistoryIndex="29">
|
<JumpHistory Count="30" HistoryIndex="29">
|
||||||
<Position1>
|
<Position1>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="191" TopLine="171"/>
|
<Caret Line="189" TopLine="171"/>
|
||||||
</Position1>
|
</Position1>
|
||||||
<Position2>
|
<Position2>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="192" TopLine="171"/>
|
<Caret Line="190" TopLine="171"/>
|
||||||
</Position2>
|
</Position2>
|
||||||
<Position3>
|
<Position3>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="193" TopLine="171"/>
|
<Caret Line="191" TopLine="171"/>
|
||||||
</Position3>
|
</Position3>
|
||||||
<Position4>
|
<Position4>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="196" TopLine="171"/>
|
<Caret Line="192" TopLine="171"/>
|
||||||
</Position4>
|
</Position4>
|
||||||
<Position5>
|
<Position5>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="295" TopLine="278"/>
|
<Caret Line="193" TopLine="171"/>
|
||||||
</Position5>
|
</Position5>
|
||||||
<Position6>
|
<Position6>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="300" TopLine="278"/>
|
<Caret Line="196" TopLine="171"/>
|
||||||
</Position6>
|
</Position6>
|
||||||
<Position7>
|
<Position7>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="312" TopLine="284"/>
|
<Caret Line="295" TopLine="278"/>
|
||||||
</Position7>
|
</Position7>
|
||||||
<Position8>
|
<Position8>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="189" TopLine="171"/>
|
<Caret Line="300" TopLine="278"/>
|
||||||
</Position8>
|
</Position8>
|
||||||
<Position9>
|
<Position9>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="190" TopLine="171"/>
|
<Caret Line="312" TopLine="284"/>
|
||||||
</Position9>
|
</Position9>
|
||||||
<Position10>
|
<Position10>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="191" TopLine="171"/>
|
<Caret Line="189" TopLine="171"/>
|
||||||
</Position10>
|
</Position10>
|
||||||
<Position11>
|
<Position11>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="192" TopLine="171"/>
|
<Caret Line="190" TopLine="171"/>
|
||||||
</Position11>
|
</Position11>
|
||||||
<Position12>
|
<Position12>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="193" TopLine="171"/>
|
<Caret Line="191" TopLine="171"/>
|
||||||
</Position12>
|
</Position12>
|
||||||
<Position13>
|
<Position13>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="196" TopLine="171"/>
|
<Caret Line="192" TopLine="171"/>
|
||||||
</Position13>
|
</Position13>
|
||||||
<Position14>
|
<Position14>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="295" TopLine="278"/>
|
<Caret Line="193" TopLine="171"/>
|
||||||
</Position14>
|
</Position14>
|
||||||
<Position15>
|
<Position15>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="300" TopLine="278"/>
|
<Caret Line="196" TopLine="171"/>
|
||||||
</Position15>
|
</Position15>
|
||||||
<Position16>
|
<Position16>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="312" TopLine="284"/>
|
<Caret Line="295" Column="7" TopLine="278"/>
|
||||||
</Position16>
|
</Position16>
|
||||||
<Position17>
|
<Position17>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="testcase1.pas"/>
|
||||||
<Caret Line="189" TopLine="171"/>
|
<Caret Line="28" Column="11" TopLine="4"/>
|
||||||
</Position17>
|
</Position17>
|
||||||
<Position18>
|
<Position18>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="testcase1.pas"/>
|
||||||
<Caret Line="190" TopLine="171"/>
|
<Caret Line="29" Column="15" TopLine="4"/>
|
||||||
</Position18>
|
</Position18>
|
||||||
<Position19>
|
<Position19>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="191" TopLine="171"/>
|
<Caret Line="295" Column="9"/>
|
||||||
</Position19>
|
</Position19>
|
||||||
<Position20>
|
<Position20>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="192" TopLine="171"/>
|
<Caret Line="313" Column="20" TopLine="299"/>
|
||||||
</Position20>
|
</Position20>
|
||||||
<Position21>
|
<Position21>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="testcase1.pas"/>
|
||||||
<Caret Line="193" TopLine="171"/>
|
<Caret Line="23" Column="12" TopLine="8"/>
|
||||||
</Position21>
|
</Position21>
|
||||||
<Position22>
|
<Position22>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="196" TopLine="171"/>
|
<Caret Line="110" Column="34" TopLine="106"/>
|
||||||
</Position22>
|
</Position22>
|
||||||
<Position23>
|
<Position23>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="295" Column="7" TopLine="278"/>
|
<Caret Line="86" Column="32" TopLine="72"/>
|
||||||
</Position23>
|
</Position23>
|
||||||
<Position24>
|
<Position24>
|
||||||
<Filename Value="testcase1.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="28" Column="11" TopLine="4"/>
|
<Caret Line="218" Column="37" TopLine="150"/>
|
||||||
</Position24>
|
</Position24>
|
||||||
<Position25>
|
<Position25>
|
||||||
<Filename Value="testcase1.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="29" Column="15" TopLine="4"/>
|
<Caret Line="21" Column="7" TopLine="8"/>
|
||||||
</Position25>
|
</Position25>
|
||||||
<Position26>
|
<Position26>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="295" Column="9"/>
|
<Caret Line="9" Column="2"/>
|
||||||
</Position26>
|
</Position26>
|
||||||
<Position27>
|
<Position27>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="313" Column="20" TopLine="299"/>
|
<Caret Line="21" Column="40" TopLine="5"/>
|
||||||
</Position27>
|
</Position27>
|
||||||
<Position28>
|
<Position28>
|
||||||
<Filename Value="testcase1.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="23" Column="12" TopLine="8"/>
|
<Caret Line="20" Column="7" TopLine="8"/>
|
||||||
</Position28>
|
</Position28>
|
||||||
<Position29>
|
<Position29>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="110" Column="34" TopLine="106"/>
|
<Caret Line="21" Column="7" TopLine="8"/>
|
||||||
</Position29>
|
</Position29>
|
||||||
<Position30>
|
<Position30>
|
||||||
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
<Filename Value="..\AG.PascalTokenizer.pas"/>
|
||||||
<Caret Line="86" Column="32" TopLine="72"/>
|
<Caret Line="5" Column="13"/>
|
||||||
</Position30>
|
</Position30>
|
||||||
</JumpHistory>
|
</JumpHistory>
|
||||||
|
<RunParams>
|
||||||
|
<FormatVersion Value="2"/>
|
||||||
|
<Modes Count="0" ActiveMode="default"/>
|
||||||
|
</RunParams>
|
||||||
</ProjectSession>
|
</ProjectSession>
|
||||||
</CONFIG>
|
</CONFIG>
|
||||||
|
|||||||
Reference in New Issue
Block a user