epoc32/include/commsdat.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
child 4 837f303aceeb
--- a/epoc32/include/commsdat.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/commsdat.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,745 @@
-commsdat.h
+// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Constants for use in storing comms data via CommsDat
+// 
+//
+
+
+
+/**
+ @file
+ @publishedAll
+ @released
+*/
+
+
+#if (!defined COMMSDAT_H)
+#define       COMMSDAT_H
+
+#include <comms-infras/metatype.h>
+#include <e32property.h>
+
+
+namespace Meta
+    {
+
+	/**
+	Visitor factory functions
+	@internalComponent
+	*/
+    MMetaType* TMDBNumBaseVisitorFactoryL(const TAny* mem, const TAny* data);
+   	/**     
+   	@internalComponent
+   	*/
+    MMetaType* TMDBTextBaseVisitorFactoryL(const TAny* mem, const TAny* data);
+    /**     
+   	@internalComponent
+   	*/
+    MMetaType* TMDBBinBaseVisitorFactoryL(const TAny* mem, const TAny* data);
+    /**     
+   	@internalComponent
+   	*/
+    MMetaType* TMDBDeprecatedVisitorFactoryL(const TAny* mem, const TAny* data);
+	/**
+    @publishedPartner
+    @released
+    */
+    IMPORT_C MMetaType* TMDBNumVisitorFactoryL(const TAny* mem, const TAny* data);
+    /**
+    @publishedPartner
+    @released
+    */
+    IMPORT_C MMetaType* TMDBLinkNumVisitorFactoryL(const TAny* mem, const TAny* data);
+    /**
+    @publishedPartner
+    @released
+    */
+    IMPORT_C MMetaType* TMDBTextVisitorFactoryL(const TAny* mem, const TAny* data);
+    /**
+    @publishedPartner
+    @released
+    */
+    IMPORT_C MMetaType* TMDBMedTextVisitorFactoryL(const TAny* mem, const TAny* data);
+    /**
+    @publishedPartner
+    @released
+    */
+    IMPORT_C MMetaType* TMDBLongTextVisitorFactoryL(const TAny* mem, const TAny* data);
+    /**
+    @publishedPartner
+    @released
+    */
+    IMPORT_C MMetaType* TMDBBinVisitorFactoryL(const TAny* mem, const TAny* data);
+    /**
+    @publishedPartner
+    @released
+    */
+    IMPORT_C MMetaType* TMDBLinkVisitorFactoryL(const TAny* mem, const TAny* data);
+    /**
+    @publishedPartner
+    @released
+    */
+    IMPORT_C MMetaType* TMDBRecordSetVisitorFactoryL(const TAny* mem, const TAny* data);
+    /**
+    @publishedPartner
+    @released
+    */
+    IMPORT_C MMetaType* TMDBGenericRecordVisitorFactoryL(const TAny* mem, const TAny* data);
+
+    }
+
+
+namespace CommsDat
+{
+
+/**
+Use this constant for Debug panic calls
+
+@publishedAll
+*/
+_LIT(KCommsDatName,"CommsDat");
+
+/**
+Use this constant for Debug panic calls
+
+@publishedAll
+*/
+enum
+	{
+	ECommitBeforeOpenTransaction = 1,
+	ERollBackBeforeOpenTransaction = 2,
+	ESessionClosed = 3,
+    EWrongAPPrioritySelPolRecord = 4,
+    EWrongIAPServiceType = 5
+	};
+	
+using namespace Meta;
+
+//////////////////////////////////////////////////
+// VERSION INFO
+//
+
+/**
+Use this constant when starting a session to ask to use the latest version of the data set
+Do not use this constant if want option to keep using particular version after update
+Using this constant will require the client to keep up to date with any changes in the current dataset
+Use specific version constants to avoid changing until a deprecated version is no longer supported.
+
+@publishedAll
+*/
+#define KCDLatestVersion            TVersion(0,0,0)
+
+
+/**
+Versions of the dataset in use
+NB These versions will change as data set is updated
+All versions apart from the one defined as KCDCurrentVersion are deprecated
+*/
+
+/*
+Initial Version 
+@publishedAll
+*/
+
+#define KCDVersion1_1               TVersion(1,1,1)
+
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+/**
+Some elements in Version KCDVersion1_1 now deprecated
+These elements will be mapped if the client starts a session with KCDVersion1_1
+They will be ignored or rejected as not supported if client starts a session with 
+KCDVersion1_2 or KCDLatestVersion
+
+@publishedAll
+*/
+#define KCDVersion1_2               TVersion(1,2,1)
+#endif
+/**
+The version of the dataset supported by default
+NB This version will change as data set is updated
+
+@publishedAll
+*/
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+
+#define KCDCurrentVersion           KCDVersion1_2
+
+#else
+
+#define KCDCurrentVersion           KCDVersion1_1
+
+#endif
+
+
+
+
+////////////////////////////////////////////////////
+//  Attribute Flags
+//
+
+/**
+Access control attribute flags.
+When these are SET in the mask the attribute is obeyed
+When they are CLEARED from the mask, the attribute is ignored
+By default attributes are obeyed.
+
+@publishedAll
+*/
+typedef enum
+{
+  ECDNoWriteButDelete = 0x0000010,     // R/W Read Only but deleteable      Caller should explicitly choose to modify
+                                       //                                   Enforced by convention only, not with Platform Security
+  ECDHidden           = 0x0000020,     // R/W Read-Write Hidden data        Not policed - hides public utility info such as default values
+                                       //                                   Enforced by convention only, not with Platform Security  
+  ECDPrivate          = 0x0000040,     // R/W Read-Write Private data       For sensitive user data such as passwords
+                                       //                                   Policed at storage server API with platsec capability
+  ECDProtectedWrite   = 0x0000080,     // W   Write-Protected data          To allow data to be read only to most clients but modifiable by a few privileged clients
+                                       //                                   Policed at storage server API with platsec capability
+} TCDAttributeFlags;
+
+
+/////////////////////////////////////////////////////
+// Field types
+//
+/**
+@publishedPartner
+@released
+*/
+typedef enum
+{
+	EText,          ///< Text field - descriptor with a maximum length of 50 unicode characters.
+ 	EDesC8,         ///< Buffer of TUInt8. Maximum length is 1024 * 8. 
+ 	EUint32,		///< Unsigned 32 bit integer field.
+ 	EInt,			///< Signed integer field
+ 	EBool,			///< Boolean field
+ 	EMedText,       ///< Text field - descriptor with a maximum length of 256 unicode characters.
+ 	ELongText, 		///< Text field - descriptor with a maximum length of 1024 unicode characters.
+    ELink			///< This field is an integer that identifies a record in another table.
+
+} TCDFieldValueTypes;
+
+/**
+@publishedPartner
+@released
+*/
+const TInt KMaxTextLength		= 50; 		///< Specifies the max length (characters) for short text.
+/**
+@publishedPartner
+@released
+*/
+const TInt KMaxMedTextLength	= 255; 		///< Specifies the max length (characters) for medium text.
+/**
+@publishedPartner
+@released
+*/
+const TInt KMaxLongTextLength	= 1024;		///< Specifies the max length (characters) for long text.
+/**
+@publishedPartner
+@released
+*/
+const TInt KMaxNumLength		= 1;		///< Specifies the max length for an integer and a boolean.
+
+// Length override on a normal text field
+/**
+@publishedPartner
+@released
+*/
+const TInt KShortTextLength		= 32;
+
+////////////////////////////////////////////////////
+// Masks for Element Type info
+//
+
+
+/**
+Mask to use to hide attribute reserved bits
+
+@publishedAll
+*/
+#define KCDMaskHideAttrAndRes       0xffffff00
+
+
+/**
+Mask to use to show reserved bits
+
+@publishedAll
+*/
+#define KCDMaskShowRes              0x8000000f
+
+
+/**
+Mask to use to hide reserved bits
+
+@publishedAll
+*/
+#define KCDMaskHideRes              0x7ffffff0
+
+
+/**
+T x x   Mask to show Table Type info
+
+@publishedAll
+*/
+#define KCDMaskShowRecordType       0x7f800000
+
+
+/**
+x C x   Mask to show Column Type 
+
+@publishedAll
+*/
+#define KCDMaskShowFieldType        0x007f0000
+
+
+/**
+T C x   Mask to show Table and Column Type 
+
+@publishedAll
+*/
+#define KCDMaskShowType             0x7fff0000
+
+
+/**
+T x R   Mask to show Record id
+
+@publishedAll - don't use this.  Replace with KCDMaskShowRecordId
+*/
+#define KCDMaskShowInstance         0x0000ff00
+
+
+/**
+T x R   Mask to show Record id
+Use in place of KCDMaskShowInstance
+@publishedAll
+*/
+#define KCDMaskShowRecordId         0x0000ff00
+
+
+/**
+T C R   Mask to show Field instance without attributes or reserved bits
+
+@publishedAll
+*/
+#define KCDMaskShowField            0x7fffff00
+
+
+/**
+T C R   Mask for Central Repository to find a single field
+
+@internalComponent
+*/
+#define KCDMaskFindSingleField		0x7FFFFFFE
+
+/**
+T x R   Mask to show Record Type and Record Id without column type, attributes or reserved bits
+
+@publishedAll
+*/
+#define KCDMaskShowRecordTypeAndId  (KCDMaskShowRecordType | KCDMaskShowRecordId)
+
+/**
+x C R   Mask to show Column Type and Record Id without Record type, attributes or reserved bits
+
+@publishedAll
+*/
+#define KCDMaskShowColumnTypeAndRecordId  (KCDMaskShowFieldType |  KCDMaskShowRecordId)
+
+
+/**
+Mask to show Attributes
+
+@publishedAll
+*/
+#define KCDMaskShowAttributes       0x000000f0
+
+
+/**
+Mask for all attribute settings that apply to read and write operations
+see TCDAttributeFlags
+
+  ECDNoWriteButDelete = 0x0000010                             
+  ECDHidden           = 0x0000020
+  ECDPrivate          = 0x0000040
+  ECDProtectedWrite   = 0x0000080
+
+@publishedPartner
+@released
+*/
+#define KCDMaskShowReadWriteAttributes  (ECDNoWriteButDelete |ECDHidden | ECDPrivate | ECDProtectedWrite)
+
+/**
+Mask for all attribute settings that apply to read operations
+see TCDAttributeFlags
+                          
+  ECDHidden           = 0x0000020
+  ECDPrivate          = 0x0000040
+  
+@publishedPartner
+@released  
+*/
+#define KCDMaskShowReadAttributes       (ECDHidden| ECDPrivate)     
+
+/**
+Mask to use to show attributes and reserved bits
+
+@publishedAll
+*/
+#define KCDMaskShowAttrAndRes       0x000000ff
+
+
+/**
+Id for the Initial record in a record set
+
+@publishedAll
+*/
+#define KCDInitialRecordId			0x00000100
+
+
+/**
+Id for the Initial table in the database
+
+@publishedAll
+*/
+#define KCDInitialTableId			0x00800000
+
+
+/**
+Id for the Initial User defined table in the database
+clients have 64 table ids available to them
+
+@publishedAll
+*/
+#define KCDInitialUDefRecordType   0x5F800000
+
+
+/**
+Id for the Last User defined table in the database.
+
+@publishedAll
+*/
+#define KCDLastUDefRecordType      0x7F800000
+
+
+/**
+Id for the Initial column in a record set
+
+@publishedAll
+*/
+#define KCDInitialColumnId			0x00010000
+
+
+/**
+T C 0   location for default field values
+
+@publishedAll
+*/
+#define KCDDefaultRecord            0x00000000
+
+
+/**
+Combine with table id and Column id to give the location of column type info
+
+@publishedAll
+*/
+#define KCDColumnTypeInfo           0x0000ff00
+
+/**
+Combine with table id to give the location of table type info
+
+@publishedPartner
+@released
+*/
+#define KCDTableTypeInfo            0x007fff00
+
+/*
+Combine with table id to give location of record type info
+*/
+//#define KCDRecordTypeInfo			0x007f0000
+
+
+/**
+Use to request allocation of a new table id.
+Should only be called when creating a new user-defined table
+
+@publishedPartner
+@released
+*/
+#define KCDNewTableRequest          0x007fff00
+
+
+/**
+Combine with table id to give request for a new column in a table.
+The table must already exist.  New columns should only normally be 
+requested when creating a new user-defined table
+
+@publishedPartner
+@released
+*/
+#define KCDNewColumnRequest			0x0000ff01
+
+
+
+/**
+Combine with table id to give request for a new record in a table.
+The table must already exist.
+
+@publishedAll
+*/
+#define KCDNewRecordRequest			0x807f0001
+
+
+/**
+Combined with CMDBField, it finds the TableId given the table name
+
+@publishedAll
+*/
+#define KCDMaskGenericTableName			KCDNewTableRequest
+
+
+
+/**
+Maximum number of tables that can be created in one repository
+
+@publishedAll
+*/
+#define KCDMaxTables                254
+
+
+/**
+Maximum number of User defined tables that can be created in one repository
+
+@publishedAll
+*/
+#define KCDMaxUserDefTables         64
+
+
+/**
+Maximum number of columns that can be created in one table
+
+@publishedAll
+*/
+#define KCDMaxColumns               126  
+
+
+/**
+Maximum number of records that can be stored in one table
+
+@publishedAll
+*/
+#define KCDMaxRecords               254
+
+
+/**
+Maximum number of characters in a field name
+
+@publishedAll
+*/
+#define KCDMaxFieldNameLength        64
+
+
+
+/**
+Flag to indicate change in field
+Not for use in database.  Just with fields
+
+@internalComponent
+*/
+#define KCDChangedFlag      0x00000001
+
+/**
+@publishedPartner
+@released
+*/
+#define KCDMaxRecordId     0x0000ff00
+/**
+@publishedPartner
+@released
+*/
+#define KCDMaxColumnId     0x007f0000
+/**
+@publishedPartner
+@released
+*/
+#define KCDMaxTableId      0x7f800000
+
+
+
+/*
+Mask to show only basic type info, 
+Masks out all info on links
+@internalComponent
+*/
+#define KCDShowBasicTypeInfo  0x000000ff
+/**
+Typedefs for convenience in meta data definitions
+@internalComponent
+*/
+using namespace Meta;
+
+template <class TYPE> class TMDBVisitor;
+class TMDBRecordLinkVisitor;
+class TMDBRecordSetVisitor;
+class TMDBGenericRecordVisitor;
+class CMDBElement;
+
+/*
+Visitors for field values
+*/
+
+/**
+Typedefs for convenience in meta data definitions
+@internalComponent
+*/
+ typedef TMDBVisitor<TInt>                           TMDBNum;
+
+/**
+Typedefs for convenience in meta data definitions
+@internalComponent
+*/	
+ typedef TMDBVisitor<TInt>                           TMDBBool;
+ 
+/**
+Typedefs for convenience in meta data definitions
+@internalComponent
+*/	
+ typedef TMDBVisitor<TDesC>                          TMDBDes;	
+ 
+/**
+Typedefs for convenience in meta data definitions
+@internalComponent
+*/
+ typedef TMDBVisitor<TDesC8>                         TMDBDes8;	
+
+/*
+Visitors for containers
+*/
+
+/**
+Typedefs for convenience in meta data definitions
+@internalComponent
+*/
+typedef TMDBRecordLinkVisitor						TMDBLink;	
+
+/**
+Typedefs for convenience in meta data definitions
+@internalComponent
+*/		
+typedef TMDBRecordSetVisitor                        TMDBRecordSet;
+
+/**
+Typedefs for convenience in meta data definitions
+@internalComponent
+*/		
+typedef TMDBGenericRecordVisitor                    TMDBGenRecord;		
+
+/** UIDs for CommDB event notification */
+/**
+@publishedPartner
+@released
+*/
+const TUid KUidCommDbNotificationEvent = {0x1020762E};
+/**
+@publishedPartner
+@released
+*/
+const TUid KUidCommsDatStatusEvent = {KUidSystemCategoryValue};
+/**
+@publishedPartner
+@released
+*/
+const TInt KCommsDatStatusEventCommitSeq = 0x1020762F;
+
+/**
+Metadatabase container type ids
+
+@internalComponent
+*/
+#define KCDTIdMDBElement            123
+
+/**
+Metadatabase container type ids
+
+@internalComponent
+*/
+#define KCDTIdMDBNumFieldBase       223
+
+/**
+Metadatabase container type ids
+
+@internalComponent
+*/
+#define KCDTIdMDBTextFieldBase      224
+
+/**
+Metadatabase container type ids
+
+@internalComponent
+*/
+#define KCDTIdMDBBinFieldBase       225
+
+/**
+Metadatabase container type ids
+
+@internalComponent
+*/
+#define KCDTIdMDBRecordLinkBase     323
+
+/**
+Metadatabase container type ids
+
+@internalComponent
+*/
+#define KCDTIdMDBRecordSetBase      523
+
+/**
+Metadatabase container type ids
+
+@internalComponent
+*/
+#define KCDTIdMDBGenericRecord      585
+
+
+/**
+Macro for interaction with netmeta
+@publishedAll
+*/
+#define X_REGISTER_ATTRIBUTE( thisMetaClass, var, metaType ) \
+ { _FOFF( thisMetaClass, var ), Meta::metaType##VisitorFactoryL },
+
+
+#define EXP_DATA_VTABLE \
+ IMPORT_C virtual Meta::SVDataTableEntry const* GetVDataTable() const;	\
+ IMPORT_C virtual TUint8* GetAttribPtr(const TInt aOffset) const;	\
+ IMPORT_C static Meta::SVDataTableEntry const* GetVDataTableStatic(); \
+ static const Meta::SVDataTableEntry iVDataTable[];
+
+
+/**
+Macros used to implement virtual functions from MMetaData interface and construct the v data table
+@publishedAll
+*/
+#define EXP_START_ATTRIBUTE_TABLE( thisMetaClass, uid, typeId ) \
+ EXPORT_C Meta::SVDataTableEntry const* thisMetaClass::GetVDataTable() const { return &iVDataTable[0]; };	\
+ EXPORT_C TUint8* thisMetaClass::GetAttribPtr(const TInt aOffset) const { return (TUint8*)this + aOffset; };	\
+ EXPORT_C Meta::SVDataTableEntry const* thisMetaClass::GetVDataTableStatic() { return &iVDataTable[0]; }; \
+ const Meta::SVDataTableEntry thisMetaClass::iVDataTable[] = { \
+ { uid, reinterpret_cast<Meta::TMetaTypeNewL>(typeId) },
+
+
+#define END_ATTRIBUTE_TABLE_BASE_N( baseMetaClass, baseId, entry ) \
+ { (TInt)((TAny*)(baseMetaClass::GetVDataTableStatic() + entry)), NULL }};
+
+
+} //end namespace CommsDat
+#endif