Changes between Version 24 and Version 25 of FDORfc34


Ignore:
Timestamp:
Apr 16, 2009, 12:43:43 PM (15 years ago)
Author:
gregboone
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • FDORfc34

    v24 v25  
    6363== Requirements ==
    6464
    65 The following FDO capability interface will be updated to expose a capability method that indicates if indexed access is supported by the provider. The default implementation of this property will be 'false'. Providers will not be required to implement this method.
    66 
    67 === Interface ICommandCapabilities ===
    68 
    69 {{{
    70 /// \brief
    71 /// The FdoICommandCapabilities interface declares the feature
    72 /// provider's level of support for Commands.
    73 class FdoICommandCapabilities : public FdoIDisposable
    74 {
    75 public:
    76 ...
    77 ...
    78 ...
    79     /// \brief
    80     /// Determines if the provider supports accessing reader properties by index.
    81     /// The default access method is by name.
    82     ///
    83     /// \return
    84     /// Returns true if the provider supports ExecuteFeatureReader.
    85     ///
    86     FDO_API virtual bool SupportsReaderPropertyAccessByIndex()
    87 };
    88 }}}
    89 
    90 The following FDO reader interfaces will be updated to allow for indexed access. The default implementation of these properties will throw a Not Implemented exception. Providers will not be required to implement this method. Clients are required to use the above !SupportsReaderPropertyAccessByIndex method to determine if they can use these newly added index operations.
     65The following FDO reader interfaces will be updated to allow for indexed access. Providers will be required to implement these method.
    9166
    9267=== Interface IReader ===
     
    11792    /// Returns true if the value is null.
    11893    ///
    119     FDO_API virtual FdoBoolean IsNull(FdoInt32 index);
     94    FDO_API virtual FdoBoolean IsNull(FdoInt32 index) = 0;
    12095
    12196    /// \brief
     
    130105    /// Returns the Boolean value.
    131106    ///
    132     FDO_API virtual FdoBoolean GetBoolean(FdoInt32 index);
     107    FDO_API virtual FdoBoolean GetBoolean(FdoInt32 index) = 0;
    133108
    134109    /// \brief
     
    143118    /// Returns the byte value.
    144119    ///
    145     FDO_API virtual FdoByte GetByte(FdoInt32 index);
     120    FDO_API virtual FdoByte GetByte(FdoInt32 index) = 0;
    146121
    147122    /// \brief
     
    169144    /// Returns the double floating point value
    170145    ///
    171     FDO_API virtual FdoDouble GetDouble(FdoInt32 index);
     146    FDO_API virtual FdoDouble GetDouble(FdoInt32 index) = 0;
    172147
    173148    /// \brief
     
    182157    /// Returns the FdoInt16 value.
    183158    ///
    184     FDO_API virtual FdoInt16 GetInt16(FdoInt32 index);
     159    FDO_API virtual FdoInt16 GetInt16(FdoInt32 index) = 0;
    185160
    186161    /// \brief
     
    195170    /// Returns the FdoInt32 value
    196171    ///
    197     FDO_API virtual FdoInt32 GetInt32(FdoInt32 index);
     172    FDO_API virtual FdoInt32 GetInt32(FdoInt32 index) = 0;
    198173
    199174    /// \brief
     
    208183    /// Returns the FdoInt64 value.
    209184    ///
    210     FDO_API virtual FdoInt64 GetInt64(FdoInt32 index);
     185    FDO_API virtual FdoInt64 GetInt64(FdoInt32 index) = 0;
    211186
    212187    /// \brief
     
    221196    /// Returns the single value
    222197    ///
    223     FDO_API virtual FdoFloat GetSingle(FdoInt32 index);
     198    FDO_API virtual FdoFloat GetSingle(FdoInt32 index) = 0;
    224199
    225200    /// \brief
     
    234209    /// Returns the string value
    235210    ///
    236     FDO_API virtual FdoString* GetString(FdoInt32 index);
     211    FDO_API virtual FdoString* GetString(FdoInt32 index) = 0;
    237212
    238213    /// \brief
     
    248223    /// Returns the reference to LOBValue
    249224    ///
    250     FDO_API virtual FdoLOBValue* GetLOB(FdoInt32 index);
     225    FDO_API virtual FdoLOBValue* GetLOB(FdoInt32 index) = 0;
    251226
    252227    /// \brief
     
    264239    /// Returns a reference to a LOB stream reader
    265240    ///
    266     FDO_API virtual FdoIStreamReader* GetLOBStreamReader(FdoInt32 index);
     241    FDO_API virtual FdoIStreamReader* GetLOBStreamReader(FdoInt32 index) = 0;
    267242
    268243    /// \brief
     
    277252    /// Returns the byte array in FGF format.
    278253    ///
    279     FDO_API virtual FdoByteArray* GetGeometry(FdoInt32 index);
     254    FDO_API virtual FdoByteArray* GetGeometry(FdoInt32 index) = 0;
    280255
    281256    /// \brief
     
    290265    /// Returns the raster object.
    291266    ///
    292     FDO_API virtual FdoIRaster* GetRaster(FdoInt32 index);
     267    FDO_API virtual FdoIRaster* GetRaster(FdoInt32 index) = 0;
    293268};
    294269}}}
     
    315290    /// Returns the number of columns.
    316291    ///
    317     FDO_API virtual FdoInt32 GetPropertyCount();
     292    FDO_API virtual FdoInt32 GetPropertyCount() = 0;
    318293
    319294    /// \brief
     
    326301    /// Returns the property name
    327302    ///
    328     FDO_API virtual FdoString* GetPropertyName(FdoInt32 index);
     303    FDO_API virtual FdoString* GetPropertyName(FdoInt32 index) = 0;
    329304
    330305    /// \brief
     
    337312    /// Returns the type of the property.
    338313    ///
    339     FDO_API virtual FdoPropertyType GetPropertyType(FdoInt32 index);
     314    FDO_API virtual FdoPropertyType GetPropertyType(FdoInt32 index) = 0;
    340315
    341316    /// \brief
     
    348323    /// Returns the data type of the property.
    349324    ///
    350     FDO_API virtual FdoDataType GetDataType(FdoInt32 index)
     325    FDO_API virtual FdoDataType GetDataType(FdoInt32 index) = 0;
    351326
    352327    /// \brief
     
    368343    /// Returns a pointer to the byte array in FGF format.
    369344    ///
    370     FDO_API virtual const FdoByte * GetGeometry(FdoInt32 index, FdoInt32* count);
     345    FDO_API virtual const FdoByte * GetGeometry(FdoInt32 index, FdoInt32* count) = 0;
    371346
    372347    /// \brief
     
    381356    /// Returns the byte array in FGF format.
    382357    ///
    383     FDO_API virtual FdoByteArray* GetGeometry(FdoInt32 index);
     358    FDO_API virtual FdoByteArray* GetGeometry(FdoInt32 index) = 0;
    384359
    385360    /// \brief
     
    394369    /// Returns the nested feature reader
    395370    ///
    396     FDO_API virtual FdoIFeatureReader* GetFeatureObject(FdoInt32 index);
     371    FDO_API virtual FdoIFeatureReader* GetFeatureObject(FdoInt32 index) = 0;
    397372};
    398373}}}
     
    422397    /// Returns the type of the property.
    423398    ///
    424     FDO_API virtual FdoDataType GetDataType(FdoInt32 index);
     399    FDO_API virtual FdoDataType GetDataType(FdoInt32 index) = 0;
    425400
    426401    /// \brief
     
    436411    /// Returns the FDO property type.
    437412    ///
    438     FDO_API virtual FdoPropertyType GetPropertyType(FdoInt32 index);
     413    FDO_API virtual FdoPropertyType GetPropertyType(FdoInt32 index) = 0;
    439414};
    440415}}}
     
    465440    /// Returns true if the value is null.
    466441    ///
    467     FDO_API virtual FdoBoolean IsNull(FdoInt32 index);
     442    FDO_API virtual FdoBoolean IsNull(FdoInt32 index) = 0;
    468443
    469444    /// \brief
     
    476451    /// Returns the type of the column.
    477452    ///
    478     FDO_API virtual FdoDataType GetColumnType(FdoInt32 index);
     453    FDO_API virtual FdoDataType GetColumnType(FdoInt32 index) = 0;
    479454
    480455    /// \brief
     
    489464    /// Returns the FDO property type of the column.
    490465    ///
    491     FDO_API virtual FdoPropertyType GetPropertyType(FdoInt32 index);
     466    FDO_API virtual FdoPropertyType GetPropertyType(FdoInt32 index) = 0;
    492467
    493468    /// \brief
     
    502477    /// Returns the Boolean value
    503478    ///
    504     FDO_API virtual FdoBoolean GetBoolean(FdoInt32 index);
     479    FDO_API virtual FdoBoolean GetBoolean(FdoInt32 index) = 0;
    505480
    506481    /// \brief
     
    515490    /// Returns the byte value.
    516491    ///
    517     FDO_API virtual FdoByte GetByte(FdoInt32 index);
     492    FDO_API virtual FdoByte GetByte(FdoInt32 index) = 0;
    518493
    519494    /// \brief
     
    528503    /// Returns the date and time value.
    529504    ///
    530     FDO_API virtual FdoDateTime GetDateTime(FdoInt32 index);
     505    FDO_API virtual FdoDateTime GetDateTime(FdoInt32 index) = 0;
    531506
    532507    /// \brief
     
    541516    /// Returns the double value.
    542517    ///
    543     FDO_API virtual FdoDouble GetDouble(FdoInt32 index);
     518    FDO_API virtual FdoDouble GetDouble(FdoInt32 index) = 0;
    544519
    545520    /// \brief
     
    554529    /// Returns the FdoInt16 value.
    555530    ///
    556     FDO_API virtual FdoInt16 GetInt16(FdoInt32 index);
     531    FDO_API virtual FdoInt16 GetInt16(FdoInt32 index) = 0;
    557532
    558533    /// \brief
     
    567542    /// Returns the FdoInt32 value.
    568543    ///
    569     FDO_API virtual FdoInt32 GetInt32(FdoInt32 index);
     544    FDO_API virtual FdoInt32 GetInt32(FdoInt32 index) = 0;
    570545
    571546    /// \brief
     
    580555    /// Returns the FdoInt64 value.
    581556    ///
    582     FDO_API virtual FdoInt64 GetInt64(FdoInt32 index);
     557    FDO_API virtual FdoInt64 GetInt64(FdoInt32 index) = 0;
    583558
    584559    /// \brief
     
    593568    /// Returns the single value
    594569    ///
    595     FDO_API virtual FdoFloat GetSingle(FdoInt32 index);
     570    FDO_API virtual FdoFloat GetSingle(FdoInt32 index) = 0;
    596571
    597572    /// \brief
     
    606581    /// Returns the string value.
    607582    ///
    608     FDO_API virtual FdoString* GetString(FdoInt32 index);
     583    FDO_API virtual FdoString* GetString(FdoInt32 index) = 0;
    609584
    610585    /// \brief
     
    619594    /// Returns the reference to LOBValue
    620595    ///
    621     FDO_API virtual FdoLOBValue* GetLOB(FdoInt32 index);
     596    FDO_API virtual FdoLOBValue* GetLOB(FdoInt32 index) = 0;
    622597
    623598    /// \brief
     
    634609    /// Returns a reference to a LOB stream reader
    635610    ///
    636     FDO_API virtual FdoIStreamReader* GetLOBStreamReader(FdoInt32 index);
     611    FDO_API virtual FdoIStreamReader* GetLOBStreamReader(FdoInt32 index) = 0;
    637612
    638613    /// \brief
     
    647622    /// Returns the FGF byte array value.
    648623    ///
    649     FDO_API virtual FdoByteArray* GetGeometry(FdoInt32 index);
     624    FDO_API virtual FdoByteArray* GetGeometry(FdoInt32 index) = 0;
    650625};
    651626}}}
     
    657632== Provider Implementation ==
    658633
    659 Providers will not be required to implement the above functionality, although they will be strongly encouraged to do so. These methods will be added to the base FDO API package with a default implementation that throws an exception stating that the property is not supported.
    660 
    661 For example:
    662 
    663 {{{
    664 FdoDataType FdoISQLDataReader::GetColumnType(FdoInt32 index)
    665 {
    666     throw FdoException::Create(FdoException::NLSGetMessage(FDO_NLSID(FDO_3_NOTIMPLEMENTED)));
    667 }
    668 }}}
    669 
    670 
    671 It is expected that resourcing will be supplied to modify the SQLite, SDF and SHP providers. Resourcing required for modifying the other Open Source providers will be determined at a latter date. Of primary interest would be the implementation of these enhancements in the SQL Server Spatial Provider.
     634Providers will be required to implement the above functionality.
     635
     636It is expected that resourcing will be supplied to modify all the existing FDO OpenSource providers.
    672637
    673638== Test Plan ==