diff --git a/src/shared/xdynrec.pas b/src/shared/xdynrec.pas
index e5d0b39acc3a8189fc2ac66bd23e2ada8be5cf59..c71250ce9ee8bc4697133ee8960465739b57f537 100644 (file)
--- a/src/shared/xdynrec.pas
+++ b/src/shared/xdynrec.pas
property name: AnsiString read mName;
property baseType: TType read mType;
property negbool: Boolean read mNegBool;
property name: AnsiString read mName;
property baseType: TType read mType;
property negbool: Boolean read mNegBool;
- property defined: Boolean read mDefined write mDefined;
+ property defined: Boolean read mDefined;
property internal: Boolean read mInternal write mInternal;
property hasTPrefix: Boolean read mAsT;
property separatePasFields: Boolean read mSepPosSize;
property internal: Boolean read mInternal write mInternal;
property hasTPrefix: Boolean read mAsT;
property separatePasFields: Boolean read mSepPosSize;
property ebs: TEBS read mEBS;
property ebstype: TObject read mEBSType;
property ebstypename: AnsiString read mEBSTypeName; // enum/bitset name
property ebs: TEBS read mEBS;
property ebstype: TObject read mEBSType;
property ebstypename: AnsiString read mEBSTypeName; // enum/bitset name
- property recref: TDynRecord read mRecRef write mRecRef; //FIXME: writing is a hack!
+ property recref: TDynRecord read mRecRef;
property recrefIndex: Integer read getRecRefIndex; // search for this record in header; -1: not found
// for lists
property count: Integer read getListCount;
property recrefIndex: Integer read getRecRefIndex; // search for this record in header; -1: not found
// for lists
property count: Integer read getListCount;
ainternal: Boolean;
omitdef: Boolean;
defstr: AnsiString;
ainternal: Boolean;
omitdef: Boolean;
defstr: AnsiString;
- defint: Integer;
+ defint, defint2: Integer;
hasdefStr: Boolean;
hasdefInt: Boolean;
hasdefId: Boolean;
hasdefStr: Boolean;
hasdefInt: Boolean;
hasdefId: Boolean;
lebs: TDynField.TEBS;
unique: Boolean;
asmonid: Boolean;
lebs: TDynField.TEBS;
unique: Boolean;
asmonid: Boolean;
+ defech: AnsiChar;
begin
fldpasname := '';
fldname := '';
begin
fldpasname := '';
fldname := '';
omitdef := false;
defstr := '';
defint := 0;
omitdef := false;
defstr := '';
defint := 0;
+ defint2 := 0;
hasdefStr := false;
hasdefInt := false;
hasdefId := false;
hasdefStr := false;
hasdefInt := false;
hasdefId := false;
hasdefInt := true;
defint := pr.expectInt();
end;
hasdefInt := true;
defint := pr.expectInt();
end;
+ pr.TTDelim:
+ begin
+ hasdefInt := true;
+ if pr.eatDelim('[') then defech := ']' else begin pr.expectDelim('('); defech := ')'; end;
+ defint := pr.expectInt();
+ defint2 := pr.expectInt();
+ pr.expectDelim(defech);
+ end;
else
raise Exception.Create(Format('field ''%s'' has invalid default', [fldname]));
end;
else
raise Exception.Create(Format('field ''%s'' has invalid default', [fldname]));
end;
end;
if hasdefStr then self.mDefUnparsed := quoteStr(defstr)
end;
if hasdefStr then self.mDefUnparsed := quoteStr(defstr)
- else if hasdefInt then self.mDefUnparsed := Format('%d', [defint])
- else if hasdefId then self.mDefUnparsed := defstr;
+ else if hasdefId then self.mDefUnparsed := defstr
+ else if hasdefInt then
+ begin
+ if (mType = TType.TPoint) then self.mDefUnparsed := Format('(%d %d)', [defint, defint2])
+ else if (mType = TType.TSize) then self.mDefUnparsed := Format('[%d %d]', [defint, defint2])
+ else self.mDefUnparsed := Format('%d', [defint]);
+ end;
self.mHasDefault := (hasdefStr or hasdefId or hasdefInt);
self.mPasName := fldpasname;
self.mHasDefault := (hasdefStr or hasdefId or hasdefInt);
self.mPasName := fldpasname;