標準関数と文法の変更

提供: 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/','... '>' ')'

関連項目