diff -r e1b950c65cb4 -r 837f303aceeb epoc32/include/e32cmn.h --- a/epoc32/include/e32cmn.h Wed Mar 31 12:27:01 2010 +0100 +++ b/epoc32/include/e32cmn.h Wed Mar 31 12:33:34 2010 +0100 @@ -1,9 +1,9 @@ // Copyright (c) 1994-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 +// under the terms of the License "Eclipse Public License v1.0" // which accompanies this distribution, and is available -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +// at the URL "http://www.eclipse.org/legal/epl-v10.html". // // Initial Contributors: // Nokia Corporation - initial contribution. @@ -1718,22 +1718,6 @@ typedef TBuf TName; - - -/** -@internalTechnology -*/ -typedef TBuf TKName; - - -/** -@internalTechnology -*/ -typedef TBuf TInfoName; - - - - /** @publishedAll @released @@ -1791,12 +1775,6 @@ -/** -@internalComponent -*/ -typedef TBuf TDeviceInfo; - - /** @publishedAll @@ -1815,11 +1793,6 @@ -typedef TBuf TPassword; - - - - /** @publishedAll @released @@ -2182,17 +2155,75 @@ TInt iY; }; + + + /** -@internalTechnology -@prototype For now, only intended to be used by TRwEvent and the Windows Server +@publishedAll +@prototype Stores a three-dimensional point in Cartesian or polar co-ordinates. - Its data members (iX, iY and iZ) are public and can be manipulated directly. + */ class TPoint3D { public: +#ifndef __KERNEL_MODE__ + enum TUninitialized { EUninitialized }; + + /** + TUninitialized Constructor + */ + TPoint3D(TUninitialized) {} + /** + Constructs default TPoint3D, initialising its iX , iY and iZ members to zero. + */ + inline TPoint3D(); + /** + Constructs TPoint3D with the specified x,y and z co-ordinates. + */ + inline TPoint3D(TInt aX,TInt aY,TInt aZ); + /** + Copy Construct from TPoint , initialises Z co-ordinate to Zero + */ + inline TPoint3D(const TPoint& aPoint); + + IMPORT_C TBool operator==(const TPoint3D& aPoint3D) const; + IMPORT_C TBool operator!=(const TPoint3D& aPoint3D) const; + + IMPORT_C TPoint3D& operator-=(const TPoint3D& aPoint3D); + IMPORT_C TPoint3D& operator-=(const TPoint& aPoint); + + IMPORT_C TPoint3D& operator+=(const TPoint3D& aPoint3D); + IMPORT_C TPoint3D& operator+=(const TPoint& aPoint); + + IMPORT_C TPoint3D operator-(const TPoint3D& aPoint3D) const; + IMPORT_C TPoint3D operator-(const TPoint& aPoint) const; + + IMPORT_C TPoint3D operator+(const TPoint3D& aPoint3D) const; + IMPORT_C TPoint3D operator+(const TPoint& aPoint) const; + /** + Unary minus operator. The operator returns the negation of this Point3D + */ + IMPORT_C TPoint3D operator-() const; + + /** + Set Method to set the xyz co-ordinates of TPoint3D + */ + IMPORT_C void SetXYZ(TInt aX,TInt aY,TInt aZ); + + /** + TPoint3D from TPoint, sets the Z co-ordinate to Zero + */ + IMPORT_C void SetPoint(const TPoint& aPoint); + + /** + Returns TPoint from TPoint3D + */ + IMPORT_C TPoint AsPoint() const; +#endif +public: /** The x co-ordinate. */ @@ -2207,6 +2238,8 @@ TInt iZ; }; + + /** @internalTechnology @prototype For now, only intended to be used by TRwEvent and the Windows Server @@ -2363,9 +2396,12 @@ { public: /** - @internalComponent + @publishedAll + @released + + Read/Write attributes for the handle. */ - enum + enum TAttributes { EReadAccess=0x1, EWriteAccess=0x2, @@ -2466,6 +2502,66 @@ @publishedAll @released +A read-write lock. + +This is a lock for co-ordinating readers and writers to shared resources. +It is designed to allow multiple concurrent readers. +It is not a kernel side object and so does not inherit from RHandleBase. +*/ +class RReadWriteLock + { +public: + enum TReadWriteLockPriority + { + /** Pending writers always get the lock before pending readers */ + EWriterPriority, + /** Lock is given alternately to pending readers and writers */ + EAlternatePriority, + /** Pending readers always get the lock before pending writers - beware writer starvation! */ + EReaderPriority, + }; + enum TReadWriteLockClientCategoryLimit + { + /** Maximum number of clients in each category: read locked, read lock pending, write lock pending */ + EReadWriteLockClientCategoryLimit = KMaxTUint16 + }; + +public: + inline RReadWriteLock(); + IMPORT_C TInt CreateLocal(TReadWriteLockPriority aPriority = EWriterPriority); + IMPORT_C void Close(); + + IMPORT_C void ReadLock(); + IMPORT_C void WriteLock(); + IMPORT_C TBool TryReadLock(); + IMPORT_C TBool TryWriteLock(); + IMPORT_C TBool TryUpgradeReadLock(); + IMPORT_C void DowngradeWriteLock(); + IMPORT_C void Unlock(); + +private: + RReadWriteLock(const RReadWriteLock& aLock); + RReadWriteLock& operator=(const RReadWriteLock& aLock); + + TInt UnlockWriter(); + TInt UnlockAlternate(); + TInt UnlockReader(); + +private: + volatile TUint64 iValues; // Bits 0-15: readers; bit 16: writer; bits 32-47: readersPending; bits 48-63: writersPending + TReadWriteLockPriority iPriority; + RSemaphore iReaderSem; + RSemaphore iWriterSem; + TUint32 iSpare[4]; // Reserved for future development + }; + + + + +/** +@publishedAll +@released + The user-side handle to a logical channel. The class provides functions that are used to open a channel @@ -2663,10 +2759,13 @@ }; - enum TFlags {ESingleThreaded=1, EFixedSize=2, ETraceAllocs=4}; + enum TFlags {ESingleThreaded=1, EFixedSize=2, ETraceAllocs=4, EMonitorMemory=8,}; struct SCheckInfo {TBool iAll; TInt iCount; const TDesC8* iFileName; TInt iLineNum;}; - struct SRAllocatorBurstFail {TInt iBurst; TInt iRate; TInt iUnused[2];}; /**< @internalComponent*/ +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS + struct SRAllocatorBurstFail {TInt iBurst; TInt iRate; TInt iUnused[2];}; +#endif enum {EMaxHandles=32}; + public: inline RAllocator(); #ifndef __KERNEL_MODE__ @@ -2767,25 +2866,22 @@ */ TInt allocCount; }; - - /** - @internalComponent - */ - struct _s_align {char c; double d;}; - - + /** @internalComponent */ struct SHeapCellInfo { RHeap* iHeap; TInt iTotalAlloc; TInt iTotalAllocSize; TInt iTotalFree; TInt iLevelAlloc; SDebugCell* iStranded; }; - - /** - The default cell alignment. - */ + /** + @internalComponent + */ + struct _s_align {char c; double d;}; + + /** + The default cell alignment. + */ enum {ECellAlignment = sizeof(_s_align)-sizeof(double)}; - /** Size of a free cell header. */ @@ -2828,11 +2924,16 @@ @internalComponent */ enum TDefaultShrinkRatios {EShrinkRatio1=256, EShrinkRatioDflt=512}; - - /** + +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS + /** @internalComponent */ +#else +private: +#endif typedef void (*TWalkFunc)(TAny*, TCellType, TAny*, TInt); + public: UIMPORT_C virtual TAny* Alloc(TInt aSize); UIMPORT_C virtual void Free(TAny* aPtr); @@ -2968,7 +3069,8 @@ inline void ClientL(RThread& aClient, TOwnerType aOwnerType=EOwnerProcess) const; IMPORT_C TUint ClientProcessFlags() const; IMPORT_C const TRequestStatus* ClientStatus() const; - + IMPORT_C TBool ClientIsRealtime() const; + /** Return the Secure ID of the process which sent this message. @@ -2986,7 +3088,7 @@ @code RMessagePtr2& message; static _LIT_SECURITY_POLICY_S0(mySidPolicy, KRequiredSecureId); - TInt error = mySidPolicy().CheckPolicy(message); + TBool pass = mySidPolicy().CheckPolicy(message); @endcode This has the benefit that the TSecurityPolicy::CheckPolicy methods are @@ -3021,7 +3123,7 @@ @code RMessagePtr2& message; static _LIT_SECURITY_POLICY_V0(myVidPolicy, KRequiredVendorId); - TInt error = myVidPolicy().CheckPolicy(message); + TBool pass = myVidPolicy().CheckPolicy(message); @endcode This has the benefit that the TSecurityPolicy::CheckPolicy methods are @@ -3299,32 +3401,6 @@ }; -/** Default value to clear all data to committed to a chunk to. -@see TChunkCreateInfo::SetClearByte() -@see RChunk::Create() -@internalComponent -*/ -const TUint8 KChunkClearByteDefault = 0x3; - -/** -Values that specify the attributes of a chunk to be created. - -@see RChunk::Create() -@internalComponent -*/ -enum TChunkCreateAttributes - { - /** Force local chunk to be named. Internal as only required for - thread heap chunks, all other local chunks should be nameless. - */ - EChunkAttLocalNamed = 0x400, - - EChunkAttMask = EChunkAttLocalNamed, - }; - -/**@internalComponent */ -const TUint32 KEmulatorImageFlagAllowDllData = 0x01; - /** Maximum size of capability set @internalTechnology @@ -3337,6 +3413,7 @@ */ const TInt KMaxSecurityPolicySize = KCapabilitySetMaxSize + 3*sizeof(TUint32); + /** Class representing an arbitrary set of capabilities. This class can only contain capabilities supported by the current OS version. @@ -3371,6 +3448,7 @@ @internalComponent */ TBool NotEmpty() const; + private: TUint32 iCaps[KCapabilitySetMaxSize / sizeof(TUint32)]; }; @@ -3453,7 +3531,10 @@ { public: inline TSecurityInfo(); -#ifndef __KERNEL_MODE__ +#ifdef __KERNEL_MODE__ + IMPORT_C TSecurityInfo(DProcess* aProcess); + IMPORT_C TSecurityInfo(DThread* aThread); +#else IMPORT_C TSecurityInfo(RProcess aProcess); IMPORT_C TSecurityInfo(RThread aThread); IMPORT_C TSecurityInfo(RMessagePtr2 aMesPtr); @@ -3632,7 +3713,7 @@ ETypeV3=5, /**< Vendor ID and up to 3 capabilities*/ /** The number of possible TSecurityPolicy types - This is intended of internal Symbian use only. + This is intended for internal Symbian use only. @internalTechnology */ ETypeLimit @@ -4744,12 +4825,10 @@ #endif //__KERNEL_MODE__ private: - /** @internalTechnology */ UIMPORT_C static TInt EmitDiagnostic(TPlatSecDiagnostic& aDiagnostic, const char* aContextText); #else //__REMOVE_PLATSEC_DIAGNOSTICS__ #ifndef __KERNEL_MODE__ private: - /** @internalTechnology */ IMPORT_C static TInt EmitDiagnostic(TPlatSecDiagnostic& aDiagnostic, const char* aContextText); #endif // !__KERNEL_MODE__ #endif // !__REMOVE_PLATSEC_DIAGNOSTICS__ @@ -4760,22 +4839,8 @@ }; - -/** -@internalTechnology - */ -struct TEmulatorImageHeader - { - TUid iUids[KMaxCheckedUid]; - TProcessPriority iPriority; - SSecurityInfo iS; - TUint32 iSpare1; - TUint32 iSpare2; - TUint32 iModuleVersion; - TUint32 iFlags; - }; - - +#define KMaxSerialNumLength 64 +typedef TBuf8 TMediaSerialNumber; /** @@ -4974,9 +5039,12 @@ class TIdentityRelation { public: + inline TIdentityRelation(); inline TIdentityRelation( TBool (*anIdentity)(const T&, const T&) ); inline operator TGeneralIdentityRelation() const; private: + inline static TBool EqualityOperatorCompare(const T& aLeft, const T& aRight); +private: TGeneralIdentityRelation iIdentity; }; @@ -6145,6 +6213,24 @@ #endif //__LEAVE_EQUALS_THROW__ +/* The macro __SYMBIAN_STDCPP_SUPPORT__ is defined when building a StdC++ target. + * In this case, operator new and operator delete below should not be declared + * to avoid clashing with StdC++ declarations. + */ + +#ifndef __SYMBIAN_STDCPP_SUPPORT__ + +#ifndef __OPERATOR_NEW_DECLARED__ + +/* Some operator new and operator delete overloads may be declared in compiler + * pre-include files. + * + * __OPERATOR_NEW_DECLARED__ is #defined if they are, so that we can avoid + * re-declaring them here. + */ + +#define __OPERATOR_NEW_DECLARED__ + /** @publishedAll @released @@ -6163,7 +6249,7 @@ */ GLREF_C void operator delete(TAny* aPtr) __NO_THROW; -#ifndef __PLACEMENT_VEC_NEW_INLINE +#ifndef __OMIT_VEC_OPERATOR_NEW_DECL__ /** @publishedAll @released @@ -6175,7 +6261,11 @@ @released */ GLREF_C void operator delete[](TAny* aPtr) __NO_THROW; -#endif +#endif // !__OMIT_VEC_OPERATOR_NEW_DECL__ + +#endif // !__OPERATOR_NEW_DECLARED__ + +#endif // !__SYMBIAN_STDCPP_SUPPORT__ /** @publishedAll @@ -6183,15 +6273,6 @@ */ inline TAny* operator new(TUint aSize, TAny* aBase) __NO_THROW; -#ifndef __PLACEMENT_VEC_NEW_INLINE -/** -@publishedAll -@released -*/ -inline TAny* operator new[](TUint aSize, TAny* aBase) __NO_THROW; - -#endif // !__PLACEMENT_VEC_NEW_INLINE - /** @publishedAll @released @@ -6203,6 +6284,12 @@ @publishedAll @released */ +inline TAny* operator new[](TUint aSize, TAny* aBase) __NO_THROW; + +/** +@publishedAll +@released +*/ inline void operator delete[](TAny* aPtr, TAny* aBase) __NO_THROW; #endif // !__PLACEMENT_VEC_NEW_INLINE @@ -6280,12 +6367,17 @@ /** @internalComponent - - Bit width of type information. */ - enum { - KBitsPerType=3 /** Number of bits of type information used for each of the 4 arguments. */ - }; + enum + { + KBitsPerType = 3, /**< Number of bits of type information used for each of the 4 arguments.*/ + KPinArgShift = KBitsPerType*KMaxMessageArguments, /**< Bit number of the start of the pin flags. */ + KPinArg0 = 1<<(KPinArgShift+0), /**< Set to pin argument at index 0.*/ + KPinArg1 = 1<<(KPinArgShift+1), /**< Set to pin argument at index 1.*/ + KPinArg2 = 1<<(KPinArgShift+2), /**< Set to pin argument at index 2.*/ + KPinArg3 = 1<<(KPinArgShift+3), /**< Set to pin argument at index 3.*/ + KPinMask = 0xf< defines the following guard macro for EDG and CW, VC++, GCC respectively. // The guard below is ugly. It will surely come back and bite us unless we resolve the whole issue of standard headers -// when we move to supporting Standard C++. -#if !defined(_EXCEPTION) && !defined(_EXCEPTION_) && !defined(__EXCEPTION__) +// when we move to supporting Standard C++. + +// The macro __SYMBIAN_STDCPP_SUPPORT__ is defined when building a StdC++ target. +// In this case, we include the StdC++ specification rather than declaring uncaught_exception. + +#ifdef __SYMBIAN_STDCPP_SUPPORT__ + #include +#elif !defined(_EXCEPTION) && !defined(_EXCEPTION_) && !defined(__EXCEPTION__) // Declare standard C++ functions relating to exceptions here namespace std { - bool uncaught_exception(void); +#if defined(__VC32__) || defined(__CW32__) + bool uncaught_exception(); +#else + IMPORT_C bool uncaught_exception(); +#endif void terminate(void); void unexpected(void); typedef void (*terminate_handler)(); @@ -6668,6 +6772,28 @@ #endif //__X86__ #endif //__WINS__ +/** +@internalTechnology + */ +struct TEmulatorImageHeader + { + TUid iUids[KMaxCheckedUid]; + TProcessPriority iPriority; + SSecurityInfo iS; + TUint32 iSpare1; + TUint32 iSpare2; + TUint32 iModuleVersion; + TUint32 iFlags; + }; + +// forward declaration of shareable data buffers pool infomation +class TShPoolInfo; + #include +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS +#include +#endif + #endif //__E32CMN_H__ +