commsfwtools/preparedefaultcommsdatabase/inc/CommsDat.h
changeset 0 dfb7c4ff071f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwtools/preparedefaultcommsdatabase/inc/CommsDat.h	Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,459 @@
+// 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 "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:
+// 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 CommsDat
+{
+
+/**
+Use this constant for Debug panic calls
+
+@publishedAll
+@released
+*/
+_LIT(KCommsDatName,"CommsDat");
+
+/**
+Use this constant for Debug panic calls
+
+@publishedAll
+@released
+*/
+enum
+	{
+	ECommitBeforeOpenTransaction = 1,
+	ERollBackBeforeOpenTransaction = 2,
+	ESessionClosed = 3,
+	ENotifierNotCreated = 4,
+    EWrongAPPrioritySelPolRecord = 5,
+    EWrongIAPServiceType = 6,
+    EInvalidIAP = 7
+	};
+	
+using namespace Meta;
+
+//
+// VERSION INFO
+//
+/* Please note:
+ * ------------ 
+ * Concrete schema version should be used in the client applicaiton (curently available
+ * KCDVersion1_1 or KCDVersion1_2). 
+ * 
+ * Until the 9.5 release there was only one schema version, KCDVersion1_1, which was 
+ * available. From the 9.5 relase there is a possibility to use other schema version,
+ * KCDVersion1_2. Important that it's still possible to use the KCVersion1_1 
+ * constant, and use the deprecated records/tables, - CommsDat will invoke it's 
+ * mapping functionality in this case to be backward compatible. 
+ * 
+ * For backward compatibility reason the KCDLatestVersion and KCDCurrentVersion 
+ * constants are mapped to the KCDVersion1_1 constant. These constants are 
+ * deprecated.
+ * 
+ * ! PLEASE USE EXPLICIT SCHEMA VERSION WHEN CREATING A COMMSDAT SESSION OBJECT !
+ */
+
+/**
+Versions of the dataset in use
+
+Initial Version 
+@publishedAll
+@released
+*/
+
+#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
+
+@publishedAll
+@released
+*/
+#define KCDVersion1_2               TVersion(1,2,1)
+#endif
+
+/**
+For BC reasons this constant maps to the KCDVersion1_1 dataschema version.
+
+@publishedAll
+@deprecated
+*/
+#define KCDLatestVersion            KCDVersion1_1
+
+/**
+For BC reasons this constant maps to the KCDVersion1_1 dataschema version.
+
+@publishedAll
+@deprecated
+*/
+#define KCDCurrentVersion           KCDVersion1_1
+
+
+//
+//  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
+@released
+*/
+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;
+
+//
+// Masks for Element Type info
+//
+
+
+/**
+Mask to use to hide attribute reserved bits
+
+@publishedAll
+@released
+*/
+#define KCDMaskHideAttrAndRes       0xffffff00
+
+
+/**
+Mask to use to show reserved bits
+
+@publishedAll
+@released
+*/
+#define KCDMaskShowRes              0x8000000f
+
+
+/**
+Mask to use to hide reserved bits
+
+@publishedAll
+@released
+*/
+#define KCDMaskHideRes              0x7ffffff0
+
+
+/**
+T x x   Mask to show Table Type info
+
+@publishedAll
+@released
+*/
+#define KCDMaskShowRecordType       0x7f800000
+
+
+/**
+x C x   Mask to show Column Type 
+
+@publishedAll
+@released
+*/
+#define KCDMaskShowFieldType        0x007f0000
+
+
+/**
+T C x   Mask to show Table and Column Type 
+
+@publishedAll
+@released
+*/
+#define KCDMaskShowType             0x7fff0000
+
+
+/**
+T x R   Mask to show Record id
+
+@publishedAll - don't use this.  Replace with KCDMaskShowRecordId
+@deprecated
+*/
+#define KCDMaskShowInstance         0x0000ff00
+
+
+/**
+T x R   Mask to show Record id
+Use in place of KCDMaskShowInstance
+@publishedAll
+@released
+*/
+#define KCDMaskShowRecordId         0x0000ff00
+
+
+/**
+T C R   Mask to show Field instance without attributes or reserved bits
+
+@publishedAll
+@released
+*/
+#define KCDMaskShowField            0x7fffff00
+
+
+/**
+T x R   Mask to show Record Type and Record Id without column type, attributes or reserved bits
+
+@publishedAll
+@released
+*/
+#define KCDMaskShowRecordTypeAndId  (KCDMaskShowRecordType | KCDMaskShowRecordId)
+
+/**
+x C R   Mask to show Column Type and Record Id without Record type, attributes or reserved bits
+
+@publishedAll
+@released
+*/
+#define KCDMaskShowColumnTypeAndRecordId  (KCDMaskShowFieldType |  KCDMaskShowRecordId)
+
+
+/**
+Mask to show Attributes
+
+@publishedAll
+@released
+*/
+#define KCDMaskShowAttributes       0x000000f0
+
+/**
+Mask to use to show attributes and reserved bits
+
+@publishedAll
+@released
+*/
+#define KCDMaskShowAttrAndRes       0x000000ff
+
+
+/**
+Id for the Initial record in a record set
+
+@publishedAll
+@released
+*/
+#define KCDInitialRecordId			0x00000100
+
+
+/**
+Id for the Initial table in the database
+
+@publishedAll
+@released
+*/
+#define KCDInitialTableId			0x00800000
+
+
+/**
+Id for the Initial User defined table in the database
+clients have 64 table ids available to them
+
+@publishedAll
+@released
+*/
+#define KCDInitialUDefRecordType   0x5F800000
+
+
+/**
+Id for the Last User defined table in the database.
+
+@publishedAll
+@released
+*/
+#define KCDLastUDefRecordType      0x7F800000
+
+
+/**
+Id for the Initial column in a record set
+
+@publishedAll
+@released
+*/
+#define KCDInitialColumnId			0x00010000
+
+
+/**
+T C 0   location for default field values
+
+@publishedAll
+@released
+*/
+#define KCDDefaultRecord            0x00000000
+
+
+/**
+Combine with table id and Column id to give the location of column type info
+
+@publishedAll
+@released
+*/
+#define KCDColumnTypeInfo           0x0000ff00
+
+
+
+/**
+Combine with table id to give request for a new record in a table.
+The table must already exist.
+
+@publishedAll
+@released
+*/
+#define KCDNewRecordRequest			0x807f0001
+
+
+/**
+Combined with CMDBField, it finds the TableId given the table name
+
+@publishedAll
+@released
+*/
+#define KCDMaskGenericTableName			0x007fff00
+
+
+
+/**
+Maximum number of tables that can be created in one repository
+
+@publishedAll
+@released
+*/
+#define KCDMaxTables                254
+
+
+/**
+Maximum number of User defined tables that can be created in one repository
+
+@publishedAll
+@released
+*/
+#define KCDMaxUserDefTables         64
+
+
+/**
+Maximum number of columns that can be created in one table
+
+@publishedAll
+@released
+*/
+#define KCDMaxColumns               126  
+
+
+/**
+Maximum number of records that can be stored in one table
+
+@publishedAll
+@released
+*/
+#define KCDMaxRecords               254
+
+
+/**
+Maximum number of characters in a field name
+
+@publishedAll
+@released
+*/
+#define KCDMaxFieldNameLength        64
+
+
+/**
+Macro for interaction with netmeta
+@publishedAll
+@released
+*/
+#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
+@released
+*/
+#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) },
+
+
+/**
+@publishedAll
+@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;
+
+/**
+Flag to indicate change in field
+Not for use in database.  Just with fields
+
+@publishedAll
+*/
+#define KCDChangedFlag      0x00000001
+    
+} //end namespace CommsDat
+
+#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <commsdat_internal.h>
+#include <commsdat_partner.h>
+#endif
+
+#endif