表示: Delphi
C++
表示設定
標準関数と文法の変更
提供:RAD Studio
ジェネリックス:インデックス への移動
ジェネリックスをサポートする標準関数の変更リストは次のとおりです。
次に例を示します。
インスタンス化型 : TFoo<Integer,String>
開いた生成型 : TFoo<Integer,T>
ジェネリック型 : TFoo<,>
型パラメータ: T
標準関数:
procedure Initialize(var X; Count:Cardinal); [Win32]
procedure Finalize(var X); [Win32]
インスタンス化型 : 使用できる
開いた生成型 : 使用できる
ジェネリック型 : 使用できない
型パラメータ :使用できる
function High(X:TypeId): Integer|Int64|UInt64;
function Low(X:TypeId): Integer|Int64|UInt64;
インスタンス化型 : 使用できる
開いた生成型 : 使用できない
ジェネリック型 : 使用できない
型パラメータ : 使用できない
function Default(X:TYPE_ID): valueOfTypeId>;
インスタンス化型 : 使用できる
開いた生成型 : 使用できる
ジェネリック型 : 使用できない
型パラメータ : 使用できる
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]
インスタンス化型 : 使用できる
開いた生成型 : 使用できない
ジェネリック型 : 使用できない
型パラメータ : 使用できない
function SizeOf(TYPE_ID): PosInt;
インスタンス化型 : 使用できる
開いた生成型 : 使用できる
ジェネリック型 : 使用できない
型パラメータ : 使用できる
function TypeInfo;
function TypeHandle;
function TypeId;
// function TypeHandle(Identifier): Pointer; [Win32]
// function TypeInfo(Identifier): Pointer; [Win32]
// function TypeOf(object): Pointer; [Win32]
インスタンス化型 : 使用できる
開いた生成型 : 使用できる
ジェネリック型 : 使用できない
型パラメータ : 使用できる
Delphi 言語文法の変更
これらの変更はジェネリックスやジェネリック型をサポートするためのものです。
{ Type Declarations }
TypeDeclaration -> [ CAttrs ] Ident '=' Type
-> [ CAttrs ] Ident '=' RecordTypeDecl
-> [ CAttrs ] Ident '=' ClassTypeDecl
-> [ CAttrs ] Ident '=' InterfaceTypeDecl
-> [ CAttrs ] Ident '=' ClassHelperTypeDecl
-> [ CAttrs ] Ident '=' RecordHelperTypeDecl
-> [ CAttrs ] Ident '=' ObjectTypeDecl {Win32 のみ}
-> [ CAttrs ] Ident '=' DispatchInterfaceType {Win32 のみ}
-> [ CAttrs ] Ident '=' TYPE TypeId
{NEW} -> [ CAttrs ] Ident TypeParams '=' RecordTypeDecl
{NEW} -> [ CAttrs ] Ident TypeParams '=' ClassTypeDecl
{NEW} -> [ CAttrs ] Ident TypeParams '=' InterfaceTypeDecl
{NEW} -> [ CAttrs ] Ident TypeParams '=' Type
{NEW} TypeParams -> '<' TypeParamDeclList '>'
{NEW} TypeParamDeclList -> TypeParamDecl/';'...
{NEW} TypeParamDecl -> TypeParamList [ ':' ConstraintList ]
{NEW} TypeParamList -> ( [ CAttrs ] [ '+' | '-' [ CAttrs ] ] Ident )/','...
{NEW} ConstraintList -> Constraint/','...
{NEW} Constraint -> CONSTRUCTOR
{NEW} -> RECORD
{NEW} -> CLASS
{NEW} -> TypeId
MethodResolutionClause -> FUNCTION InterfaceIdent '.'
{OLD} Ident '=' Ident ';'
{NEW} Ident [ TypeArgs ] '=' Ident [ TypeArgs ] ';'
-> PROCEDURE InterfaceIdent '.'
{OLD} Ident '=' Ident ';'
{NEW} Ident [ TypeArgs ] '=' Ident [ TypeArgs ] ';'
FunctionHeading -> [ CLASS ] FUNCTION Ident
{NEW} [ FormalTypeParamList ]
[ FormalParameterList ] ':' TypeIdStringFile
ProcedureHeading -> [ CALSS ] PROCEDURE Ident
{NEW} [ FormalTypeParamList ]
[ FormalParameterList ]
ClassOperatorHeading -> CLASS OPERATOR OperatorIdent
{NEW} [ FormalTypeParamList ]
FormalParameterList : TypeIdStringFile
ConstructorHeading -> CONSTRUCTOR Ident
{NEW} [ FormalTypeParamList ]
[ FormalParameterList ]
RecordConstructorHeading -> CONSTRUCTOR Ident
{NEW} [ FormalTypeParamList ]
FormalParameterList
DestructorHeading -> DESTRUCTOR Ident
{NEW} [ FormalTypeParamList ]
[ FormalParameterList ]
MethodBodyHeading -> [ CLASS ] FUNCTION NSTypeId '.' Ident
{NEW} [ FormalTypeParamList ]
[ FormalParameterList ] ':' TypeIdStringFile
-> [ CLASS ] PROCEDURE NSTypeId '.' Ident
{NEW} [ FormalTypeParamList ]
[ FormalParameterList ]
ProcedureTypeHeading -> PROCEDURE
{NEW} [ FormalTypeParamList ]
[ FormalParameterList ]
FunctionTypeHeading -> FUNCTION
{NEW} [ FormalTypeParamList ]
[ FormalParameterList ] ':' TypeIdStringFile
FormalTypeParamList -> '<' TypeParamDeclList >'
{ Types }
Type -> TypeId
-> SimpleType
-> StructualType
-> PointerType
-> StringType
-> ProcedureType
-> VariantType {Win32 のみ}
-> ClassRefType
-> TypeRefType
{NEW}-> ClassTypeId TypeArgs
{NEW}-> RecordTypeId TypeArgs
{NEW}-> InterfaceIdent TypeArgs
{NEW} TypeArgs -> '<' ( TypeId | STRING )/','... '>'
{ Attributes }
CAttrExpr -> ConstExpr
-> TYPEOF '(' TypeId ')'
{NEW} -> TYPEOF '(' TypeId '<' [ ','... ] '>' ')'
{NEW} -> TYPEOF '(' TypeId '<' TypeId/','... '>' ')'