diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/commsdat.h --- 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 +#include + + +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 TMDBVisitor; +class TMDBRecordLinkVisitor; +class TMDBRecordSetVisitor; +class TMDBGenericRecordVisitor; +class CMDBElement; + +/* +Visitors for field values +*/ + +/** +Typedefs for convenience in meta data definitions +@internalComponent +*/ + typedef TMDBVisitor TMDBNum; + +/** +Typedefs for convenience in meta data definitions +@internalComponent +*/ + typedef TMDBVisitor TMDBBool; + +/** +Typedefs for convenience in meta data definitions +@internalComponent +*/ + typedef TMDBVisitor TMDBDes; + +/** +Typedefs for convenience in meta data definitions +@internalComponent +*/ + typedef TMDBVisitor 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(typeId) }, + + +#define END_ATTRIBUTE_TABLE_BASE_N( baseMetaClass, baseId, entry ) \ + { (TInt)((TAny*)(baseMetaClass::GetVDataTableStatic() + entry)), NULL }}; + + +} //end namespace CommsDat +#endif