Anzeigen: Delphi
C++
Anzeigeeinstellungen
Änderungen von Standardfunktionen und Grammatik
Aus RAD Studio XE2
Nach oben zu Generics - Index
Im Folgenden sind die zur Unterstützung von Generics erforderlichen Änderungen von Standardfunktionen aufgeführt.
Beispiele:
Instantiierter Typ : TFoo<Integer,String>
Offen konstruierter Typ : TFoo<Integer,T>
Generischer Typ : TFoo<,>
Typparameter: T
Standardfunktionen:
procedure Initialize(var X; Count:Cardinal); [Win32]
procedure Finalize(var X); [Win32]
Instantiierter Typ : zulässig
Offen konstruierter Typ : zulässig
Generischer Typ : NICHT zulässig
Typparameter :zulässig
function High(X:TypeId): Integer|Int64|UInt64;
function Low(X:TypeId): Integer|Int64|UInt64;
Instantiierter Typ : zulässig
Offen konstruierter Typ : NICHT zulässig
Generischer Typ : NICHT zulässig
Typparameter: NICHT zulässig
function Default(X:TYPE_ID): valueOfTypeId>;
Instantiierter Typ : zulässig
Offen konstruierter Typ : zulässig
Generischer Typ : NICHT zulässig
Typparameter: zulässig
function New;
// New( PtrVar ); [Win32]
// New( PtrToRecordOrObjectVar,<CtorIdent> ); [Win32]
// New( PtrToRecordOrObjectVar, <CtorIdent> ( CtorParams ) ); [Win32]
// P := New( PtrType ); [Win32]
// P := New( PtrTypeOfRecordOrObject, <CtorIdent> ); [Win32]
// P := New( PtrTypeOfRecordOrObject, <CtorIdent> ( CtorParams ) ); [Win32]
Instantiierter Typ : zulässig
Offen konstruierter Typ : NICHT zulässig
Generischer Typ : NICHT zulässig
Typparameter: NICHT zulässig
function SizeOf(TYPE_ID): PosInt;
Instantiierter Typ : zulässig
Offen konstruierter Typ : zulässig
Generischer Typ : NICHT zulässig
Typparameter: zulässig
function TypeInfo;
function TypeHandle;
function TypeId;
// function TypeHandle(Identifier): Pointer; [Win32]
// function TypeInfo(Identifier): Pointer; [Win32]
// function TypeOf(object): Pointer; [Win32]
Instantiierter Typ : zulässig
Offen konstruierter Typ : zulässig
Generischer Typ : NICHT zulässig
Typparameter: zulässig
Grammatische Änderungen der Delphi-Sprache
Diese Änderungen waren zur Unterstützung generischer oder Generic-Typen erforderlich.
{ Typdeklarationen }
TypeDeclaration -> [ CAttrs ] Ident '=' Type
-> [ CAttrs ] Ident '=' RecordTypeDecl
-> [ CAttrs ] Ident '=' ClassTypeDecl
-> [ CAttrs ] Ident '=' InterfaceTypeDecl
-> [ CAttrs ] Ident '=' ClassHelperTypeDecl
-> [ CAttrs ] Ident '=' RecordHelperTypeDecl
-> [ CAttrs ] Ident '=' ObjectTypeDecl {nur Win32}
-> [ CAttrs ] Ident '=' DispatchInterfaceType {nur Win32}
-> [ CAttrs ] Ident '=' TYPE TypeId
{NEU} -> [ CAttrs ] Ident TypeParams '=' RecordTypeDecl
{NEU} -> [ CAttrs ] Ident TypeParams '=' ClassTypeDecl
{NEU} -> [ CAttrs ] Ident TypeParams '=' InterfaceTypeDecl
{NEU} -> [ CAttrs ] Ident TypeParams '=' Type
{NEU} TypeParams -> '<' TypeParamDeclList '>'
{NEU} TypeParamDeclList -> TypeParamDecl/';'...
{NEU} TypeParamDecl -> TypeParamList [ ':' ConstraintList ]
{NEU} TypeParamList -> ( [ CAttrs ] [ '+' | '-' [ CAttrs ] ] Ident )/','...
{NEU} ConstraintList -> Constraint/','...
{NEU} Constraint -> CONSTRUCTOR
{NEU} -> RECORD
{NEU} -> CLASS
{NEU} -> TypeId
MethodResolutionClause -> FUNCTION InterfaceIdent '.'
{ALT} Ident '=' Ident ';'
{NEU} Ident [ TypeArgs ] '=' Ident [ TypeArgs ] ';'
-> PROCEDURE InterfaceIdent '.'
{ALT} Ident '=' Ident ';'
{NEU} Ident [ TypeArgs ] '=' Ident [ TypeArgs ] ';'
FunctionHeading -> [ CLASS ] FUNCTION Ident
{NEU} [ FormalTypeParamList ]
[ FormalParameterList ] ':' TypeIdStringFile
ProcedureHeading -> [ CALSS ] PROCEDURE Ident
{NEU} [ FormalTypeParamList ]
[ FormalParameterList ]
ClassOperatorHeading -> CLASS OPERATOR OperatorIdent
{NEU} [ FormalTypeParamList ]
FormalParameterList : TypeIdStringFile
ConstructorHeading -> CONSTRUCTOR Ident
{NEU} [ FormalTypeParamList ]
[ FormalParameterList ]
RecordConstructorHeading -> CONSTRUCTOR Ident
{NEU} [ FormalTypeParamList ]
FormalParameterList
DestructorHeading -> DESTRUCTOR Ident
{NEU} [ FormalTypeParamList ]
[ FormalParameterList ]
MethodBodyHeading -> [ CLASS ] FUNCTION NSTypeId '.' Ident
{NEU} [ FormalTypeParamList ]
[ FormalParameterList ] ':' TypeIdStringFile
-> [ CLASS ] PROCEDURE NSTypeId '.' Ident
{NEU} [ FormalTypeParamList ]
[ FormalParameterList ]
ProcedureTypeHeading -> PROCEDURE
{NEU} [ FormalTypeParamList ]
[ FormalParameterList ]
FunctionTypeHeading -> FUNCTION
{NEU} [ FormalTypeParamList ]
[ FormalParameterList ] ':' TypeIdStringFile
FormalTypeParamList -> '<' TypeParamDeclList >'
{ Typen }
Type -> TypeId
-> SimpleType
-> StructualType
-> PointerType
-> StringType
-> ProcedureType
-> VariantType {nur Win32}
-> ClassRefType
-> TypeRefType
{NEU}-> ClassTypeId TypeArgs
{NEU}-> RecordTypeId TypeArgs
{NEU}-> InterfaceIdent TypeArgs
{NEU} TypeArgs -> '<' ( TypeId | STRING )/','... '>'
{ Attribute }
CAttrExpr -> ConstExpr
-> TYPEOF '(' TypeId ')'
{NEU} -> TYPEOF '(' TypeId '<' [ ','... ] '>' ')'
{NEU} -> TYPEOF '(' TypeId '<' TypeId/','... '>' ')'