/** Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved.* This component and the accompanying materials are made available* under the terms of "Eclipse Public License v1.0"* which accompanies this distribution, and is available* at the URL "http://www.eclipse.org/legal/epl-v10.html".** Initial Contributors:* Nokia Corporation - initial contribution.** Contributors:** Description: Abstract SQL connection class**/#ifndef __MDSSQLCONNECTION_H__#define __MDSSQLCONNECTION_H__#include <e32base.h>#include "mdccommon.pan"#include "mdscommoninternal.h"// types of columnsenum TColumnDataType { EColumnNotUsed, EColumnBool, EColumnInt32, EColumnUint32, EColumnInt64, EColumnReal32, EColumnReal64, EColumnTime, EColumnDes8, EColumnDes16, // could be used as Unknown, because it checks the // actual type from sqlite EColumnHBuf8, // local pointer responsibility EColumnHBuf16, // local pointer responsibility EColumnNullDes8, EColumnNullDes16, // used when db column is null //EColumnUnknown EColumnTItemId = EColumnUint32, // should be changed according to TItemId definition EColumnTDefId = EColumnUint32, // should be changed according to TDefId definition };/*** A class representing a database column.* The column contains a type and an untyped pointer, which can* be cast to represent various types.*/NONSHARABLE_CLASS(TColumn) { public: /** Returns column type. */ inline TColumnDataType Type() const; /** Constructs a column with data type only. Use for queries. */ inline TColumn( TColumnDataType aType = EColumnNotUsed ); /** frees allocated memory in this column */ inline void Free(); // constructors TColumn( TInt32 aVal ) { Set( aVal ); } TColumn( TUint32 aVal ) { Set( aVal ); } TColumn( TBool aVal ) { Set( aVal ); } TColumn( TInt64 aVal ) { Set( aVal ); } TColumn( TReal32 aVal ) { Set( aVal ); } TColumn( TReal64 aVal ) { Set( aVal ); } TColumn( TTime aVal ) { Set( aVal ); } TColumn( const TDesC8& aVal ) { Set( aVal ); } TColumn( const TDesC16& aVal ) { Set( aVal ); } TColumn( const HBufC8* aVal ) { Set( aVal ); } TColumn( const HBufC16* aVal ) { Set( aVal ); } // data setters & getters inline void Set( TInt32 aVal ); inline void Set( TUint32 aVal ); inline void Set( TBool aVal ); inline void Set( TInt64 aVal ); inline void Set( TReal32 aVal ); inline void Set( TReal64 aVal ); inline void Set( TTime aVal ); inline void Set( const TDesC8& aVal ); inline void Set( const TDesC16& aVal ); inline void Set( const HBufC8* aVal ); inline void Set( const HBufC16* aVal ); inline void NotUsed(); // data getters inline void Get( TInt32& aValue ) const; inline void Get( TUint32& aValue ) const; inline void Get( TBool& aValue ) const; inline void Get( TInt64& aValue ) const; inline void Get( TReal32& aValue ) const; inline void Get( TReal64& aValue ) const; inline void Get( TTime& aValue ) const; inline void Get( TPtrC8& aValue ) const; inline void Get( TPtrC16& aValue ) const; inline TBool IsNull(); /** * type of data in this column */ TColumnDataType iType; /** * a structure to store multi-typed data */ union TMultiTypeData { /*struct { TUint32 iLow; TUint32 iHigh; } iInt64;*/ TInt64 iInt64; TReal32 iReal32; TReal64 iReal64; TInt32 iInt32; TUint32 iUint32; struct { TAny* iPtr; TInt iLen; } iText; }; /** * multi-use data in this column */ TMultiTypeData iData; };/*** A class representing a database row.* The class describes each column type and the data in the column.* where column data is located. The class is provided during* query and is used when each row is read. Note that the* buffer class MAY be modified by the user during the query.* The same class is also used when replacing wildcards with* variable data.*/class RRowData { public: /** * constructor */ inline RRowData(); /** Closes all the resources used by this object */ inline void Close(); /** frees allocated memory in this row */ inline void Free(); /** number of columns or variables */ inline TInt Size() const; /** returns column by index */ inline TColumn& Column( TInt aIndex ); /** returns column by index */ inline const TColumn& Column( TInt aIndex ) const; /** Appends a new column in row */ inline TColumn& AppendL( const TColumn& aColumn ); /** Resets the row */ inline void Reset(); /** Copy all columns */ void AppendColumnTypesL( RRowData& aColumnTypeRow ); /** Receive space to row */ void ReserveL( TInt aColumnCount ); protected: /** The array of columns */ RArray<TColumn> iColumns; };#include "mdssqlrow.inl" // inline methods#endif // __MDSSQLCONNECTION_H__// End of File