epoc32/include/e32cmn.h
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
     1.1 --- a/epoc32/include/e32cmn.h	Wed Mar 31 12:27:01 2010 +0100
     1.2 +++ b/epoc32/include/e32cmn.h	Wed Mar 31 12:33:34 2010 +0100
     1.3 @@ -1,9 +1,9 @@
     1.4  // Copyright (c) 1994-2009 Nokia Corporation and/or its subsidiary(-ies).
     1.5  // All rights reserved.
     1.6  // This component and the accompanying materials are made available
     1.7 -// 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.8 +// under the terms of the License "Eclipse Public License v1.0"
     1.9  // which accompanies this distribution, and is available
    1.10 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
    1.11 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
    1.12  //
    1.13  // Initial Contributors:
    1.14  // Nokia Corporation - initial contribution.
    1.15 @@ -1718,22 +1718,6 @@
    1.16  typedef TBuf<KMaxName> TName;
    1.17  
    1.18  
    1.19 -
    1.20 -
    1.21 -/**
    1.22 -@internalTechnology
    1.23 -*/
    1.24 -typedef TBuf<KMaxKernelName> TKName;
    1.25 -
    1.26 -
    1.27 -/**
    1.28 -@internalTechnology
    1.29 -*/
    1.30 -typedef TBuf<KMaxInfoName> TInfoName;
    1.31 -
    1.32 -
    1.33 -
    1.34 -
    1.35  /**
    1.36  @publishedAll
    1.37  @released
    1.38 @@ -1791,12 +1775,6 @@
    1.39  
    1.40  
    1.41  
    1.42 -/**
    1.43 -@internalComponent
    1.44 -*/
    1.45 -typedef TBuf<KMaxDeviceInfo> TDeviceInfo;
    1.46 -
    1.47 -
    1.48  
    1.49  /**
    1.50  @publishedAll
    1.51 @@ -1815,11 +1793,6 @@
    1.52  
    1.53  
    1.54  
    1.55 -typedef TBuf<KMaxPassword> TPassword;
    1.56 -
    1.57 -
    1.58 -
    1.59 -
    1.60  /**
    1.61  @publishedAll
    1.62  @released
    1.63 @@ -2182,17 +2155,75 @@
    1.64  	TInt iY;
    1.65  	};
    1.66  
    1.67 +
    1.68 +
    1.69 +
    1.70  /**
    1.71 -@internalTechnology
    1.72 -@prototype For now, only intended to be used by TRwEvent and the Windows Server
    1.73 +@publishedAll
    1.74 +@prototype
    1.75  
    1.76  Stores a three-dimensional point in Cartesian or polar co-ordinates.
    1.77 -
    1.78  Its data members (iX, iY and iZ) are public and can be manipulated directly.
    1.79 +
    1.80  */
    1.81  class TPoint3D
    1.82  	{
    1.83  public:
    1.84 +#ifndef __KERNEL_MODE__
    1.85 +	enum TUninitialized { EUninitialized };
    1.86 +
    1.87 +	/**
    1.88 +	TUninitialized Constructor
    1.89 +	*/
    1.90 +	TPoint3D(TUninitialized) {}
    1.91 +	/**
    1.92 +	Constructs default TPoint3D, initialising its iX , iY and iZ members to zero.
    1.93 +	*/
    1.94 +	inline TPoint3D();
    1.95 +	/**
    1.96 +	Constructs  TPoint3D with the specified x,y  and z co-ordinates.
    1.97 +	*/
    1.98 +	inline TPoint3D(TInt aX,TInt aY,TInt aZ);
    1.99 +	/** 
   1.100 +	Copy Construct from TPoint , initialises Z co-ordinate to  Zero
   1.101 +	*/
   1.102 +	inline TPoint3D(const  TPoint& aPoint);
   1.103 +
   1.104 +	IMPORT_C TBool operator==(const TPoint3D& aPoint3D) const;
   1.105 +	IMPORT_C TBool operator!=(const TPoint3D& aPoint3D) const;
   1.106 +
   1.107 +	IMPORT_C TPoint3D& operator-=(const TPoint3D& aPoint3D);
   1.108 +	IMPORT_C TPoint3D& operator-=(const TPoint& aPoint);
   1.109 +
   1.110 +	IMPORT_C TPoint3D& operator+=(const TPoint3D& aPoint3D);	
   1.111 +	IMPORT_C TPoint3D& operator+=(const TPoint& aPoint);
   1.112 +
   1.113 +	IMPORT_C TPoint3D operator-(const TPoint3D& aPoint3D) const;
   1.114 +	IMPORT_C TPoint3D operator-(const TPoint& aPoint) const;	
   1.115 +
   1.116 +	IMPORT_C TPoint3D operator+(const TPoint3D& aPoint3D) const;
   1.117 +	IMPORT_C TPoint3D operator+(const TPoint& aPoint) const;
   1.118 +	/**
   1.119 +    Unary minus operator. The operator returns the negation of this Point3D 
   1.120 +	*/
   1.121 +	IMPORT_C TPoint3D operator-() const;
   1.122 +	
   1.123 +	/**
   1.124 +	Set Method to set the xyz co-ordinates of TPoint3D
   1.125 +	*/
   1.126 +	IMPORT_C void SetXYZ(TInt aX,TInt aY,TInt aZ);
   1.127 +	
   1.128 +	/**
   1.129 +	TPoint3D from TPoint, sets the Z co-ordinate to  Zero
   1.130 +	*/
   1.131 +	IMPORT_C void SetPoint(const TPoint& aPoint);
   1.132 +
   1.133 +	/**
   1.134 +	Returns TPoint from TPoint3D
   1.135 +	*/
   1.136 +	IMPORT_C TPoint AsPoint() const;
   1.137 +#endif
   1.138 +public:
   1.139  	/**
   1.140  	The x co-ordinate.
   1.141  	*/
   1.142 @@ -2207,6 +2238,8 @@
   1.143  	TInt iZ;
   1.144  	};
   1.145  
   1.146 +
   1.147 +
   1.148  /**
   1.149  @internalTechnology
   1.150  @prototype For now, only intended to be used by TRwEvent and the Windows Server
   1.151 @@ -2363,9 +2396,12 @@
   1.152  	{
   1.153  public:
   1.154      /**
   1.155 -    @internalComponent
   1.156 +    @publishedAll
   1.157 +    @released
   1.158 +
   1.159 +	Read/Write attributes for the handle.
   1.160      */
   1.161 -    enum
   1.162 +    enum TAttributes
   1.163  		{
   1.164  		EReadAccess=0x1,
   1.165  		EWriteAccess=0x2,
   1.166 @@ -2466,6 +2502,66 @@
   1.167  @publishedAll
   1.168  @released
   1.169  
   1.170 +A read-write lock.
   1.171 +
   1.172 +This is a lock for co-ordinating readers and writers to shared resources.
   1.173 +It is designed to allow multiple concurrent readers.
   1.174 +It is not a kernel side object and so does not inherit from RHandleBase.
   1.175 +*/
   1.176 +class RReadWriteLock
   1.177 +	{
   1.178 +public:
   1.179 +	enum TReadWriteLockPriority
   1.180 +		{
   1.181 +		/** Pending writers always get the lock before pending readers */
   1.182 +		EWriterPriority,
   1.183 +		/** Lock is given alternately to pending readers and writers */
   1.184 +		EAlternatePriority,
   1.185 +		/** Pending readers always get the lock before pending writers - beware writer starvation! */
   1.186 +		EReaderPriority,
   1.187 +		};
   1.188 +	enum TReadWriteLockClientCategoryLimit
   1.189 +		{
   1.190 +		/** Maximum number of clients in each category: read locked, read lock pending, write lock pending */
   1.191 +		EReadWriteLockClientCategoryLimit = KMaxTUint16
   1.192 +		};
   1.193 +
   1.194 +public:
   1.195 +	inline RReadWriteLock();
   1.196 +	IMPORT_C TInt CreateLocal(TReadWriteLockPriority aPriority = EWriterPriority);
   1.197 +	IMPORT_C void Close();
   1.198 +
   1.199 +	IMPORT_C void ReadLock();
   1.200 +	IMPORT_C void WriteLock();
   1.201 +	IMPORT_C TBool TryReadLock();
   1.202 +	IMPORT_C TBool TryWriteLock();
   1.203 +	IMPORT_C TBool TryUpgradeReadLock();
   1.204 +	IMPORT_C void DowngradeWriteLock();
   1.205 +	IMPORT_C void Unlock();
   1.206 +
   1.207 +private:
   1.208 +	RReadWriteLock(const RReadWriteLock& aLock);
   1.209 +	RReadWriteLock& operator=(const RReadWriteLock& aLock);
   1.210 +
   1.211 +	TInt UnlockWriter();
   1.212 +	TInt UnlockAlternate();
   1.213 +	TInt UnlockReader();
   1.214 +
   1.215 +private:
   1.216 +	volatile TUint64 iValues; // Bits 0-15: readers; bit 16: writer; bits 32-47: readersPending; bits 48-63: writersPending
   1.217 +	TReadWriteLockPriority iPriority;
   1.218 +	RSemaphore iReaderSem;
   1.219 +	RSemaphore iWriterSem;
   1.220 +	TUint32 iSpare[4]; // Reserved for future development
   1.221 +	};
   1.222 +
   1.223 +
   1.224 +
   1.225 +
   1.226 +/**
   1.227 +@publishedAll
   1.228 +@released
   1.229 +
   1.230  The user-side handle to a logical channel.
   1.231  
   1.232  The class provides functions that are used to open a channel
   1.233 @@ -2663,10 +2759,13 @@
   1.234  	                  };
   1.235  	                  
   1.236  	                  
   1.237 -	enum TFlags {ESingleThreaded=1, EFixedSize=2, ETraceAllocs=4};
   1.238 +	enum TFlags {ESingleThreaded=1, EFixedSize=2, ETraceAllocs=4, EMonitorMemory=8,};
   1.239  	struct SCheckInfo {TBool iAll; TInt iCount; const TDesC8* iFileName; TInt iLineNum;};
   1.240 -	struct SRAllocatorBurstFail {TInt iBurst; TInt iRate; TInt iUnused[2];};	/**< @internalComponent*/
   1.241 +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
   1.242 +	struct SRAllocatorBurstFail {TInt iBurst; TInt iRate; TInt iUnused[2];};
   1.243 +#endif
   1.244  	enum {EMaxHandles=32};
   1.245 +
   1.246  public:
   1.247  	inline RAllocator();
   1.248  #ifndef __KERNEL_MODE__
   1.249 @@ -2767,25 +2866,22 @@
   1.250  	                  */
   1.251  	                  TInt allocCount;
   1.252  	                  };
   1.253 -	                  
   1.254 -    /**
   1.255 -    @internalComponent
   1.256 -    */
   1.257 -	struct _s_align {char c; double d;};
   1.258 -
   1.259 -	
   1.260 +
   1.261  	/**
   1.262      @internalComponent
   1.263      */
   1.264  	struct SHeapCellInfo { RHeap* iHeap; TInt iTotalAlloc;	TInt iTotalAllocSize; TInt iTotalFree; TInt iLevelAlloc; SDebugCell* iStranded; };
   1.265  
   1.266 -
   1.267 -    /** 
   1.268 -    The default cell alignment.
   1.269 -    */
   1.270 +	/**
   1.271 +	@internalComponent
   1.272 +	*/
   1.273 +	struct _s_align {char c; double d;};
   1.274 +
   1.275 +	/** 
   1.276 +	The default cell alignment.
   1.277 +	*/
   1.278  	enum {ECellAlignment = sizeof(_s_align)-sizeof(double)};
   1.279  	
   1.280 -	
   1.281  	/**
   1.282  	Size of a free cell header.
   1.283  	*/
   1.284 @@ -2828,11 +2924,16 @@
   1.285      @internalComponent
   1.286      */
   1.287      enum TDefaultShrinkRatios {EShrinkRatio1=256, EShrinkRatioDflt=512};
   1.288 -    	
   1.289 -    /**
   1.290 +
   1.291 +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
   1.292 +	/**
   1.293      @internalComponent
   1.294      */
   1.295 +#else
   1.296 +private:
   1.297 +#endif
   1.298      typedef void (*TWalkFunc)(TAny*, TCellType, TAny*, TInt);
   1.299 +
   1.300  public:
   1.301  	UIMPORT_C virtual TAny* Alloc(TInt aSize);
   1.302  	UIMPORT_C virtual void Free(TAny* aPtr);
   1.303 @@ -2968,7 +3069,8 @@
   1.304  	inline   void ClientL(RThread& aClient, TOwnerType aOwnerType=EOwnerProcess) const;
   1.305  	IMPORT_C TUint ClientProcessFlags() const;
   1.306  	IMPORT_C const TRequestStatus* ClientStatus() const;
   1.307 -
   1.308 +	IMPORT_C TBool ClientIsRealtime() const;
   1.309 +	
   1.310  	/**
   1.311  	Return the Secure ID of the process which sent this message.
   1.312  
   1.313 @@ -2986,7 +3088,7 @@
   1.314  	@code
   1.315  		RMessagePtr2& message;
   1.316  		static _LIT_SECURITY_POLICY_S0(mySidPolicy, KRequiredSecureId);
   1.317 -		TInt error = mySidPolicy().CheckPolicy(message);
   1.318 +		TBool pass = mySidPolicy().CheckPolicy(message);
   1.319  	@endcode
   1.320  
   1.321  	This has the benefit that the TSecurityPolicy::CheckPolicy methods are
   1.322 @@ -3021,7 +3123,7 @@
   1.323  	@code
   1.324  		RMessagePtr2& message;
   1.325  		static _LIT_SECURITY_POLICY_V0(myVidPolicy, KRequiredVendorId);
   1.326 -		TInt error = myVidPolicy().CheckPolicy(message);
   1.327 +		TBool pass = myVidPolicy().CheckPolicy(message);
   1.328  	@endcode
   1.329  
   1.330  	This has the benefit that the TSecurityPolicy::CheckPolicy methods are
   1.331 @@ -3299,32 +3401,6 @@
   1.332  	};
   1.333  
   1.334  
   1.335 -/** Default value to clear all data to committed to a chunk to.
   1.336 -@see TChunkCreateInfo::SetClearByte()
   1.337 -@see RChunk::Create()
   1.338 -@internalComponent
   1.339 -*/
   1.340 -const TUint8 KChunkClearByteDefault = 0x3;
   1.341 -
   1.342 -/**
   1.343 -Values that specify the attributes of a chunk to be created.
   1.344 -
   1.345 -@see RChunk::Create()
   1.346 -@internalComponent
   1.347 -*/
   1.348 -enum TChunkCreateAttributes
   1.349 -	{
   1.350 -	/**	Force local chunk to be named.  Internal as only required for
   1.351 -	thread heap chunks, all other local chunks should be nameless.
   1.352 -	*/
   1.353 -	EChunkAttLocalNamed = 0x400,
   1.354 -
   1.355 -	EChunkAttMask =	EChunkAttLocalNamed,
   1.356 -	};
   1.357 -
   1.358 -/**@internalComponent */
   1.359 -const TUint32 KEmulatorImageFlagAllowDllData = 0x01;
   1.360 -
   1.361  /** Maximum size of capability set
   1.362  
   1.363  @internalTechnology
   1.364 @@ -3337,6 +3413,7 @@
   1.365  */
   1.366  const TInt KMaxSecurityPolicySize = KCapabilitySetMaxSize + 3*sizeof(TUint32);
   1.367  
   1.368 +
   1.369  /** Class representing an arbitrary set of capabilities.
   1.370  
   1.371  This class can only contain capabilities supported by the current OS version.
   1.372 @@ -3371,6 +3448,7 @@
   1.373  	@internalComponent
   1.374  	*/
   1.375  	TBool NotEmpty() const;
   1.376 +
   1.377  private:
   1.378  	TUint32 iCaps[KCapabilitySetMaxSize / sizeof(TUint32)];
   1.379  	};
   1.380 @@ -3453,7 +3531,10 @@
   1.381  	{
   1.382  public:
   1.383  	inline TSecurityInfo();
   1.384 -#ifndef __KERNEL_MODE__
   1.385 +#ifdef __KERNEL_MODE__
   1.386 +	IMPORT_C TSecurityInfo(DProcess* aProcess);
   1.387 +	IMPORT_C TSecurityInfo(DThread* aThread);
   1.388 +#else
   1.389  	IMPORT_C TSecurityInfo(RProcess aProcess);
   1.390  	IMPORT_C TSecurityInfo(RThread aThread);
   1.391  	IMPORT_C TSecurityInfo(RMessagePtr2 aMesPtr);
   1.392 @@ -3632,7 +3713,7 @@
   1.393  		ETypeV3=5,		/**< Vendor ID and up to 3 capabilities*/
   1.394  
   1.395  		/** The number of possible TSecurityPolicy types
   1.396 -		This is intended of internal Symbian use only.
   1.397 +		This is intended for internal Symbian use only.
   1.398  		@internalTechnology
   1.399  		*/
   1.400  		ETypeLimit
   1.401 @@ -4744,12 +4825,10 @@
   1.402  #endif //__KERNEL_MODE__
   1.403  
   1.404  private:
   1.405 -	/** @internalTechnology */
   1.406  	UIMPORT_C static TInt EmitDiagnostic(TPlatSecDiagnostic& aDiagnostic, const char* aContextText);
   1.407  #else //__REMOVE_PLATSEC_DIAGNOSTICS__
   1.408  #ifndef __KERNEL_MODE__
   1.409  private:
   1.410 -	/** @internalTechnology */
   1.411  	IMPORT_C static TInt EmitDiagnostic(TPlatSecDiagnostic& aDiagnostic, const char* aContextText);
   1.412  #endif // !__KERNEL_MODE__
   1.413  #endif // !__REMOVE_PLATSEC_DIAGNOSTICS__
   1.414 @@ -4760,22 +4839,8 @@
   1.415  	};
   1.416  
   1.417  
   1.418 -
   1.419 -/**
   1.420 -@internalTechnology
   1.421 - */
   1.422 -struct TEmulatorImageHeader
   1.423 -	{
   1.424 -	TUid iUids[KMaxCheckedUid];
   1.425 -	TProcessPriority iPriority;
   1.426 -	SSecurityInfo iS;
   1.427 -	TUint32 iSpare1;
   1.428 -	TUint32 iSpare2;
   1.429 -	TUint32 iModuleVersion;
   1.430 -	TUint32 iFlags;
   1.431 -	};
   1.432 -
   1.433 -
   1.434 +#define KMaxSerialNumLength 64
   1.435 +typedef TBuf8<KMaxSerialNumLength> TMediaSerialNumber;
   1.436  
   1.437  
   1.438  /**
   1.439 @@ -4974,9 +5039,12 @@
   1.440  class TIdentityRelation
   1.441  	{
   1.442  public:
   1.443 +	inline TIdentityRelation();
   1.444  	inline TIdentityRelation( TBool (*anIdentity)(const T&, const T&) );
   1.445  	inline operator TGeneralIdentityRelation() const;
   1.446  private:
   1.447 +	inline static TBool EqualityOperatorCompare(const T& aLeft, const T& aRight);
   1.448 +private:
   1.449  	TGeneralIdentityRelation iIdentity;
   1.450  	};
   1.451  
   1.452 @@ -6145,6 +6213,24 @@
   1.453  
   1.454  #endif //__LEAVE_EQUALS_THROW__
   1.455  
   1.456 +/* The macro __SYMBIAN_STDCPP_SUPPORT__ is defined when building a StdC++ target.
   1.457 + * In this case, operator new and operator delete below should not be declared
   1.458 + * to avoid clashing with StdC++ declarations.
   1.459 + */ 
   1.460 +
   1.461 +#ifndef __SYMBIAN_STDCPP_SUPPORT__
   1.462 +
   1.463 +#ifndef __OPERATOR_NEW_DECLARED__
   1.464 +
   1.465 +/* Some operator new and operator delete overloads may be declared in compiler
   1.466 + * pre-include files.
   1.467 + *
   1.468 + * __OPERATOR_NEW_DECLARED__ is #defined if they are, so that we can avoid
   1.469 + * re-declaring them here.
   1.470 + */
   1.471 +
   1.472 +#define __OPERATOR_NEW_DECLARED__
   1.473 +
   1.474  /**
   1.475  @publishedAll
   1.476  @released
   1.477 @@ -6163,42 +6249,43 @@
   1.478  */
   1.479  GLREF_C void operator delete(TAny* aPtr) __NO_THROW;
   1.480  
   1.481 +#ifndef __OMIT_VEC_OPERATOR_NEW_DECL__
   1.482 +/**
   1.483 +@publishedAll
   1.484 +@released
   1.485 +*/
   1.486 +GLREF_C TAny* operator new[](TUint aSize) __NO_THROW;
   1.487 +
   1.488 +/**
   1.489 +@publishedAll
   1.490 +@released
   1.491 +*/
   1.492 +GLREF_C void operator delete[](TAny* aPtr) __NO_THROW;
   1.493 +#endif // !__OMIT_VEC_OPERATOR_NEW_DECL__
   1.494 +
   1.495 +#endif // !__OPERATOR_NEW_DECLARED__
   1.496 +
   1.497 +#endif // !__SYMBIAN_STDCPP_SUPPORT__
   1.498 +
   1.499 +/**
   1.500 +@publishedAll
   1.501 +@released
   1.502 +*/
   1.503 +inline TAny* operator new(TUint aSize, TAny* aBase) __NO_THROW;
   1.504 +
   1.505 +/**
   1.506 +@publishedAll
   1.507 +@released
   1.508 +*/
   1.509 +inline void operator delete(TAny* aPtr, TAny* aBase) __NO_THROW;
   1.510 +
   1.511  #ifndef __PLACEMENT_VEC_NEW_INLINE
   1.512  /**
   1.513  @publishedAll
   1.514  @released
   1.515  */
   1.516 -GLREF_C TAny* operator new[](TUint aSize) __NO_THROW;
   1.517 -
   1.518 -/**
   1.519 -@publishedAll
   1.520 -@released
   1.521 -*/
   1.522 -GLREF_C void operator delete[](TAny* aPtr) __NO_THROW;
   1.523 -#endif
   1.524 -
   1.525 -/**
   1.526 -@publishedAll
   1.527 -@released
   1.528 -*/
   1.529 -inline TAny* operator new(TUint aSize, TAny* aBase) __NO_THROW;
   1.530 -
   1.531 -#ifndef __PLACEMENT_VEC_NEW_INLINE
   1.532 -/**
   1.533 -@publishedAll
   1.534 -@released
   1.535 -*/
   1.536  inline TAny* operator new[](TUint aSize, TAny* aBase) __NO_THROW;
   1.537  
   1.538 -#endif // !__PLACEMENT_VEC_NEW_INLINE
   1.539 -
   1.540 -/**
   1.541 -@publishedAll
   1.542 -@released
   1.543 -*/
   1.544 -inline void operator delete(TAny* aPtr, TAny* aBase) __NO_THROW;
   1.545 -
   1.546 -#ifndef __PLACEMENT_VEC_NEW_INLINE
   1.547  /**
   1.548  @publishedAll
   1.549  @released
   1.550 @@ -6280,12 +6367,17 @@
   1.551  
   1.552      /**
   1.553      @internalComponent
   1.554 -    
   1.555 -    Bit width of type information.
   1.556  	*/
   1.557 -	enum {
   1.558 -	     KBitsPerType=3 /** Number of bits of type information used for each of the 4 arguments. */
   1.559 -	     };
   1.560 +	enum 
   1.561 +		{
   1.562 +		KBitsPerType	= 3, 		/**< Number of bits of type information used for each of the 4 arguments.*/
   1.563 +		KPinArgShift	= KBitsPerType*KMaxMessageArguments,	/**< Bit number of the start of the pin flags. */
   1.564 +		KPinArg0		= 1<<(KPinArgShift+0),	/**< Set to pin argument at index 0.*/
   1.565 +		KPinArg1		= 1<<(KPinArgShift+1),	/**< Set to pin argument at index 1.*/
   1.566 +		KPinArg2		= 1<<(KPinArgShift+2),	/**< Set to pin argument at index 2.*/
   1.567 +		KPinArg3		= 1<<(KPinArgShift+3),	/**< Set to pin argument at index 3.*/
   1.568 +		KPinMask 		= 0xf<<KPinArgShift,	/**< The bits used for the pinning attributes of each argument.*/
   1.569 +		};
   1.570  	
   1.571  	
   1.572  	/**
   1.573 @@ -6407,6 +6499,8 @@
   1.574  #ifndef __KERNEL_MODE__
   1.575  	inline void Set(TInt aIndex,TDes16* aValue);
   1.576  #endif
   1.577 +
   1.578 +	inline TIpcArgs& PinArgs(TBool aPinArg0=ETrue, TBool aPinArg1=ETrue, TBool aPinArg2=ETrue, TBool aPinArg3=ETrue);
   1.579  private:
   1.580  	inline static TArgType Type(TNothing);
   1.581  	inline static TArgType Type(TInt);
   1.582 @@ -6566,11 +6660,21 @@
   1.583  
   1.584  // The standard header file <exception> defines the following guard macro for EDG and CW, VC++, GCC respectively.
   1.585  // The guard below is ugly. It will surely come back and bite us unless we resolve the whole issue of standard headers
   1.586 -// when we move to supporting Standard C++. 
   1.587 -#if !defined(_EXCEPTION) && !defined(_EXCEPTION_) && !defined(__EXCEPTION__)
   1.588 +// when we move to supporting Standard C++.
   1.589 +
   1.590 +// The macro __SYMBIAN_STDCPP_SUPPORT__ is defined when building a StdC++ target.
   1.591 +// In this case, we include the StdC++ specification <exception> rather than declaring uncaught_exception.
   1.592 + 
   1.593 +#ifdef __SYMBIAN_STDCPP_SUPPORT__
   1.594 +	#include <stdapis/stlportv5/exception>
   1.595 +#elif !defined(_EXCEPTION) && !defined(_EXCEPTION_) && !defined(__EXCEPTION__)
   1.596  // Declare standard C++ functions relating to exceptions here
   1.597  namespace std {
   1.598 -  bool uncaught_exception(void);
   1.599 +#if defined(__VC32__) || defined(__CW32__)
   1.600 +  bool uncaught_exception();
   1.601 +#else
   1.602 +  IMPORT_C bool uncaught_exception();
   1.603 +#endif
   1.604    void terminate(void);
   1.605    void unexpected(void);
   1.606    typedef void (*terminate_handler)();
   1.607 @@ -6668,6 +6772,28 @@
   1.608  #endif //__X86__
   1.609  #endif //__WINS__
   1.610  
   1.611 +/**
   1.612 +@internalTechnology
   1.613 + */
   1.614 +struct TEmulatorImageHeader
   1.615 +	{
   1.616 +	TUid iUids[KMaxCheckedUid];
   1.617 +	TProcessPriority iPriority;
   1.618 +	SSecurityInfo iS;
   1.619 +	TUint32 iSpare1;
   1.620 +	TUint32 iSpare2;
   1.621 +	TUint32 iModuleVersion;
   1.622 +	TUint32 iFlags;
   1.623 +	};
   1.624 +
   1.625 +// forward declaration of shareable data buffers pool infomation
   1.626 +class TShPoolInfo;
   1.627 +
   1.628  #include <e32cmn.inl>
   1.629  
   1.630 +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
   1.631 +#include <e32cmn_private.h>
   1.632 +#endif
   1.633 +
   1.634  #endif //__E32CMN_H__
   1.635 +