--- 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