1.1 --- a/epoc32/include/commsdat.h Tue Nov 24 13:55:44 2009 +0000
1.2 +++ b/epoc32/include/commsdat.h Tue Mar 16 16:12:26 2010 +0000
1.3 @@ -1,1 +1,745 @@
1.4 -commsdat.h
1.5 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
1.6 +// All rights reserved.
1.7 +// This component and the accompanying materials are made available
1.8 +// 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
1.9 +// which accompanies this distribution, and is available
1.10 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
1.11 +//
1.12 +// Initial Contributors:
1.13 +// Nokia Corporation - initial contribution.
1.14 +//
1.15 +// Contributors:
1.16 +//
1.17 +// Description:
1.18 +// Constants for use in storing comms data via CommsDat
1.19 +//
1.20 +//
1.21 +
1.22 +
1.23 +
1.24 +/**
1.25 + @file
1.26 + @publishedAll
1.27 + @released
1.28 +*/
1.29 +
1.30 +
1.31 +#if (!defined COMMSDAT_H)
1.32 +#define COMMSDAT_H
1.33 +
1.34 +#include <comms-infras/metatype.h>
1.35 +#include <e32property.h>
1.36 +
1.37 +
1.38 +namespace Meta
1.39 + {
1.40 +
1.41 + /**
1.42 + Visitor factory functions
1.43 + @internalComponent
1.44 + */
1.45 + MMetaType* TMDBNumBaseVisitorFactoryL(const TAny* mem, const TAny* data);
1.46 + /**
1.47 + @internalComponent
1.48 + */
1.49 + MMetaType* TMDBTextBaseVisitorFactoryL(const TAny* mem, const TAny* data);
1.50 + /**
1.51 + @internalComponent
1.52 + */
1.53 + MMetaType* TMDBBinBaseVisitorFactoryL(const TAny* mem, const TAny* data);
1.54 + /**
1.55 + @internalComponent
1.56 + */
1.57 + MMetaType* TMDBDeprecatedVisitorFactoryL(const TAny* mem, const TAny* data);
1.58 + /**
1.59 + @publishedPartner
1.60 + @released
1.61 + */
1.62 + IMPORT_C MMetaType* TMDBNumVisitorFactoryL(const TAny* mem, const TAny* data);
1.63 + /**
1.64 + @publishedPartner
1.65 + @released
1.66 + */
1.67 + IMPORT_C MMetaType* TMDBLinkNumVisitorFactoryL(const TAny* mem, const TAny* data);
1.68 + /**
1.69 + @publishedPartner
1.70 + @released
1.71 + */
1.72 + IMPORT_C MMetaType* TMDBTextVisitorFactoryL(const TAny* mem, const TAny* data);
1.73 + /**
1.74 + @publishedPartner
1.75 + @released
1.76 + */
1.77 + IMPORT_C MMetaType* TMDBMedTextVisitorFactoryL(const TAny* mem, const TAny* data);
1.78 + /**
1.79 + @publishedPartner
1.80 + @released
1.81 + */
1.82 + IMPORT_C MMetaType* TMDBLongTextVisitorFactoryL(const TAny* mem, const TAny* data);
1.83 + /**
1.84 + @publishedPartner
1.85 + @released
1.86 + */
1.87 + IMPORT_C MMetaType* TMDBBinVisitorFactoryL(const TAny* mem, const TAny* data);
1.88 + /**
1.89 + @publishedPartner
1.90 + @released
1.91 + */
1.92 + IMPORT_C MMetaType* TMDBLinkVisitorFactoryL(const TAny* mem, const TAny* data);
1.93 + /**
1.94 + @publishedPartner
1.95 + @released
1.96 + */
1.97 + IMPORT_C MMetaType* TMDBRecordSetVisitorFactoryL(const TAny* mem, const TAny* data);
1.98 + /**
1.99 + @publishedPartner
1.100 + @released
1.101 + */
1.102 + IMPORT_C MMetaType* TMDBGenericRecordVisitorFactoryL(const TAny* mem, const TAny* data);
1.103 +
1.104 + }
1.105 +
1.106 +
1.107 +namespace CommsDat
1.108 +{
1.109 +
1.110 +/**
1.111 +Use this constant for Debug panic calls
1.112 +
1.113 +@publishedAll
1.114 +*/
1.115 +_LIT(KCommsDatName,"CommsDat");
1.116 +
1.117 +/**
1.118 +Use this constant for Debug panic calls
1.119 +
1.120 +@publishedAll
1.121 +*/
1.122 +enum
1.123 + {
1.124 + ECommitBeforeOpenTransaction = 1,
1.125 + ERollBackBeforeOpenTransaction = 2,
1.126 + ESessionClosed = 3,
1.127 + EWrongAPPrioritySelPolRecord = 4,
1.128 + EWrongIAPServiceType = 5
1.129 + };
1.130 +
1.131 +using namespace Meta;
1.132 +
1.133 +//////////////////////////////////////////////////
1.134 +// VERSION INFO
1.135 +//
1.136 +
1.137 +/**
1.138 +Use this constant when starting a session to ask to use the latest version of the data set
1.139 +Do not use this constant if want option to keep using particular version after update
1.140 +Using this constant will require the client to keep up to date with any changes in the current dataset
1.141 +Use specific version constants to avoid changing until a deprecated version is no longer supported.
1.142 +
1.143 +@publishedAll
1.144 +*/
1.145 +#define KCDLatestVersion TVersion(0,0,0)
1.146 +
1.147 +
1.148 +/**
1.149 +Versions of the dataset in use
1.150 +NB These versions will change as data set is updated
1.151 +All versions apart from the one defined as KCDCurrentVersion are deprecated
1.152 +*/
1.153 +
1.154 +/*
1.155 +Initial Version
1.156 +@publishedAll
1.157 +*/
1.158 +
1.159 +#define KCDVersion1_1 TVersion(1,1,1)
1.160 +
1.161 +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
1.162 +/**
1.163 +Some elements in Version KCDVersion1_1 now deprecated
1.164 +These elements will be mapped if the client starts a session with KCDVersion1_1
1.165 +They will be ignored or rejected as not supported if client starts a session with
1.166 +KCDVersion1_2 or KCDLatestVersion
1.167 +
1.168 +@publishedAll
1.169 +*/
1.170 +#define KCDVersion1_2 TVersion(1,2,1)
1.171 +#endif
1.172 +/**
1.173 +The version of the dataset supported by default
1.174 +NB This version will change as data set is updated
1.175 +
1.176 +@publishedAll
1.177 +*/
1.178 +#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
1.179 +
1.180 +#define KCDCurrentVersion KCDVersion1_2
1.181 +
1.182 +#else
1.183 +
1.184 +#define KCDCurrentVersion KCDVersion1_1
1.185 +
1.186 +#endif
1.187 +
1.188 +
1.189 +
1.190 +
1.191 +////////////////////////////////////////////////////
1.192 +// Attribute Flags
1.193 +//
1.194 +
1.195 +/**
1.196 +Access control attribute flags.
1.197 +When these are SET in the mask the attribute is obeyed
1.198 +When they are CLEARED from the mask, the attribute is ignored
1.199 +By default attributes are obeyed.
1.200 +
1.201 +@publishedAll
1.202 +*/
1.203 +typedef enum
1.204 +{
1.205 + ECDNoWriteButDelete = 0x0000010, // R/W Read Only but deleteable Caller should explicitly choose to modify
1.206 + // Enforced by convention only, not with Platform Security
1.207 + ECDHidden = 0x0000020, // R/W Read-Write Hidden data Not policed - hides public utility info such as default values
1.208 + // Enforced by convention only, not with Platform Security
1.209 + ECDPrivate = 0x0000040, // R/W Read-Write Private data For sensitive user data such as passwords
1.210 + // Policed at storage server API with platsec capability
1.211 + ECDProtectedWrite = 0x0000080, // W Write-Protected data To allow data to be read only to most clients but modifiable by a few privileged clients
1.212 + // Policed at storage server API with platsec capability
1.213 +} TCDAttributeFlags;
1.214 +
1.215 +
1.216 +/////////////////////////////////////////////////////
1.217 +// Field types
1.218 +//
1.219 +/**
1.220 +@publishedPartner
1.221 +@released
1.222 +*/
1.223 +typedef enum
1.224 +{
1.225 + EText, ///< Text field - descriptor with a maximum length of 50 unicode characters.
1.226 + EDesC8, ///< Buffer of TUInt8. Maximum length is 1024 * 8.
1.227 + EUint32, ///< Unsigned 32 bit integer field.
1.228 + EInt, ///< Signed integer field
1.229 + EBool, ///< Boolean field
1.230 + EMedText, ///< Text field - descriptor with a maximum length of 256 unicode characters.
1.231 + ELongText, ///< Text field - descriptor with a maximum length of 1024 unicode characters.
1.232 + ELink ///< This field is an integer that identifies a record in another table.
1.233 +
1.234 +} TCDFieldValueTypes;
1.235 +
1.236 +/**
1.237 +@publishedPartner
1.238 +@released
1.239 +*/
1.240 +const TInt KMaxTextLength = 50; ///< Specifies the max length (characters) for short text.
1.241 +/**
1.242 +@publishedPartner
1.243 +@released
1.244 +*/
1.245 +const TInt KMaxMedTextLength = 255; ///< Specifies the max length (characters) for medium text.
1.246 +/**
1.247 +@publishedPartner
1.248 +@released
1.249 +*/
1.250 +const TInt KMaxLongTextLength = 1024; ///< Specifies the max length (characters) for long text.
1.251 +/**
1.252 +@publishedPartner
1.253 +@released
1.254 +*/
1.255 +const TInt KMaxNumLength = 1; ///< Specifies the max length for an integer and a boolean.
1.256 +
1.257 +// Length override on a normal text field
1.258 +/**
1.259 +@publishedPartner
1.260 +@released
1.261 +*/
1.262 +const TInt KShortTextLength = 32;
1.263 +
1.264 +////////////////////////////////////////////////////
1.265 +// Masks for Element Type info
1.266 +//
1.267 +
1.268 +
1.269 +/**
1.270 +Mask to use to hide attribute reserved bits
1.271 +
1.272 +@publishedAll
1.273 +*/
1.274 +#define KCDMaskHideAttrAndRes 0xffffff00
1.275 +
1.276 +
1.277 +/**
1.278 +Mask to use to show reserved bits
1.279 +
1.280 +@publishedAll
1.281 +*/
1.282 +#define KCDMaskShowRes 0x8000000f
1.283 +
1.284 +
1.285 +/**
1.286 +Mask to use to hide reserved bits
1.287 +
1.288 +@publishedAll
1.289 +*/
1.290 +#define KCDMaskHideRes 0x7ffffff0
1.291 +
1.292 +
1.293 +/**
1.294 +T x x Mask to show Table Type info
1.295 +
1.296 +@publishedAll
1.297 +*/
1.298 +#define KCDMaskShowRecordType 0x7f800000
1.299 +
1.300 +
1.301 +/**
1.302 +x C x Mask to show Column Type
1.303 +
1.304 +@publishedAll
1.305 +*/
1.306 +#define KCDMaskShowFieldType 0x007f0000
1.307 +
1.308 +
1.309 +/**
1.310 +T C x Mask to show Table and Column Type
1.311 +
1.312 +@publishedAll
1.313 +*/
1.314 +#define KCDMaskShowType 0x7fff0000
1.315 +
1.316 +
1.317 +/**
1.318 +T x R Mask to show Record id
1.319 +
1.320 +@publishedAll - don't use this. Replace with KCDMaskShowRecordId
1.321 +*/
1.322 +#define KCDMaskShowInstance 0x0000ff00
1.323 +
1.324 +
1.325 +/**
1.326 +T x R Mask to show Record id
1.327 +Use in place of KCDMaskShowInstance
1.328 +@publishedAll
1.329 +*/
1.330 +#define KCDMaskShowRecordId 0x0000ff00
1.331 +
1.332 +
1.333 +/**
1.334 +T C R Mask to show Field instance without attributes or reserved bits
1.335 +
1.336 +@publishedAll
1.337 +*/
1.338 +#define KCDMaskShowField 0x7fffff00
1.339 +
1.340 +
1.341 +/**
1.342 +T C R Mask for Central Repository to find a single field
1.343 +
1.344 +@internalComponent
1.345 +*/
1.346 +#define KCDMaskFindSingleField 0x7FFFFFFE
1.347 +
1.348 +/**
1.349 +T x R Mask to show Record Type and Record Id without column type, attributes or reserved bits
1.350 +
1.351 +@publishedAll
1.352 +*/
1.353 +#define KCDMaskShowRecordTypeAndId (KCDMaskShowRecordType | KCDMaskShowRecordId)
1.354 +
1.355 +/**
1.356 +x C R Mask to show Column Type and Record Id without Record type, attributes or reserved bits
1.357 +
1.358 +@publishedAll
1.359 +*/
1.360 +#define KCDMaskShowColumnTypeAndRecordId (KCDMaskShowFieldType | KCDMaskShowRecordId)
1.361 +
1.362 +
1.363 +/**
1.364 +Mask to show Attributes
1.365 +
1.366 +@publishedAll
1.367 +*/
1.368 +#define KCDMaskShowAttributes 0x000000f0
1.369 +
1.370 +
1.371 +/**
1.372 +Mask for all attribute settings that apply to read and write operations
1.373 +see TCDAttributeFlags
1.374 +
1.375 + ECDNoWriteButDelete = 0x0000010
1.376 + ECDHidden = 0x0000020
1.377 + ECDPrivate = 0x0000040
1.378 + ECDProtectedWrite = 0x0000080
1.379 +
1.380 +@publishedPartner
1.381 +@released
1.382 +*/
1.383 +#define KCDMaskShowReadWriteAttributes (ECDNoWriteButDelete |ECDHidden | ECDPrivate | ECDProtectedWrite)
1.384 +
1.385 +/**
1.386 +Mask for all attribute settings that apply to read operations
1.387 +see TCDAttributeFlags
1.388 +
1.389 + ECDHidden = 0x0000020
1.390 + ECDPrivate = 0x0000040
1.391 +
1.392 +@publishedPartner
1.393 +@released
1.394 +*/
1.395 +#define KCDMaskShowReadAttributes (ECDHidden| ECDPrivate)
1.396 +
1.397 +/**
1.398 +Mask to use to show attributes and reserved bits
1.399 +
1.400 +@publishedAll
1.401 +*/
1.402 +#define KCDMaskShowAttrAndRes 0x000000ff
1.403 +
1.404 +
1.405 +/**
1.406 +Id for the Initial record in a record set
1.407 +
1.408 +@publishedAll
1.409 +*/
1.410 +#define KCDInitialRecordId 0x00000100
1.411 +
1.412 +
1.413 +/**
1.414 +Id for the Initial table in the database
1.415 +
1.416 +@publishedAll
1.417 +*/
1.418 +#define KCDInitialTableId 0x00800000
1.419 +
1.420 +
1.421 +/**
1.422 +Id for the Initial User defined table in the database
1.423 +clients have 64 table ids available to them
1.424 +
1.425 +@publishedAll
1.426 +*/
1.427 +#define KCDInitialUDefRecordType 0x5F800000
1.428 +
1.429 +
1.430 +/**
1.431 +Id for the Last User defined table in the database.
1.432 +
1.433 +@publishedAll
1.434 +*/
1.435 +#define KCDLastUDefRecordType 0x7F800000
1.436 +
1.437 +
1.438 +/**
1.439 +Id for the Initial column in a record set
1.440 +
1.441 +@publishedAll
1.442 +*/
1.443 +#define KCDInitialColumnId 0x00010000
1.444 +
1.445 +
1.446 +/**
1.447 +T C 0 location for default field values
1.448 +
1.449 +@publishedAll
1.450 +*/
1.451 +#define KCDDefaultRecord 0x00000000
1.452 +
1.453 +
1.454 +/**
1.455 +Combine with table id and Column id to give the location of column type info
1.456 +
1.457 +@publishedAll
1.458 +*/
1.459 +#define KCDColumnTypeInfo 0x0000ff00
1.460 +
1.461 +/**
1.462 +Combine with table id to give the location of table type info
1.463 +
1.464 +@publishedPartner
1.465 +@released
1.466 +*/
1.467 +#define KCDTableTypeInfo 0x007fff00
1.468 +
1.469 +/*
1.470 +Combine with table id to give location of record type info
1.471 +*/
1.472 +//#define KCDRecordTypeInfo 0x007f0000
1.473 +
1.474 +
1.475 +/**
1.476 +Use to request allocation of a new table id.
1.477 +Should only be called when creating a new user-defined table
1.478 +
1.479 +@publishedPartner
1.480 +@released
1.481 +*/
1.482 +#define KCDNewTableRequest 0x007fff00
1.483 +
1.484 +
1.485 +/**
1.486 +Combine with table id to give request for a new column in a table.
1.487 +The table must already exist. New columns should only normally be
1.488 +requested when creating a new user-defined table
1.489 +
1.490 +@publishedPartner
1.491 +@released
1.492 +*/
1.493 +#define KCDNewColumnRequest 0x0000ff01
1.494 +
1.495 +
1.496 +
1.497 +/**
1.498 +Combine with table id to give request for a new record in a table.
1.499 +The table must already exist.
1.500 +
1.501 +@publishedAll
1.502 +*/
1.503 +#define KCDNewRecordRequest 0x807f0001
1.504 +
1.505 +
1.506 +/**
1.507 +Combined with CMDBField, it finds the TableId given the table name
1.508 +
1.509 +@publishedAll
1.510 +*/
1.511 +#define KCDMaskGenericTableName KCDNewTableRequest
1.512 +
1.513 +
1.514 +
1.515 +/**
1.516 +Maximum number of tables that can be created in one repository
1.517 +
1.518 +@publishedAll
1.519 +*/
1.520 +#define KCDMaxTables 254
1.521 +
1.522 +
1.523 +/**
1.524 +Maximum number of User defined tables that can be created in one repository
1.525 +
1.526 +@publishedAll
1.527 +*/
1.528 +#define KCDMaxUserDefTables 64
1.529 +
1.530 +
1.531 +/**
1.532 +Maximum number of columns that can be created in one table
1.533 +
1.534 +@publishedAll
1.535 +*/
1.536 +#define KCDMaxColumns 126
1.537 +
1.538 +
1.539 +/**
1.540 +Maximum number of records that can be stored in one table
1.541 +
1.542 +@publishedAll
1.543 +*/
1.544 +#define KCDMaxRecords 254
1.545 +
1.546 +
1.547 +/**
1.548 +Maximum number of characters in a field name
1.549 +
1.550 +@publishedAll
1.551 +*/
1.552 +#define KCDMaxFieldNameLength 64
1.553 +
1.554 +
1.555 +
1.556 +/**
1.557 +Flag to indicate change in field
1.558 +Not for use in database. Just with fields
1.559 +
1.560 +@internalComponent
1.561 +*/
1.562 +#define KCDChangedFlag 0x00000001
1.563 +
1.564 +/**
1.565 +@publishedPartner
1.566 +@released
1.567 +*/
1.568 +#define KCDMaxRecordId 0x0000ff00
1.569 +/**
1.570 +@publishedPartner
1.571 +@released
1.572 +*/
1.573 +#define KCDMaxColumnId 0x007f0000
1.574 +/**
1.575 +@publishedPartner
1.576 +@released
1.577 +*/
1.578 +#define KCDMaxTableId 0x7f800000
1.579 +
1.580 +
1.581 +
1.582 +/*
1.583 +Mask to show only basic type info,
1.584 +Masks out all info on links
1.585 +@internalComponent
1.586 +*/
1.587 +#define KCDShowBasicTypeInfo 0x000000ff
1.588 +/**
1.589 +Typedefs for convenience in meta data definitions
1.590 +@internalComponent
1.591 +*/
1.592 +using namespace Meta;
1.593 +
1.594 +template <class TYPE> class TMDBVisitor;
1.595 +class TMDBRecordLinkVisitor;
1.596 +class TMDBRecordSetVisitor;
1.597 +class TMDBGenericRecordVisitor;
1.598 +class CMDBElement;
1.599 +
1.600 +/*
1.601 +Visitors for field values
1.602 +*/
1.603 +
1.604 +/**
1.605 +Typedefs for convenience in meta data definitions
1.606 +@internalComponent
1.607 +*/
1.608 + typedef TMDBVisitor<TInt> TMDBNum;
1.609 +
1.610 +/**
1.611 +Typedefs for convenience in meta data definitions
1.612 +@internalComponent
1.613 +*/
1.614 + typedef TMDBVisitor<TInt> TMDBBool;
1.615 +
1.616 +/**
1.617 +Typedefs for convenience in meta data definitions
1.618 +@internalComponent
1.619 +*/
1.620 + typedef TMDBVisitor<TDesC> TMDBDes;
1.621 +
1.622 +/**
1.623 +Typedefs for convenience in meta data definitions
1.624 +@internalComponent
1.625 +*/
1.626 + typedef TMDBVisitor<TDesC8> TMDBDes8;
1.627 +
1.628 +/*
1.629 +Visitors for containers
1.630 +*/
1.631 +
1.632 +/**
1.633 +Typedefs for convenience in meta data definitions
1.634 +@internalComponent
1.635 +*/
1.636 +typedef TMDBRecordLinkVisitor TMDBLink;
1.637 +
1.638 +/**
1.639 +Typedefs for convenience in meta data definitions
1.640 +@internalComponent
1.641 +*/
1.642 +typedef TMDBRecordSetVisitor TMDBRecordSet;
1.643 +
1.644 +/**
1.645 +Typedefs for convenience in meta data definitions
1.646 +@internalComponent
1.647 +*/
1.648 +typedef TMDBGenericRecordVisitor TMDBGenRecord;
1.649 +
1.650 +/** UIDs for CommDB event notification */
1.651 +/**
1.652 +@publishedPartner
1.653 +@released
1.654 +*/
1.655 +const TUid KUidCommDbNotificationEvent = {0x1020762E};
1.656 +/**
1.657 +@publishedPartner
1.658 +@released
1.659 +*/
1.660 +const TUid KUidCommsDatStatusEvent = {KUidSystemCategoryValue};
1.661 +/**
1.662 +@publishedPartner
1.663 +@released
1.664 +*/
1.665 +const TInt KCommsDatStatusEventCommitSeq = 0x1020762F;
1.666 +
1.667 +/**
1.668 +Metadatabase container type ids
1.669 +
1.670 +@internalComponent
1.671 +*/
1.672 +#define KCDTIdMDBElement 123
1.673 +
1.674 +/**
1.675 +Metadatabase container type ids
1.676 +
1.677 +@internalComponent
1.678 +*/
1.679 +#define KCDTIdMDBNumFieldBase 223
1.680 +
1.681 +/**
1.682 +Metadatabase container type ids
1.683 +
1.684 +@internalComponent
1.685 +*/
1.686 +#define KCDTIdMDBTextFieldBase 224
1.687 +
1.688 +/**
1.689 +Metadatabase container type ids
1.690 +
1.691 +@internalComponent
1.692 +*/
1.693 +#define KCDTIdMDBBinFieldBase 225
1.694 +
1.695 +/**
1.696 +Metadatabase container type ids
1.697 +
1.698 +@internalComponent
1.699 +*/
1.700 +#define KCDTIdMDBRecordLinkBase 323
1.701 +
1.702 +/**
1.703 +Metadatabase container type ids
1.704 +
1.705 +@internalComponent
1.706 +*/
1.707 +#define KCDTIdMDBRecordSetBase 523
1.708 +
1.709 +/**
1.710 +Metadatabase container type ids
1.711 +
1.712 +@internalComponent
1.713 +*/
1.714 +#define KCDTIdMDBGenericRecord 585
1.715 +
1.716 +
1.717 +/**
1.718 +Macro for interaction with netmeta
1.719 +@publishedAll
1.720 +*/
1.721 +#define X_REGISTER_ATTRIBUTE( thisMetaClass, var, metaType ) \
1.722 + { _FOFF( thisMetaClass, var ), Meta::metaType##VisitorFactoryL },
1.723 +
1.724 +
1.725 +#define EXP_DATA_VTABLE \
1.726 + IMPORT_C virtual Meta::SVDataTableEntry const* GetVDataTable() const; \
1.727 + IMPORT_C virtual TUint8* GetAttribPtr(const TInt aOffset) const; \
1.728 + IMPORT_C static Meta::SVDataTableEntry const* GetVDataTableStatic(); \
1.729 + static const Meta::SVDataTableEntry iVDataTable[];
1.730 +
1.731 +
1.732 +/**
1.733 +Macros used to implement virtual functions from MMetaData interface and construct the v data table
1.734 +@publishedAll
1.735 +*/
1.736 +#define EXP_START_ATTRIBUTE_TABLE( thisMetaClass, uid, typeId ) \
1.737 + EXPORT_C Meta::SVDataTableEntry const* thisMetaClass::GetVDataTable() const { return &iVDataTable[0]; }; \
1.738 + EXPORT_C TUint8* thisMetaClass::GetAttribPtr(const TInt aOffset) const { return (TUint8*)this + aOffset; }; \
1.739 + EXPORT_C Meta::SVDataTableEntry const* thisMetaClass::GetVDataTableStatic() { return &iVDataTable[0]; }; \
1.740 + const Meta::SVDataTableEntry thisMetaClass::iVDataTable[] = { \
1.741 + { uid, reinterpret_cast<Meta::TMetaTypeNewL>(typeId) },
1.742 +
1.743 +
1.744 +#define END_ATTRIBUTE_TABLE_BASE_N( baseMetaClass, baseId, entry ) \
1.745 + { (TInt)((TAny*)(baseMetaClass::GetVDataTableStatic() + entry)), NULL }};
1.746 +
1.747 +
1.748 +} //end namespace CommsDat
1.749 +#endif