Initial check in
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
unit jtag.svfProgram;
|
||||
|
||||
interface
|
||||
uses
|
||||
jtag.svfAstNode,
|
||||
System.Contnrs;
|
||||
|
||||
const
|
||||
stRESET = 0;
|
||||
stIDLE = 1;
|
||||
|
||||
stDRSELECT = 2;
|
||||
stDRCAPTURE = 3;
|
||||
stDRSHIFT = 4;
|
||||
stDRPAUSE = 5;
|
||||
stDREXIT1 = 6;
|
||||
stDREXIT2 = 7;
|
||||
stDRUPDATE = 8;
|
||||
|
||||
stIRSELECT = 9;
|
||||
stIRCAPTURE = 10;
|
||||
stIRSHIFT = 11;
|
||||
stIRPAUSE = 12;
|
||||
stIREXIT1 = 13;
|
||||
stIREXIT2 = 14;
|
||||
stIRUPDATE = 15;
|
||||
|
||||
stNONDEF = $ff;
|
||||
|
||||
type
|
||||
TsvfProgram = class
|
||||
private
|
||||
fStatements : TObjectList;
|
||||
|
||||
function GetStatementCount : integer;
|
||||
function GetStatement(i: integer): TsvfAstNode;
|
||||
|
||||
public
|
||||
procedure AddStatement( Stmt: TsvfAstNode);
|
||||
|
||||
public
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
|
||||
procedure Dump( FileName: string);
|
||||
|
||||
public
|
||||
property StatementCount : integer read GetStatementCount;
|
||||
property Statements[i: integer] : TsvfAstNode read GetStatement;
|
||||
|
||||
end;
|
||||
|
||||
implementation
|
||||
uses
|
||||
System.Classes;
|
||||
|
||||
{ TsvfProgram }
|
||||
|
||||
// @@@: Constructor/destructor ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
//
|
||||
// Constructor/destructor
|
||||
//
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ======================================================================================
|
||||
// Constructor
|
||||
// ======================================================================================
|
||||
constructor TsvfProgram.Create;
|
||||
begin
|
||||
inherited;
|
||||
fStatements := TObjectList.Create( true);
|
||||
end;
|
||||
|
||||
// ======================================================================================
|
||||
// Destructor
|
||||
// ======================================================================================
|
||||
destructor TsvfProgram.Destroy;
|
||||
begin
|
||||
fStatements.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
// @@@: Interface +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
//
|
||||
// Interface
|
||||
//
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ======================================================================================
|
||||
// AddStatement
|
||||
// ======================================================================================
|
||||
procedure TsvfProgram.AddStatement(Stmt: TsvfAstNode);
|
||||
begin
|
||||
fStatements.Add( Stmt);
|
||||
end;
|
||||
|
||||
// ================================================================================================
|
||||
// Dump
|
||||
// ================================================================================================
|
||||
procedure TsvfProgram.Dump(FileName: string);
|
||||
var
|
||||
i : integer;
|
||||
s : AnsiString;
|
||||
stm : TMemoryStream;
|
||||
|
||||
|
||||
begin
|
||||
stm := TMemoryStream.Create;
|
||||
|
||||
for i:=0 to StatementCount -1 do
|
||||
begin
|
||||
s := Statements[i].AsText;
|
||||
stm.Write(s[1], Length(s));
|
||||
end;
|
||||
|
||||
stm.SaveToFile(FileName);
|
||||
stm.Free
|
||||
end;
|
||||
|
||||
|
||||
// @@@: Property Handlers +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
//
|
||||
// Property Handlers
|
||||
//
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ======================================================================================
|
||||
// GetStatementCount
|
||||
// ======================================================================================
|
||||
function TsvfProgram.GetStatementCount: integer;
|
||||
begin
|
||||
result := fStatements.Count;
|
||||
end;
|
||||
|
||||
// ======================================================================================
|
||||
// GetStatement
|
||||
// ======================================================================================
|
||||
function TsvfProgram.GetStatement(i: integer): TsvfAstNode;
|
||||
begin
|
||||
if (i>=0) and (i<fStatements.Count)
|
||||
then result := fStatements[i] as TsvfAstNode
|
||||
else result := nil
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
Reference in New Issue
Block a user