Update contrib.
1 // Copyright (c) 1994-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of the License "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // e32\include\e32std.h
21 #ifdef __KERNEL_MODE__
22 #error !! Including e32std.h in kernel code !!
34 IMPORT_C virtual void operator()() =0;
41 Encapsulates a general call-back function.
43 The class encapsulates:
45 1. a pointer to a function which takes an argument of type TAny* and returns
48 2. a pointer which is passed to the function every time it is called.
49 The pointer can point to any object. It can also be NULL.
51 The callback function can be a static function of a class,
52 e.g. TInt X::Foo(TAny *) or it can be a function which is not a member of
53 any class, e.g. TInt Foo(TAny *).
55 When used with the CIdle and the CPeriodic classes, the callback function
56 is intended to be called repeatedly; the encapsulated pointer is passed on
57 each call. Typically, the pointer refers to an object which records the state
58 of the task across each call. When used with CIdle, the callback function
59 should also return a true (non-zero) value if it is intended to be called
60 again, otherwise it should return a false (zero) value.
69 inline TCallBack(TInt (*aFunction)(TAny* aPtr));
70 inline TCallBack(TInt (*aFunction)(TAny* aPtr),TAny* aPtr);
71 inline TInt CallBack() const;
75 A pointer to the callback function.
77 TInt (*iFunction)(TAny* aPtr);
81 A pointer that is passed to the callback function when
82 the function is called.
94 An object embedded within a class T so that objects of type T can form part
95 of a singly linked list.
97 A link object encapsulates a pointer to the next link object in the list.
105 inline TSglQueLink() : iNext(NULL)
107 An explicitly coded default constructor that is only defined for DEBUG builds.
109 It sets the pointer to the next link object to NULL.
116 IMPORT_C void Enque(TSglQueLink* aLink);
119 A pointer to the next link object in the list.
122 friend class TSglQueBase;
132 A base class that provides implementation for the link object of a doubly
135 It also encapsulates pointers both to the next and the previous link
136 objects in the doubly linked list.
138 The class is abstract and is not intended to be instantiated.
142 class TDblQueLinkBase
145 inline TDblQueLinkBase() : iNext(NULL)
149 It sets the pointer to the next link object to NULL.
154 IMPORT_C void Enque(TDblQueLinkBase* aLink);
155 IMPORT_C void AddBefore(TDblQueLinkBase* aLink);
158 A pointer to the next link object in the list.
160 TDblQueLinkBase* iNext;
163 A pointer to the previous link object in the list.
165 TDblQueLinkBase* iPrev;
175 An object embedded within a class T so that objects of type T can form part
176 of a doubly linked list.
178 class TDblQueLink : public TDblQueLinkBase
181 IMPORT_C void Deque();
191 An object embedded within a class T so that objects of type T can form part
192 of an ordered doubly linked list.
194 Objects are added to the doubly linked list in descending priority order.
196 class TPriQueLink : public TDblQueLink
202 Objects are added to the doubly linked list in descending order of this value.
214 An object embedded within a class T so that objects of type T can form part
215 of a delta doubly linked list.
217 class TDeltaQueLink : public TDblQueLinkBase
233 An object embedded within a class T so that objects of type T can form part
234 of a doubly linked list sorted by tick count.
236 class TTickCountQueLink : public TDblQueLink
252 A base class that provides implementation for the singly linked list header.
254 It also encapsulates the offset value of a link object.
256 The class is abstract and is not intended to be instantiated.
263 IMPORT_C TBool IsEmpty() const;
264 IMPORT_C void SetOffset(TInt aOffset);
265 IMPORT_C void Reset();
267 IMPORT_C TSglQueBase();
268 IMPORT_C TSglQueBase(TInt aOffset);
269 IMPORT_C void DoAddFirst(TAny* aPtr);
270 IMPORT_C void DoAddLast(TAny* aPtr);
271 IMPORT_C void DoRemove(TAny* aPtr);
274 A pointer to the first element in the list.
279 A pointer to the last element in the list.
284 The offset of a component link object within elements that form the list.
288 TSglQueBase(const TSglQueBase& aQue);
289 TSglQueBase &operator=(const TSglQueBase& aQue);
290 friend class TSglQueIterBase;
300 A base class that provides implementation for the doubly linked list header.
302 It also encapsulates the offset value of a link object.
304 The class is abstract and is not intended to be instantiated.
311 IMPORT_C TBool IsEmpty() const;
312 IMPORT_C void SetOffset(TInt aOffset);
313 IMPORT_C void Reset();
315 IMPORT_C TDblQueBase();
316 IMPORT_C TDblQueBase(TInt aOffset);
317 IMPORT_C void DoAddFirst(TAny* aPtr);
318 IMPORT_C void DoAddLast(TAny* aPtr);
319 IMPORT_C void DoAddPriority(TAny* aPtr);
320 IMPORT_C void __DbgTestEmpty() const;
323 The head, or anchor point of the queue.
328 The offset of a component link object within elements that form the list.
332 TDblQueBase(const TDblQueBase& aQue);
333 TDblQueBase& operator=(const TDblQueBase& aQue);
334 friend class TDblQueIterBase;
344 A base class that provides implementation for the TDeltaQue template class.
346 The class is abstract and is not intended to be instantiated.
350 class TDeltaQueBase : public TDblQueBase
353 IMPORT_C TBool CountDown();
354 IMPORT_C TBool CountDown(TInt aValue);
355 IMPORT_C TBool FirstDelta(TInt& aValue);
356 IMPORT_C void Reset();
358 IMPORT_C TDeltaQueBase();
359 IMPORT_C TDeltaQueBase(TInt aOffset);
360 IMPORT_C void DoAddDelta(TAny* aPtr,TInt aDelta);
361 IMPORT_C void DoRemove(TAny* aPtr);
362 IMPORT_C TAny* DoRemoveFirst();
365 Pointer to the delta value in the first link element.
377 A templated class that provides the behaviour for managing a singly linked
380 It also acts as the head of the list, maintaining the pointers into the list.
382 The template parameter defines the type of element that forms the singly linked
383 list and is the class that acts as host to the link object.
388 class TSglQue : public TSglQueBase
392 inline explicit TSglQue(TInt aOffset);
393 inline void AddFirst(T& aRef);
394 inline void AddLast(T& aRef);
395 inline TBool IsFirst(const T* aPtr) const;
396 inline TBool IsLast(const T* aPtr) const;
397 inline T* First() const;
398 inline T* Last() const;
399 inline void Remove(T& aRef);
409 A templated class that provides the behaviour for managing a doubly linked
412 It also acts as the head of the list, maintaining the pointers into the list.
414 The template parameter defines the type of element that forms the doubly linked
415 list and is the class that acts as host to the link object.
420 class TDblQue : public TDblQueBase
424 inline explicit TDblQue(TInt aOffset);
425 inline void AddFirst(T& aRef);
426 inline void AddLast(T& aRef);
427 inline TBool IsHead(const T* aPtr) const;
428 inline TBool IsFirst(const T* aPtr) const;
429 inline TBool IsLast(const T* aPtr) const;
430 inline T* First() const;
431 inline T* Last() const;
441 A templated class that provides the behaviour for managing a doubly linked
442 list in which the elements are added in descending priority order.
444 Priority is defined by the value of the TPriQueLink::iPriority member of
447 The template parameter defines the type of element that forms the doubly linked
448 list and is the class that acts as host to the link object.
451 @see TPriQueLink::iPriority
454 class TPriQue : public TDblQueBase
458 inline explicit TPriQue(TInt aOffset);
459 inline void Add(T& aRef);
460 inline TBool IsHead(const T* aPtr) const;
461 inline TBool IsFirst(const T* aPtr) const;
462 inline TBool IsLast(const T* aPtr) const;
463 inline T* First() const;
464 inline T* Last() const;
474 A templated class that provides the behaviour for managing a doubly linked
475 list in which elements represent values which are increments, or deltas, on
476 the value represented by a preceding element.
478 The list is ordered so that the head of the queue represents a nominal zero
481 The delta value of a new element represents its 'distance' from the nominal
482 zero point. The new element is added into the list, and the delta values of
483 adjacent elements (and of the new element, if necessary) are adjusted, so
484 that the sum of all deltas, up to and including the new element, is the same
485 as the new element's intended 'distance' from the nominal zero point.
487 A common use for a list of this type is as a queue of timed events, where
488 the delta values represent the intervals between the events.
490 The delta value is defined by the value of the TDeltaQueLink::iDelta member
493 The template parameter defines the type of element that forms the doubly linked
494 list and is the class that acts as host to the link object.
497 @see TDeltaQueLink::iDelta
500 class TDeltaQue : public TDeltaQueBase
504 inline explicit TDeltaQue(TInt aOffset);
505 inline void Add(T& aRef,TInt aDelta);
506 inline void Remove(T& aRef);
507 inline T* RemoveFirst();
513 // Forward declaration
514 class TTickCountQueLink;
520 A class that provides the behaviour for managing a doubly linked list
521 in which elements are added in order of the time until their tick count.
523 A common use for a list of this type is as a queue of timed events, where
524 the tick counts are the expiry times of the events.
526 The tick count is defined by the value of the TTickCountQueLink::iTickCount
527 member of the link element.
529 @see TTickCountQueLink
530 @see TTickCountQueLink::iTickCount
532 class TTickCountQue : public TDblQueBase
536 void Add(TTickCountQueLink& aRef);
537 TTickCountQueLink* First() const;
538 TTickCountQueLink* RemoveFirst();
539 TTickCountQueLink* RemoveFirst(TUint aTickCount);
549 A base class that provides implementation for the singly linked list iterator.
551 It also encapsulates a pointer to the current link link list element.
553 The class is abstract and is not intended to be instantiated.
555 class TSglQueIterBase
558 IMPORT_C void SetToFirst();
560 IMPORT_C TSglQueIterBase(TSglQueBase& aQue);
561 IMPORT_C TAny* DoPostInc();
562 IMPORT_C TAny* DoCurrent();
563 IMPORT_C void DoSet(TAny* aLink);
577 A templated class that provides the behaviour for iterating through a set of
578 singly linked list elements.
580 The template parameter defines the type of element that forms the singly linked
581 list. The class defined in the template parameter contains the link object.
584 class TSglQueIter : public TSglQueIterBase
587 inline TSglQueIter(TSglQueBase& aQue);
588 inline void Set(T& aLink);
589 inline operator T*();
590 inline T* operator++(TInt);
600 A base class that provides implementation for the doubly linked list iterator.
602 It also encapsulates a pointer to the current link list element.
604 The class is abstract and is not intended to be instantiated.
606 class TDblQueIterBase
609 IMPORT_C void SetToFirst();
610 IMPORT_C void SetToLast();
612 IMPORT_C TDblQueIterBase(TDblQueBase& aQue);
613 IMPORT_C TAny* DoPostInc();
614 IMPORT_C TAny* DoPostDec();
615 IMPORT_C TAny* DoCurrent();
616 IMPORT_C void DoSet(TAny* aLink);
619 The offset of a component link object within elements that form the list.
624 Pointer to the anchor for the list.
626 TDblQueLinkBase* iHead;
629 Pointer to the current element.
631 TDblQueLinkBase* iNext;
641 A templated class that provides the behaviour for iterating through a set of
642 doubly linked list elements.
644 The template parameter defines the type of element that forms the doubly linked
645 list. The class defined in the template parameter contains the link object.
648 class TDblQueIter : public TDblQueIterBase
651 inline TDblQueIter(TDblQueBase& aQue);
652 inline void Set(T& aLink);
653 inline operator T*();
654 inline T* operator++(TInt);
655 inline T* operator--(TInt);
665 Governs the type of comparison to be made between descriptor keys or between
675 For a Unicode build, this is the same as ECmpNormal16.
676 For a non-Unicode build, this is the same as ECmpNormal8.
678 Using the build independent names (i.e. TPtrC, TPtr, TBufC, TBuf or TText)
679 allows the compiler to chose the correct variant according to the build.
685 For descriptor keys, the key is assumed to be the 8 bit variant, derived
686 from TDesc8. A simple comparison is done between the content of the
687 descriptors; the data is not folded and collation rules are not applied for
688 the purpose of the comparison.
690 For text keys, the key is assumed to be the 8 bit variant, of type TText8.
691 A normal comparison is done between the text data; the data is not folded
692 and collation rules are not applied for the purpose of the comparison.
698 For descriptor keys, the key is assumed to be the 16 bit variant, derived
699 from TDesc16. A simple comparison is done between the content of the
700 descriptors; the data is not folded and collation rules are not applied for
701 the purpose of the comparison.
703 For text keys, the key is assumed to be the 16 bit variant, of type
704 TText16. A normal comparison is done between the text data; the data is
705 not folded and collation rules are not applied for the purpose of the
712 For a Unicode build, this is the same as EcmpFolded16.
713 For a non-Unicode build, this is the same as EcmpFolded8.
715 Using the build independent names (i.e. TPtrC, TPtr, TBufC, TBuf or TText)
716 allows the compiler to chose the correct variant according to the build.
722 For descriptor keys, the key is assumed to be the 8 bit variant,
723 derived from TDesc8. The descriptor contents are folded for the purpose
726 For text keys, the key is assumed to be the 8 bit variant, of type
727 TText8. The text data is folded for the purpose of the comparison.
733 For descriptor keys, the key is assumed to be the 16 bit variant,
734 derived from TDesc16. The descriptor contents are folded for the purpose
737 For text keys, the key is assumed to be the 16 bit variant, of type
738 TText16. The text data is folded for the purpose of the comparison.
744 For a Unicode build, this is the same as EcmpCollated16.
745 For a non-Unicode build, this is the same as EcmpCollated8.
747 Using the build independent names (i.e. TPtrC, TPtr, TBufC, TBuf or TText)
748 allows the compiler to chose the correct variant according to the build.
754 For descriptor keys, the key is assumed to be the 8 bit variant,
755 derived from TDesc8. Collation rules are applied for the purpose of
758 For text keys, the key is assumed to be the 8 bit variant, of type
759 TText8. Collation rules are applied for the purpose of the comparison.
765 For descriptor keys, the key is assumed to be the 16 bit variant,
766 derived from TDesc16. Collation rules are applied for the purpose of
769 For text keys, the key is assumed to be the 16 bit variant,
770 of type TText16. Collation rules are applied for the purpose of
783 Governs the type of comparison to be made between numeric keys.
792 The key is assumed to be of type TInt8.
794 ECmpTInt8=((ECmpCollated16+1)<<1),
798 The key is assumed to be of type TInt16.
804 The key is assumed to be of type TInt32.
810 The key is assumed to be of type TInt.
816 The key is assumed to be of type TUint8.
822 The key is assumed to be of type TUint16.
828 The key is assumed to be of type TUint32.
834 The key is assumed to be of type TUint.
840 The key is assumed to be of type TInt64.
852 Defines the characteristics of a key used to access the elements of an array.
854 The class is abstract and cannot be instantiated. A derived class must be
855 defined and implemented.
857 The classes TKeyArrayFix, TKeyArrayVar and TKeyArrayPak, derived from TKey,
858 are already supplied to implement keys for the fixed length element, variable
859 length element and packed arrays.
861 A derived class would normally be written to define the characteristics of
862 a key for a non standard array.
871 inline void SetPtr(const TAny* aPtr);
872 IMPORT_C virtual TInt Compare(TInt aLeft,TInt aRight) const;
873 IMPORT_C virtual TAny* At(TInt anIndex) const;
876 IMPORT_C TKey(TInt aOffset,TKeyCmpText aType);
877 IMPORT_C TKey(TInt aOffset,TKeyCmpText aType,TInt aLength);
878 IMPORT_C TKey(TInt aOffset,TKeyCmpNumeric aType);
890 Defines the basic behaviour for swapping two elements of an array.
892 The class is abstract. A derived class must be defined and implemented to
893 use the functionality.
895 A derived class can define how to swap two elements of an array. In practice,
896 this means providing an implementation for the virtual function Swap().
898 To support this, the derived class is also likely to need a pointer to the
899 array itself and suitable constructors and/or other member functions to set
906 IMPORT_C virtual void Swap(TInt aLeft,TInt aRight) const;
916 Folds a specified character and provides functions to fold additional
917 characters after construction of the object.
919 Folding converts the character to a form which can be used in tolerant
920 comparisons without control over the operations performed. Tolerant comparisons
921 are those which ignore character differences like case and accents.
923 Note that folding is locale-independent behaviour. It is also important to
924 note that there can be no guarantee that folding is in any way culturally
925 appropriate, and should not be used for matching characters in
930 class TCharF : public TChar
933 inline TCharF(TUint aChar);
934 inline TCharF(const TChar& aChar);
935 inline TCharF& operator=(TUint aChar);
936 inline TCharF& operator=(const TChar& aChar);
946 Converts a specified character to lower case and provides functions to convert
947 additional characters after construction of the object.
949 class TCharLC : public TChar
952 inline TCharLC(TUint aChar);
953 inline TCharLC(const TChar& aChar);
954 inline TCharLC& operator=(TUint aChar);
955 inline TCharLC& operator=(const TChar& aChar);
965 Converts a specified character to upper case and provides functions to convert
966 additional characters after construction of the object.
968 class TCharUC : public TChar
971 inline TCharUC(TUint aChar);
972 inline TCharUC(const TChar& aChar);
973 inline TCharUC& operator=(TUint aChar);
974 inline TCharUC& operator=(const TChar& aChar);
983 Defines the character representation of a real number type such
984 as a TReal or a TRealX.
986 An object of this type is used by functions that convert real values to
987 character format, for example, the descriptor functions:
988 Num(), AppendNum() and Format().
990 There are three constructors for constructing a suitable object.
991 The data members of the class, however, are public and can be
992 explicitly set after construction.
997 IMPORT_C TRealFormat();
998 IMPORT_C TRealFormat(TInt aWidth);
999 IMPORT_C TRealFormat(TInt aWidth,TInt aDecimalPlaces);
1002 Governs the format of the character representation of the real number.
1004 This is set to one of the defined format types.
1006 One or more of the defined format flags can subsequently be ORed into this member.
1008 @see KRealFormatFixed
1009 @see KRealFormatExponent
1010 @see KRealFormatGeneral
1011 @see KRealFormatNoExponent
1012 @see KRealFormatCalculator
1013 @see KExtraSpaceForSign
1014 @see KAllowThreeDigitExp
1015 @see KDoNotUseTriads
1023 Defines the maximum number of characters required to represent the number.
1029 Defines either the number of characters to be used to represent the decimal
1030 portion of the number, or the maximum number of significant digits in
1031 the character representation of the number.
1033 The interpretation depends on the chosen format as defined by iType.
1035 @see TRealFormat::iType
1041 Defines the character to be used to separate the integer portion of
1042 a number representation from its decimal portion.
1044 In general, the character used for this purpose is a matter of local
1045 convention. The TLocale::DecimalSeparator() function can supply the
1054 Defines the character to be used to delimit groups of three digits in
1055 the integer part of the number.
1057 In general, the character used for this purpose is a matter of local
1058 convention. The TLocale::ThousandsSeparator() function can supply the
1067 Defines the threshold number of digits above which triad separation is to
1068 occur. A value of zero disables triad separation and no triad separation
1069 character (i.e. the character held in iTriad) is inserted into the
1070 resulting character representation regardless of the number of characters.
1072 For example, a value of 1 causes the number 1000 to be represented by the
1073 characters "1,000" whereas a value of 4 causes the same number to be
1074 represented by the characters "1000" (This assumes the ‘,’ triad separation
1077 Note that no triad separation occurs if the flag KDoNotUseTriads is set in
1078 the iType data member.
1080 @see TRealFormat::iTriad
1081 @see KDoNotUseTriads
1093 Defines the extraction mark used by the TLex8 class to indicate the current
1094 lexical element being analysed.
1096 In practice, objects of this type are accessed through the TLexMark typedef.
1106 inline TLexMark8(const TUint8* aString);
1120 Provides general string-parsing functions suitable for numeric format
1121 conversions and syntactical-element parsing.
1123 The class is the 8-bit variant for non-Unicode strings and 8-bit wide
1126 An instance of this class stores a string, maintaining an extraction mark
1127 to indicate the current lexical element being analysed and a pointer to the
1128 next character to be examined.
1130 Objects of this type are normally accessed through the build independent type
1139 inline TLex8(const TUint8* aString);
1140 inline TLex8(const TDesC8& aDes);
1141 inline TLex8& operator=(const TUint8* aString);
1142 inline TLex8& operator=(const TDesC8& aDes);
1143 inline TBool Eos() const;
1144 inline void Mark(TLexMark8& aMark) const;
1146 IMPORT_C void Inc();
1147 IMPORT_C void Inc(TInt aNumber);
1148 IMPORT_C TChar Get();
1149 IMPORT_C TChar Peek() const;
1150 IMPORT_C void UnGet();
1151 inline void UnGetToMark();
1152 IMPORT_C void UnGetToMark(const TLexMark8 aMark);
1153 IMPORT_C void SkipSpace();
1154 inline void SkipAndMark(TInt aNumber);
1155 IMPORT_C void SkipAndMark(TInt aNumber, TLexMark8& aMark);
1156 inline void SkipSpaceAndMark();
1157 IMPORT_C void SkipSpaceAndMark(TLexMark8& aMark);
1158 IMPORT_C void SkipCharacters();
1159 inline TInt TokenLength() const;
1160 IMPORT_C TInt TokenLength(const TLexMark8 aMark) const;
1161 IMPORT_C TPtrC8 MarkedToken() const;
1162 IMPORT_C TPtrC8 MarkedToken(const TLexMark8 aMark) const;
1163 IMPORT_C TPtrC8 NextToken();
1164 IMPORT_C TPtrC8 Remainder() const;
1165 IMPORT_C TPtrC8 RemainderFromMark() const;
1166 IMPORT_C TPtrC8 RemainderFromMark(const TLexMark8 aMark) const;
1167 IMPORT_C TInt Offset() const;
1168 inline TInt MarkedOffset() const;
1169 IMPORT_C TInt MarkedOffset(const TLexMark8 aMark) const;
1170 IMPORT_C TInt Val(TInt8& aVal);
1171 IMPORT_C TInt Val(TInt16& aVal);
1172 IMPORT_C TInt Val(TInt32& aVal);
1173 IMPORT_C TInt Val(TInt64& aVal);
1174 inline TInt Val(TInt& aVal);
1175 IMPORT_C TInt Val(TUint8& aVal,TRadix aRadix);
1176 IMPORT_C TInt Val(TUint16& aVal,TRadix aRadix);
1177 IMPORT_C TInt Val(TUint32& aVal,TRadix aRadix);
1178 IMPORT_C TInt Val(TInt64& aVal, TRadix aRadix);
1179 inline TInt Val(TUint& aVal,TRadix aRadix=EDecimal);
1180 IMPORT_C TInt BoundedVal(TInt32& aVal,TInt aLimit);
1181 IMPORT_C TInt BoundedVal(TInt64& aVal, const TInt64& aLimit);
1182 IMPORT_C TInt BoundedVal(TUint32& aVal,TRadix aRadix,TUint aLimit);
1183 IMPORT_C TInt BoundedVal(TInt64& aVal, TRadix aRadix, const TInt64& aLimit);
1184 IMPORT_C TInt Val(TReal32& aVal);
1185 IMPORT_C TInt Val(TReal32& aVal,TChar aPoint);
1186 IMPORT_C TInt Val(TReal64& aVal);
1187 IMPORT_C TInt Val(TReal64& aVal,TChar aPoint);
1188 inline void Assign(const TLex8& aLex);
1189 IMPORT_C void Assign(const TUint8* aString);
1190 IMPORT_C void Assign(const TDesC8& aDes);
1191 TInt Val(TRealX& aVal);
1192 TInt Val(TRealX& aVal, TChar aPoint);
1194 /** @deprecated Use BoundedVal(TInt32& aVal,TInt aLimit) */
1195 inline TInt Val(TInt32& aVal,TInt aLimit) { return BoundedVal(aVal,aLimit); };
1197 /** @deprecated Use BoundedVal(TInt64& aVal,const TInt64& aLimit) */
1198 inline TInt Val(TInt64& aVal,const TInt64& aLimit) { return BoundedVal(aVal,aLimit); };
1200 /** @deprecated Use BoundedVal(TUint32& aVal,TRadix aRadix,TUint aLimit) */
1201 inline TInt Val(TUint32& aVal,TRadix aRadix,TUint aLimit) { return BoundedVal(aVal,aRadix,aLimit); };
1203 /** @deprecated Use BoundedVal(TInt64& aVal,TRadix aRadix,const TInt64& aLimit) */
1204 inline TInt Val(TInt64& aVal,TRadix aRadix,const TInt64& aLimit) { return BoundedVal(aVal,aRadix,aLimit); };
1206 void Scndig(TInt& aSig, TInt& aExp, TUint64& aDl);
1207 void ScndigAfterPoint(TInt& aSig, TUint64& aDl);
1208 void ValidateMark(const TLexMark8 aMark) const;
1210 const TUint8* iNext;
1224 Defines the extraction mark used by the TLex16 class to indicate the current
1225 lexical element being analysed.
1227 In practice, objects of this type are accessed through the TLexMark typedef.
1235 inline TLexMark16();
1237 inline TLexMark16(const TUint16* aString);
1238 const TUint16* iPtr;
1239 friend class TLex16;
1250 Provides general string-parsing functions suitable for numeric format
1251 conversions and syntactical-element parsing.
1253 The class is the 16-bit variant for Unicode strings and 16-bit wide
1256 An instance of this class stores a string, maintaining an extraction mark
1257 to indicate the current lexical element being analysed and a pointer to the
1258 next character to be examined.
1260 Objects of this type are normally accessed through the build independent type
1269 inline TLex16(const TUint16* aString);
1270 inline TLex16(const TDesC16& aDes);
1271 inline TLex16& operator=(const TUint16* aString);
1272 inline TLex16& operator=(const TDesC16& aDes);
1273 inline TBool Eos() const;
1275 inline void Mark(TLexMark16& aMark) const;
1276 IMPORT_C void Inc();
1277 IMPORT_C void Inc(TInt aNumber);
1278 IMPORT_C TChar Get();
1279 IMPORT_C TChar Peek() const;
1280 IMPORT_C void UnGet();
1281 inline void UnGetToMark();
1282 IMPORT_C void UnGetToMark(const TLexMark16 aMark);
1283 IMPORT_C void SkipSpace();
1284 inline void SkipAndMark(TInt aNumber);
1285 IMPORT_C void SkipAndMark(TInt aNumber, TLexMark16& aMark);
1286 IMPORT_C void SkipSpaceAndMark(TLexMark16& aMark);
1287 inline void SkipSpaceAndMark();
1288 IMPORT_C void SkipCharacters();
1289 inline TInt TokenLength() const;
1290 IMPORT_C TInt TokenLength(const TLexMark16 aMark) const;
1291 IMPORT_C TPtrC16 MarkedToken() const;
1292 IMPORT_C TPtrC16 MarkedToken(const TLexMark16 aMark) const;
1293 IMPORT_C TPtrC16 NextToken();
1294 IMPORT_C TPtrC16 Remainder() const;
1295 IMPORT_C TPtrC16 RemainderFromMark() const;
1296 IMPORT_C TPtrC16 RemainderFromMark(const TLexMark16 aMark) const;
1297 IMPORT_C TInt Offset() const;
1298 inline TInt MarkedOffset() const;
1299 IMPORT_C TInt MarkedOffset(const TLexMark16 aMark) const;
1300 IMPORT_C TInt Val(TInt8& aVal);
1301 IMPORT_C TInt Val(TInt16& aVal);
1302 IMPORT_C TInt Val(TInt32& aVal);
1303 IMPORT_C TInt Val(TInt64& aVal);
1304 inline TInt Val(TInt& aVal);
1305 IMPORT_C TInt Val(TUint8& aVal,TRadix aRadix);
1306 IMPORT_C TInt Val(TUint16& aVal,TRadix aRadix);
1307 IMPORT_C TInt Val(TUint32& aVal,TRadix aRadix);
1308 IMPORT_C TInt Val(TInt64& aVal, TRadix aRadix);
1309 // inline TInt Val(TInt64& aVal, TRadix aRadix) {return Val(aVal,aRadix);}
1310 inline TInt Val(TUint& aVal,TRadix aRadix=EDecimal);
1311 IMPORT_C TInt BoundedVal(TInt32& aVal,TInt aLimit);
1312 IMPORT_C TInt BoundedVal(TInt64& aVal, const TInt64& aLimit);
1313 IMPORT_C TInt BoundedVal(TUint32& aVal,TRadix aRadix,TUint aLimit);
1314 IMPORT_C TInt BoundedVal(TInt64& aVal, TRadix aRadix, const TInt64& aLimit);
1315 IMPORT_C TInt Val(TReal32& aVal);
1316 IMPORT_C TInt Val(TReal32& aVal,TChar aPoint);
1317 IMPORT_C TInt Val(TReal64& aVal);
1318 IMPORT_C TInt Val(TReal64& aVal,TChar aPoint);
1319 inline void Assign(const TLex16& aLex);
1320 IMPORT_C void Assign(const TUint16* aString);
1321 IMPORT_C void Assign(const TDesC16& aDes);
1322 TInt Val(TRealX& aVal);
1323 TInt Val(TRealX& aVal, TChar aPoint);
1325 /** @deprecated Use BoundedVal(TInt32& aVal,TInt aLimit) */
1326 inline TInt Val(TInt32& aVal,TInt aLimit) { return BoundedVal(aVal,aLimit); };
1328 /** @deprecated Use BoundedVal(TInt64& aVal,const TInt64& aLimit) */
1329 inline TInt Val(TInt64& aVal,const TInt64& aLimit) { return BoundedVal(aVal,aLimit); };
1331 /** @deprecated Use BoundedVal(TUint32& aVal,TRadix aRadix,TUint aLimit) */
1332 inline TInt Val(TUint32& aVal,TRadix aRadix,TUint aLimit) { return BoundedVal(aVal,aRadix,aLimit); };
1334 /** @deprecated Use BoundedVal(TInt64& aVal,TRadix aRadix,const TInt64& aLimit) */
1335 inline TInt Val(TInt64& aVal,TRadix aRadix,const TInt64& aLimit) { return BoundedVal(aVal,aRadix,aLimit); };
1337 void Scndig(TInt& aSig, TInt& aExp, TUint64& aDl);
1338 void ValidateMark(const TLexMark16 aMark) const;
1340 const TUint16* iNext;
1341 const TUint16* iBuf;
1342 const TUint16* iEnd;
1350 #if defined(_UNICODE)
1355 Provides access to general string-parsing functions suitable for numeric format
1356 conversions and syntactical-element parsing.
1358 It maps directly to either a TLex16 for a Unicode build or a TLex8 for a non-Unicode
1361 The build independent type should always be used unless an explicit 16 bit
1362 or 8 bit build variant is required.
1367 typedef TLex16 TLex;
1376 Defines the extraction mark used by the TLex classes to indicate the current
1377 lexical element being analysed.
1379 It maps directly to either a TLexMark16 for a Unicode build or a TLexMark8
1380 for a non-Unicode build.
1382 The build independent type should always be used unless an explicit 16 bit
1383 or 8 bit build variant is required.
1385 typedef TLexMark16 TLexMark;
1398 Provides access to general string-parsing functions suitable for numeric format
1399 conversions and syntactical-element parsing.
1401 It maps directly to either a TLex16 for a Unicode build or a TLex8 for a non-Unicode
1404 The build independent type should always be used unless an explicit 16 bit
1405 or 8 bit build variant is required.
1419 Defines the extraction mark used by the TLex classes to indicate the current
1420 lexical element being analysed.
1422 It maps directly to either a TLexMark16 for a Unicode build or a TLexMark8
1423 for a non-Unicode build.
1425 The build independent type should always be used unless an explicit 16 bit
1426 or 8 bit build variant is required.
1428 typedef TLexMark8 TLexMark;
1438 Packages a Uid type together with a checksum.
1445 IMPORT_C TCheckedUid();
1446 IMPORT_C TCheckedUid(const TUidType& aUidType);
1447 IMPORT_C TCheckedUid(const TDesC8& aPtr);
1448 IMPORT_C void Set(const TUidType& aUidType);
1449 IMPORT_C void Set(const TDesC8& aPtr);
1450 IMPORT_C TPtrC8 Des() const;
1451 inline const TUidType& UidType() const;
1453 IMPORT_C TUint Check() const;
1466 A date and time object in which the individual components are accessible in
1467 human-readable form.
1469 The individual components are: year, month, day, hour, minute,
1470 second and microsecond.
1472 These components are stored as integers and all except the year are checked for
1473 validity when a TDateTime is constructed or assigned new values.
1475 This class only supports getting and setting the entire date/time or any component
1476 of it. It does not support adding or subtracting intervals to or from a time.
1477 For functions which manipulate times, use class TTime.
1485 IMPORT_C TDateTime(TInt aYear,TMonth aMonth,TInt aDay,TInt aHour,TInt aMinute, TInt aSecond,TInt aMicroSecond);
1486 IMPORT_C TInt Set(TInt aYear,TMonth aMonth,TInt aDay,TInt aHour,TInt aMinute, TInt aSecond,TInt aMicroSecond);
1487 IMPORT_C TInt SetYear(TInt aYear);
1488 IMPORT_C TInt SetYearLeapCheck(TInt aYear);
1489 IMPORT_C TInt SetMonth(TMonth aMonth);
1490 IMPORT_C TInt SetDay(TInt aDay);
1491 IMPORT_C TInt SetHour(TInt aHour);
1492 IMPORT_C TInt SetMinute(TInt aMinute);
1493 IMPORT_C TInt SetSecond(TInt aSecond);
1494 IMPORT_C TInt SetMicroSecond(TInt aMicroSecond);
1495 inline TInt Year() const;
1496 inline TMonth Month() const;
1497 inline TInt Day() const;
1498 inline TInt Hour() const;
1499 inline TInt Minute() const;
1500 inline TInt Second() const;
1501 inline TInt MicroSecond() const;
1519 Represents a time interval of a millionth of a second stored as
1522 It supports the initialisation, setting and getting of an interval and provides
1523 standard comparison operations. Objects of this class can be added to and
1524 subtracted from TTime objects.
1528 class TTimeIntervalMicroSeconds
1531 inline TTimeIntervalMicroSeconds();
1532 inline TTimeIntervalMicroSeconds(const TInt64& aInterval);
1533 inline TTimeIntervalMicroSeconds& operator=(const TInt64& aInterval);
1534 inline TBool operator==(const TTimeIntervalMicroSeconds& aInterval) const;
1535 inline TBool operator!=(const TTimeIntervalMicroSeconds& aInterval) const;
1536 inline TBool operator>=(const TTimeIntervalMicroSeconds& aInterval) const;
1537 inline TBool operator<=(const TTimeIntervalMicroSeconds& aInterval) const;
1538 inline TBool operator>(const TTimeIntervalMicroSeconds& aInterval) const;
1539 inline TBool operator<(const TTimeIntervalMicroSeconds& aInterval) const;
1540 inline const TInt64& Int64() const;
1552 Provides a base class for all time interval classes using
1553 a 32-bit representation.
1555 It supports retrieving the interval and provides various operations for
1556 comparing intervals. Its concrete derived classes can be added to and
1557 subtracted from a TTime.
1559 The comparison operators simply compare the integer representations of the
1560 two intervals. They do not take account of different time interval units.
1561 So, for example, when comparing for equality an interval of three hours with
1562 an interval of three days, the result is true.
1566 class TTimeIntervalBase
1569 inline TBool operator==(TTimeIntervalBase aInterval) const;
1570 inline TBool operator!=(TTimeIntervalBase aInterval) const;
1571 inline TBool operator>=(TTimeIntervalBase aInterval) const;
1572 inline TBool operator<=(TTimeIntervalBase aInterval) const;
1573 inline TBool operator>(TTimeIntervalBase aInterval) const;
1574 inline TBool operator<(TTimeIntervalBase aInterval) const;
1575 inline TInt Int() const;
1577 inline TTimeIntervalBase();
1578 inline TTimeIntervalBase(TInt aInterval);
1590 Represents a microsecond time interval stored in 32 rather than 64 bits.
1592 Its range is +-2147483647, which is +-35 minutes, 47 seconds. Comparison and
1593 interval retrieval functions are provided by the base class TTimeIntervalBase.
1595 class TTimeIntervalMicroSeconds32 : public TTimeIntervalBase
1598 inline TTimeIntervalMicroSeconds32();
1599 inline TTimeIntervalMicroSeconds32(TInt aInterval);
1600 inline TTimeIntervalMicroSeconds32& operator=(TInt aInterval);
1610 Represents a time interval in seconds.
1612 Comparison and interval retrieval functions
1613 are provided by the base class TTimeIntervalBase.
1615 The range of values which it can represent is +-2147483647, which is equal to
1616 +-24855 days (approximately 68 years).
1618 class TTimeIntervalSeconds : public TTimeIntervalBase
1621 inline TTimeIntervalSeconds();
1622 inline TTimeIntervalSeconds(TInt aInterval);
1623 inline TTimeIntervalSeconds& operator=(TInt aInterval);
1633 Represents a time interval in minutes.
1635 Comparison and interval retrieval functions
1636 are provided by the base class TTimeIntervalBase.
1638 class TTimeIntervalMinutes : public TTimeIntervalBase
1641 inline TTimeIntervalMinutes();
1642 inline TTimeIntervalMinutes(TInt aInterval);
1643 inline TTimeIntervalMinutes& operator=(TInt aInterval);
1653 Represents a time interval in hours.
1655 Comparison and interval retrieval functions
1656 are provided by the base class TTimeIntervalBase.
1658 class TTimeIntervalHours : public TTimeIntervalBase
1661 inline TTimeIntervalHours();
1662 inline TTimeIntervalHours(TInt aInterval);
1663 inline TTimeIntervalHours& operator=(TInt aInterval);
1673 Represents a time interval in days.
1675 Comparison and interval retrieval functions
1676 are provided by the base class TTimeIntervalBase.
1678 class TTimeIntervalDays : public TTimeIntervalBase
1681 inline TTimeIntervalDays();
1682 inline TTimeIntervalDays(TInt aInterval);
1683 inline TTimeIntervalDays& operator=(TInt aInterval);
1693 Represents a time interval in months.
1695 Comparison and interval retrieval functions
1696 are provided by the base class TTimeIntervalBase.
1698 class TTimeIntervalMonths : public TTimeIntervalBase
1701 inline TTimeIntervalMonths();
1702 inline TTimeIntervalMonths(TInt aInterval);
1703 inline TTimeIntervalMonths& operator=(TInt aInterval);
1713 Represents a time interval in years.
1715 Comparison and interval retrieval functions
1716 are provided by the base class TTimeIntervalBase.
1718 class TTimeIntervalYears : public TTimeIntervalBase
1721 inline TTimeIntervalYears();
1722 inline TTimeIntervalYears(TInt aInterval);
1723 inline TTimeIntervalYears& operator=(TInt aInterval);
1732 An enumeration one or both of whose enumerator values may be returned
1739 Indicates that a time is present.
1743 EParseTimePresent=0x1,
1745 Indicates that a date is present.
1749 EParseDatePresent=0x2
1759 Stores and manipulates the date and time.
1761 It represents a date and time as a number of microseconds since midnight,
1762 January 1st, 1 AD nominal Gregorian. BC dates are represented by negative
1763 TTime values. A TTime object may be constructed from a TInt64, a TDateTime
1764 a string literal, or by default, which initialises the time to an arbitrary
1765 value. To access human-readable time information, the TTime may be converted
1766 from a TInt64 into a TDateTime, which represents the date and time as seven
1767 numeric fields and provides functions to extract these fields. Alternatively,
1768 to display the time as text, the time may be formatted and placed into a
1769 descriptor using a variety of formatting commands and which may or may not
1770 honour the system's locale settings. The conversion between time and text may
1771 be performed the other way around, so that a descriptor can be parsed and
1772 converted into a TTime value.
1774 In addition to setting and getting the date and time and converting between
1775 text and time, TTime provides functions to get intervals between times and
1776 standard comparison and arithmetic operators which enable time intervals to
1777 be added or subtracted to or from the time.
1786 inline TTime(const TInt64& aTime);
1787 IMPORT_C TTime(const TDesC& aString);
1788 IMPORT_C TTime(const TDateTime& aDateTime);
1789 inline TTime& operator=(const TInt64& aTime);
1790 IMPORT_C TTime& operator=(const TDateTime& aDateTime);
1791 IMPORT_C void HomeTime();
1792 IMPORT_C void UniversalTime();
1793 IMPORT_C TInt Set(const TDesC& aString);
1794 IMPORT_C TInt HomeTimeSecure();
1795 IMPORT_C TInt UniversalTimeSecure();
1797 IMPORT_C TDateTime DateTime() const;
1798 IMPORT_C TTimeIntervalMicroSeconds MicroSecondsFrom(TTime aTime) const;
1799 IMPORT_C TInt SecondsFrom(TTime aTime,TTimeIntervalSeconds& aInterval) const;
1800 IMPORT_C TInt MinutesFrom(TTime aTime,TTimeIntervalMinutes& aInterval) const;
1801 IMPORT_C TInt HoursFrom(TTime aTime,TTimeIntervalHours& aInterval) const;
1802 IMPORT_C TTimeIntervalDays DaysFrom(TTime aTime) const;
1803 IMPORT_C TTimeIntervalMonths MonthsFrom(TTime aTime) const;
1804 IMPORT_C TTimeIntervalYears YearsFrom(TTime aTime) const;
1806 IMPORT_C TInt DaysInMonth() const;
1807 IMPORT_C TDay DayNoInWeek() const;
1808 IMPORT_C TInt DayNoInMonth() const;
1809 IMPORT_C TInt DayNoInYear() const;
1810 IMPORT_C TInt DayNoInYear(TTime aStartDate) const;
1811 IMPORT_C TInt WeekNoInYear() const;
1812 IMPORT_C TInt WeekNoInYear(TTime aStartDate) const;
1813 IMPORT_C TInt WeekNoInYear(TFirstWeekRule aRule) const;
1814 IMPORT_C TInt WeekNoInYear(TTime aStartDate,TFirstWeekRule aRule) const;
1815 IMPORT_C void FormatL(TDes& aDes,const TDesC& aFormat) const;
1816 IMPORT_C void FormatL(TDes& aDes,const TDesC& aFormat,const TLocale& aLocale) const;
1817 IMPORT_C void RoundUpToNextMinute();
1818 IMPORT_C TInt Parse(const TDesC& aDes,TInt aCenturyOffset=0);
1820 IMPORT_C TTime operator+(TTimeIntervalYears aYear) const;
1821 IMPORT_C TTime operator+(TTimeIntervalMonths aMonth) const;
1822 IMPORT_C TTime operator+(TTimeIntervalDays aDay) const;
1823 IMPORT_C TTime operator+(TTimeIntervalHours aHour) const;
1824 IMPORT_C TTime operator+(TTimeIntervalMinutes aMinute) const;
1825 IMPORT_C TTime operator+(TTimeIntervalSeconds aSecond) const;
1826 IMPORT_C TTime operator+(TTimeIntervalMicroSeconds aMicroSecond) const;
1827 IMPORT_C TTime operator+(TTimeIntervalMicroSeconds32 aMicroSecond) const;
1828 IMPORT_C TTime operator-(TTimeIntervalYears aYear) const;
1829 IMPORT_C TTime operator-(TTimeIntervalMonths aMonth) const;
1830 IMPORT_C TTime operator-(TTimeIntervalDays aDay) const;
1831 IMPORT_C TTime operator-(TTimeIntervalHours aHour) const;
1832 IMPORT_C TTime operator-(TTimeIntervalMinutes aMinute) const;
1833 IMPORT_C TTime operator-(TTimeIntervalSeconds aSecond) const;
1834 IMPORT_C TTime operator-(TTimeIntervalMicroSeconds aMicroSecond) const;
1835 IMPORT_C TTime operator-(TTimeIntervalMicroSeconds32 aMicroSecond) const;
1836 IMPORT_C TTime& operator+=(TTimeIntervalYears aYear);
1837 IMPORT_C TTime& operator+=(TTimeIntervalMonths aMonth);
1838 IMPORT_C TTime& operator+=(TTimeIntervalDays aDay);
1839 IMPORT_C TTime& operator+=(TTimeIntervalHours aHour);
1840 IMPORT_C TTime& operator+=(TTimeIntervalMinutes aMinute);
1841 IMPORT_C TTime& operator+=(TTimeIntervalSeconds aSecond);
1842 IMPORT_C TTime& operator+=(TTimeIntervalMicroSeconds aMicroSecond);
1843 IMPORT_C TTime& operator+=(TTimeIntervalMicroSeconds32 aMicroSecond);
1844 IMPORT_C TTime& operator-=(TTimeIntervalYears aYear);
1845 IMPORT_C TTime& operator-=(TTimeIntervalMonths aMonth);
1846 IMPORT_C TTime& operator-=(TTimeIntervalDays aDay);
1847 IMPORT_C TTime& operator-=(TTimeIntervalHours aHour);
1848 IMPORT_C TTime& operator-=(TTimeIntervalMinutes aMinute);
1849 IMPORT_C TTime& operator-=(TTimeIntervalSeconds aSecond);
1850 IMPORT_C TTime& operator-=(TTimeIntervalMicroSeconds aMicroSecond);
1851 IMPORT_C TTime& operator-=(TTimeIntervalMicroSeconds32 aMicroSecond);
1852 inline TBool operator==(TTime aTime) const;
1853 inline TBool operator!=(TTime aTime) const;
1854 inline TBool operator>=(TTime aTime) const;
1855 inline TBool operator<=(TTime aTime) const;
1856 inline TBool operator>(TTime aTime) const;
1857 inline TBool operator<(TTime aTime) const;
1858 inline const TInt64& Int64() const;
1860 static TTime Convert(const TDateTime& aDateTime);
1873 A utility class whose functions may be used by the other date/time related
1879 IMPORT_C static TTime NullTTime();
1880 IMPORT_C static TTime MaxTTime();
1881 IMPORT_C static TTime MinTTime();
1882 IMPORT_C static TInt DaysInMonth(TInt aYear, TMonth aMonth);
1883 IMPORT_C static TBool IsLeapYear(TInt aYear);
1884 IMPORT_C static TInt LeapYearsUpTo(TInt aYear);
1894 Gets a copy of the current locale's full text name for a day of the week.
1896 After construction or after a call to Set(), the copy of the text can be accessed
1897 and manipulated using the standard descriptor member functions provided by
1902 class TDayName : public TBuf<KMaxDayName>
1905 IMPORT_C TDayName();
1906 IMPORT_C TDayName(TDay aDay);
1907 IMPORT_C void Set(TDay aDay);
1917 Gets a copy of the current locale's abbreviated text name for a day of the
1920 After construction or after a call to Set(), the copy of the abbreviated text
1921 can be accessed and manipulated using the standard descriptor member functions
1922 provided by the base class.
1924 The abbreviated day name cannot be assumed to be one character. In English,
1925 it is 3 characters (Mon, Tue, Wed etc.), but the length can vary from locale
1926 to locale, with a maximum length of KMaxDayNameAbb.
1930 class TDayNameAbb : public TBuf<KMaxDayNameAbb>
1933 IMPORT_C TDayNameAbb();
1934 IMPORT_C TDayNameAbb(TDay aDay);
1935 IMPORT_C void Set(TDay aDay);
1945 Gets a copy of the current locale's full text name for a month.
1947 After construction or after a call to Set(), the copy of the text can be accessed
1948 and manipulated using the standard descriptor member functions provided by
1953 class TMonthName : public TBuf<KMaxMonthName>
1956 IMPORT_C TMonthName();
1957 IMPORT_C TMonthName(TMonth aMonth);
1958 IMPORT_C void Set(TMonth aMonth);
1968 Gets a copy of the current locale's abbreviated text name for a month.
1970 After construction or after a call to Set(), the copy of the abbreviated text
1971 can be accessed and manipulated using the standard descriptor member functions
1972 provided by the base class.
1974 @see KMaxMonthNameAbb
1976 class TMonthNameAbb : public TBuf<KMaxMonthNameAbb>
1979 IMPORT_C TMonthNameAbb();
1980 IMPORT_C TMonthNameAbb(TMonth aMonth);
1981 IMPORT_C void Set(TMonth aMonth);
1991 Gets a copy of the current locale's date suffix text for a specific day in
1994 The text is the set of characters which can be appended to dates of the month
1995 (e.g. in English, st for 1st, nd for 2nd etc).
1997 After construction or after a call to Set(), the copy of the suffix text can
1998 be accessed and manipulated using the standard descriptor member functions
1999 provided by the base class.
2001 class TDateSuffix : public TBuf<KMaxSuffix>
2004 IMPORT_C TDateSuffix();
2005 IMPORT_C TDateSuffix(TInt aDateSuffix);
2006 IMPORT_C void Set(TInt aDateSuffix);
2016 Current locale's am/pm text
2018 This class retrieves a copy of the current locale's text identifying time
2019 before and after noon. In English, this is am and pm.
2021 After construction or after a call to Set(), the copy of the text can be accessed
2022 and manipulated using the standard descriptor member functions provided by
2025 class TAmPmName : public TBuf<KMaxAmPmName>
2028 IMPORT_C TAmPmName();
2029 IMPORT_C TAmPmName(TAmPm aSelector);
2030 IMPORT_C void Set(TAmPm aSelector);
2040 Gets a copy of the currency symbol(s) in use by the current locale.
2042 After construction or after a call to TCurrencySymbol::Set(), the copy of
2043 the currency symbol(s) can be accessed and manipulated using the standard
2044 descriptor member functions provided by the base class.
2046 class TCurrencySymbol : public TBuf<KMaxCurrencySymbol>
2049 IMPORT_C TCurrencySymbol();
2050 IMPORT_C void Set();
2060 Contains a format list that defines the short date format.
2062 An instance of this class should be passed as the second argument
2063 to TTime::FormatL().
2064 The string does not include any time components. The content of the long
2065 date format specification is taken from the system-wide settings.
2067 For example, in the English locale, the short date format would be something
2070 This class is used as follows:
2075 TBuf<KMaxShortDateFormatSpec*2> buffer;
2076 now.FormatL(buffer,TShortDateFormatSpec());
2079 @see KMaxShortDateFormatSpec
2082 class TShortDateFormatSpec : public TBuf<KMaxShortDateFormatSpec> // to be passed into TTime::FormatL
2085 IMPORT_C TShortDateFormatSpec();
2086 IMPORT_C void Set();
2096 Contains a format list that defines the long date format.
2098 An instance of this class should be passed as the second argument
2099 to TTime::FormatL().
2100 The string does not include any time components. The content of the long
2101 date format specification is taken from the system-wide settings.
2103 For example, in the English locale, the long date format would be
2104 something like 14th January 2000.
2106 This class is used as follows:
2111 TBuf<KMaxLongDateFormatSpec*2> buffer;
2112 now.FormatL(buffer,TLongDateFormatSpec());
2115 @see KMaxLongDateFormatSpec
2118 class TLongDateFormatSpec : public TBuf<KMaxLongDateFormatSpec> // to be passed into TTime::FormatL
2121 IMPORT_C TLongDateFormatSpec();
2122 IMPORT_C void Set();
2132 Contains a format list that defines the time string format.
2134 An instance of this class should be passed as the second argument
2135 to TTime::FormatL().
2136 The string does not include any time components. The content of the time format
2137 specification is taken from the system-wide settings.
2139 This class is used as follows:
2144 TBuf<KMaxTimeFormatSpec*2> buffer;
2145 now.FormatL(buffer,TTimeFormatSpec());
2148 @see KMaxTimeFormatSpec
2151 class TTimeFormatSpec : public TBuf<KMaxTimeFormatSpec> // to be passed into TTime::FormatL
2154 IMPORT_C TTimeFormatSpec();
2155 IMPORT_C void Set();
2165 Sets and gets the system's locale settings.
2167 Symbian OS maintains the locale information internally. On
2168 construction, this object is initialized with the system information
2169 for all locale items.
2176 Indicates how negative currency values are formatted.
2178 enum TNegativeCurrencyFormat
2181 A minus sign is inserted before the currency symbol and value.
2186 The currency value and symbol are enclosed in brackets (no minus sign
2189 EInBrackets, //this one must be non-zero for binary compatibility with the old TBool TLocale::iCurrencyNegativeInBrackets which was exposed in the binary interface because it was accessed via *inline* functions
2192 A minus sign is inserted after the currency symbol and value.
2197 A minus sign is inserted between the currency symbol and the value.
2199 EInterveningMinusSign
2203 Flags for negative currency values formatting
2208 If this flag is set and the currency value being formatted is negative,
2209 if there is a space between the currency symbol and the value,
2212 EFlagNegativeLoseSpace = 0x00000001,
2215 If this flag is set and the currency value being formatted is negative,
2216 the position of the currency symbol is placed in the opposite direction
2217 from the position set for the positive currency value.
2219 EFlagNegativeCurrencySymbolOpposite=0x00000002
2221 /** Indicates how the device universal time is maintained */
2222 enum TDeviceTimeState
2224 /** Universal time is maintained by the device RTC and the user selection
2225 of the locale of the device indicating offset from GMT and daylight saving*/
2228 /** Universal time and offset from GMT is supplied by the mobile network
2229 and maintained by device RTC */
2230 ENITZNetworkTimeSync
2234 inline TLocale(TInt);
2235 IMPORT_C void Refresh();
2236 IMPORT_C TInt Set() const;
2237 IMPORT_C void FormatCurrency(TDes& aText, TInt aAmount);
2238 IMPORT_C void FormatCurrency(TDes& aText, TInt64 aAmount);
2239 IMPORT_C void FormatCurrency(TDes& aText, TDesOverflow& aOverflowHandler, TInt aAmount);
2240 IMPORT_C void FormatCurrency(TDes& aText, TDesOverflow& aOverflowHandler, TInt64 aAmount);
2242 inline TInt CountryCode() const;
2243 inline void SetCountryCode(TInt aCode);
2244 inline TTimeIntervalSeconds UniversalTimeOffset() const;
2245 inline TDateFormat DateFormat() const;
2246 inline void SetDateFormat(TDateFormat aFormat);
2247 inline TTimeFormat TimeFormat() const;
2248 inline void SetTimeFormat(TTimeFormat aFormat);
2249 inline TLocalePos CurrencySymbolPosition() const;
2250 inline void SetCurrencySymbolPosition(TLocalePos aPos);
2251 inline TBool CurrencySpaceBetween() const;
2252 inline void SetCurrencySpaceBetween(TBool aSpace);
2253 inline TInt CurrencyDecimalPlaces() const;
2254 inline void SetCurrencyDecimalPlaces(TInt aPlaces);
2255 inline TBool CurrencyNegativeInBrackets() const; // These two functions are deprecated
2256 inline void SetCurrencyNegativeInBrackets(TBool aBool); // They are here to maintain compatibility. Use the New functions -> NegativeCurrencyFormat setter/getter.
2257 inline TBool CurrencyTriadsAllowed() const;
2258 inline void SetCurrencyTriadsAllowed(TBool aBool);
2259 inline TChar ThousandsSeparator() const;
2260 inline void SetThousandsSeparator(const TChar& aChar);
2261 inline TChar DecimalSeparator() const;
2262 inline void SetDecimalSeparator(const TChar& aChar);
2263 inline TChar DateSeparator(TInt aIndex) const;
2264 inline void SetDateSeparator(const TChar& aChar,TInt aIndex);
2265 inline TChar TimeSeparator(TInt aIndex) const;
2266 inline void SetTimeSeparator(const TChar& aChar,TInt aIndex);
2267 inline TBool AmPmSpaceBetween() const;
2268 inline void SetAmPmSpaceBetween(TBool aSpace);
2269 inline TLocalePos AmPmSymbolPosition() const;
2270 inline void SetAmPmSymbolPosition(TLocalePos aPos);
2271 inline TUint DaylightSaving() const;
2272 inline TBool QueryHomeHasDaylightSavingOn() const;
2273 inline TDaylightSavingZone HomeDaylightSavingZone() const;
2274 inline TUint WorkDays() const;
2275 inline void SetWorkDays(TUint aMask);
2276 inline TDay StartOfWeek() const;
2277 inline void SetStartOfWeek(TDay aDay);
2278 inline TClockFormat ClockFormat() const;
2279 inline void SetClockFormat(TClockFormat aFormat);
2280 inline TUnitsFormat UnitsGeneral() const;
2281 inline void SetUnitsGeneral(TUnitsFormat aFormat);
2282 inline TUnitsFormat UnitsDistanceShort() const;
2283 inline void SetUnitsDistanceShort(TUnitsFormat aFormat);
2284 inline TUnitsFormat UnitsDistanceLong() const;
2285 inline void SetUnitsDistanceLong(TUnitsFormat aFormat);
2286 inline TNegativeCurrencyFormat NegativeCurrencyFormat() const;
2287 inline void SetNegativeCurrencyFormat(TNegativeCurrencyFormat aNegativeCurrencyFormat);
2288 inline TBool NegativeLoseSpace() const;
2289 inline void SetNegativeLoseSpace(TBool aBool);
2290 inline TBool NegativeCurrencySymbolOpposite() const;
2291 inline void SetNegativeCurrencySymbolOpposite(TBool aBool);
2292 inline TLanguage LanguageDowngrade(TInt aIndex) const; // 0 <= aIndex < 3
2293 inline void SetLanguageDowngrade(TInt aIndex, TLanguage aLanguage);
2294 inline TDigitType DigitType() const;
2295 inline void SetDigitType(TDigitType aDigitType);
2296 inline TDeviceTimeState DeviceTime() const;
2297 inline void SetDeviceTime(TDeviceTimeState aState);
2298 inline TInt RegionCode() const;
2300 void SetDefaults(); /**< @internalComponent */
2303 friend class TExtendedLocale;
2306 TTimeIntervalSeconds iUniversalTimeOffset;
2307 TDateFormat iDateFormat;
2308 TTimeFormat iTimeFormat;
2309 TLocalePos iCurrencySymbolPosition;
2310 TBool iCurrencySpaceBetween;
2311 TInt iCurrencyDecimalPlaces;
2312 TNegativeCurrencyFormat iNegativeCurrencyFormat; // replaced TBool iCurrencyNegativeInBrackets
2313 TBool iCurrencyTriadsAllowed;
2314 TChar iThousandsSeparator;
2315 TChar iDecimalSeparator;
2316 TChar iDateSeparator[KMaxDateSeparators];
2317 TChar iTimeSeparator[KMaxTimeSeparators];
2318 TLocalePos iAmPmSymbolPosition;
2319 TBool iAmPmSpaceBetween;
2320 TUint iDaylightSaving;
2321 TDaylightSavingZone iHomeDaylightSavingZone;
2324 TClockFormat iClockFormat;
2325 TUnitsFormat iUnitsGeneral;
2326 TUnitsFormat iUnitsDistanceShort;
2327 TUnitsFormat iUnitsDistanceLong;
2328 TUint iExtraNegativeCurrencyFormatFlags;
2329 TUint16 iLanguageDowngrade[3];
2330 TUint16 iRegionCode;
2331 TDigitType iDigitType;
2332 TDeviceTimeState iDeviceTimeState;
2342 Enumeration used with TExtendedLocale::LoadLocaleAspect to select which
2343 locale information is to be replaced from the contents of the Locale
2346 ELocaleLanguageSettings - Replaces everything that should change with
2347 language selection e.g. Month names, Day names,
2350 ELocaleLocaleSettings - Replaces the currently selected currency symbol,
2351 TLocale settings, and FAT utility functions
2353 ELocaleTimeAndDateSettings - Replaces the current time and date display
2356 ELocaleCollateSettings - Replaces the "system" preferred Charset
2357 (because that's where the collation table
2358 is!). The "Default" charset will remain
2359 unchanged until after the next power
2364 ELocaleLanguageSettings = 0x01,
2365 ELocaleCollateSetting = 0x02,
2366 ELocaleLocaleSettings = 0x04,
2367 ELocaleTimeDateSettings = 0x08,
2373 struct SLocaleLanguage
2375 TLanguage iLanguage;
2376 const TText* iDateSuffixTable;
2377 const TText* iDayTable;
2378 const TText* iDayAbbTable;
2379 const TText* iMonthTable;
2380 const TText* iMonthAbbTable;
2381 const TText* iAmPmTable;
2382 const TText16* const* iMsgTable;
2388 struct SLocaleLocaleSettings
2390 TText iCurrencySymbol[KMaxCurrencySymbol+1];
2391 TAny* iLocaleExtraSettingsDllPtr;
2397 struct SLocaleTimeDateFormat
2399 TText iShortDateFormatSpec[KMaxShortDateFormatSpec+1];
2400 TText iLongDateFormatSpec[KMaxLongDateFormatSpec+1];
2401 TText iTimeFormatSpec[KMaxTimeFormatSpec+1];
2402 TAny* iLocaleTimeDateFormatDllPtr;
2411 Extended locale class
2413 This class holds a collection of locale information. It contains a TLocale internally.
2414 It has methods to load a locale DLL and to set the system wide locale information.
2417 class TExtendedLocale
2421 // Default constructor, create an empty instance
2422 IMPORT_C TExtendedLocale();
2424 // Initialise to (or restore from!) current system wide locale
2426 IMPORT_C void LoadSystemSettings();
2428 // Overwrite current system wide locale settings with the current
2429 // contents of this TExtendedLocale
2430 IMPORT_C TInt SaveSystemSettings();
2432 //load a complete locale data from a single locale dll
2433 IMPORT_C TInt LoadLocale(const TDesC& aLocaleDllName);
2435 //load a complete locale data from three locale dlls, which are language lcoale dll, region locale dll, and collation locale dll.
2436 IMPORT_C TInt LoadLocale(const TDesC& aLanguageLocaleDllName, const TDesC& aRegionLocaleDllName, const TDesC& aCollationLocaleDllName);
2438 // Load an additional Locale DLL and over-ride a selected subset
2439 // (currently ELocaleLanguageSettings to select an alternative set
2440 // of language specific text strings, ELocaleCollateSetting to
2441 // select a new system collation table,
2442 // ELocaleOverRideMatchCollationTable to locally select an
2443 // alternative collation order for matching text strings, or
2444 // ELocaleOverRideSortCollationTable for ordering text strings)
2445 // of settings with its contents
2446 IMPORT_C TInt LoadLocaleAspect(TUint aAspectGroup, const TDesC& aLocaleDllName);
2448 //load a locale aspect from a locale dll.
2449 //Such as load language locale aspect from locale language dll;
2450 //load region locale aspect from locale region dll;
2451 //load collation locale aspect from locale collation dll.
2452 //There are in all three aspect, which are langauge, region, and collation.
2453 IMPORT_C TInt LoadLocaleAspect(const TDesC& aLocaleDllName);
2455 // Set the currency Symbol
2456 IMPORT_C TInt SetCurrencySymbol(const TDesC &aSymbol);
2458 // Get the name of the DLL holding the data for a particular set
2459 // of Locale properties
2460 IMPORT_C TInt GetLocaleDllName(TLocaleAspect aLocaleDataSet, TDes& aDllName);
2462 // Get the preferred collation method.
2463 // Note that some Charsets may contain more than one Collation
2464 // method (e.g "dictionary" v "phonebook" ordering) so an optional
2465 // index parameter can be used to select between them
2466 IMPORT_C TCollationMethod GetPreferredCollationMethod(TInt index = 0) ;
2468 //Get the Currency Symbol
2469 IMPORT_C TPtrC GetCurrencySymbol();
2471 //Get the Long Date Format
2472 IMPORT_C TPtrC GetLongDateFormatSpec();
2474 //Get the Short Date Format
2475 IMPORT_C TPtrC GetShortDateFormatSpec();
2477 //Get the Time Format
2478 IMPORT_C TPtrC GetTimeFormatSpec();
2480 // Retrieve a reference to the encapsulated TLocale
2481 inline TLocale* GetLocale();
2485 TInt DoLoadLocale(const TDesC& aLocaleDllName, TLibraryFunction* aExportList);
2486 void DoUpdateLanguageSettings(TLibraryFunction* aExportList);
2487 void DoUpdateLocaleSettings(TLibraryFunction* aExportList);
2488 void DoUpdateTimeDateFormat(TLibraryFunction* aExportList);
2490 #ifdef SYMBIAN_DISTINCT_LOCALE_MODEL
2491 void DoUpdateLanguageSettingsV2(TLibraryFunction* aExportList);
2492 void DoUpdateLocaleSettingsV2(TLibraryFunction* aExportList);
2493 TInt CheckLocaleDllName(const TDesC& aLocaleDllName, TInt& languageID);
2494 void AddExtension(TDes& aFileName, TInt aExtension);
2500 SLocaleLanguage iLanguageSettings;
2501 SLocaleLocaleSettings iLocaleExtraSettings;
2502 SLocaleTimeDateFormat iLocaleTimeDateFormat;
2503 const LCharSet* iDefaultCharSet;
2504 const LCharSet* iPreferredCharSet;
2514 Geometric rectangle.
2516 The class represents a rectangle whose sides are parallel with the axes of
2517 the co-ordinate system.
2519 The co-ordinates of the top-left and bottom-right corners are used to set
2520 the dimensions of the rectangle. The bottom right co-ordinate is outside the
2521 rectangle. Thus TRect(TPoint(2,2),TSize(4,4)) is equal
2522 to TRect(TPoint(2,2),TPoint(6,6)),
2523 and in both cases you get a 4x4 pixel rectangle on the screen.
2525 Functions are provided to initialise and manipulate the rectangle and to extract
2526 information about it.
2531 enum TUninitialized { EUninitialized };
2533 Constructs a default rectangle.
2535 This initialises the co-ordinates of its top
2536 left and bottom right corners to (0,0).
2538 TRect(TUninitialized) {}
2540 IMPORT_C TRect(TInt aAx,TInt aAy,TInt aBx,TInt aBy);
2541 IMPORT_C TRect(const TPoint& aPointA,const TPoint& aPointB);
2542 IMPORT_C TRect(const TPoint& aPoint,const TSize& aSize);
2543 IMPORT_C TRect(const TSize& aSize);
2544 IMPORT_C TBool operator==(const TRect& aRect) const;
2545 IMPORT_C TBool operator!=(const TRect& aRect) const;
2546 IMPORT_C void SetRect(TInt aAx,TInt aAy,TInt aBx,TInt aBy);
2547 IMPORT_C void SetRect(const TPoint& aPointTL,const TPoint& aPointBR);
2548 IMPORT_C void SetRect(const TPoint& aPoint,const TSize& aSize);
2549 IMPORT_C void Move(TInt aDx,TInt aDy);
2550 IMPORT_C void Move(const TPoint& aOffset);
2551 IMPORT_C void Resize(TInt aDx,TInt aDy);
2552 IMPORT_C void Resize(const TSize& aSize);
2553 IMPORT_C void Shrink(TInt aDx,TInt aDy);
2554 IMPORT_C void Shrink(const TSize& aSize);
2555 IMPORT_C void Grow(TInt aDx,TInt aDy);
2556 IMPORT_C void Grow(const TSize& aSize);
2557 IMPORT_C void BoundingRect(const TRect& aRect);
2558 IMPORT_C TBool IsEmpty() const;
2559 IMPORT_C TBool Intersects(const TRect& aRect) const;
2560 IMPORT_C void Intersection(const TRect& aRect);
2561 IMPORT_C void Normalize();
2562 IMPORT_C TBool Contains(const TPoint& aPoint) const;
2563 IMPORT_C TSize Size() const;
2564 IMPORT_C TInt Width() const;
2565 IMPORT_C TInt Height() const;
2566 IMPORT_C TBool IsNormalized() const;
2567 IMPORT_C TPoint Center() const;
2568 IMPORT_C void SetSize(const TSize& aSize);
2569 IMPORT_C void SetWidth(TInt aWidth);
2570 IMPORT_C void SetHeight(TInt aHeight);
2572 void Adjust(TInt aDx,TInt aDy);
2575 The x and y co-ordinates of the top left hand corner of the rectangle.
2580 The x and y co-ordinates of the bottom right hand corner of the rectangle.
2592 Clipping region - abstract base class.
2594 This abstract base class represents a 2-dimensional area which is used by
2595 Graphics, the graphics window server, and the text window server to define
2596 regions of the display which need to be updated, or regions within which all
2597 operations must occur.
2599 A TRegion is defined in terms of an array of TRects and the more complex the
2600 region, the more TRects are required to represent it.
2602 A clipping region initially has space allocated for five rectangles.
2603 If manipulations result in a region which requires more than this, an attempt
2604 is made to allocate more rectangles. If this cannot be done, an error flag
2605 is set, and all subsequent operations involving the region have no effect
2606 (except possibly to propagate the error flag to other regions).
2607 The CheckError() member function allows
2608 the error flag to be tested; Clear() can be used to clear it.
2610 The redraw logic of application programs may use the TRegion in various ways:
2612 1. minimally, they pass it to the graphics context as the clipping region; when
2613 a graphics context is activated to a window, the clipping region is set up
2616 2. if they wish to avoid redrawing objects which are outside the general area
2617 of the region, they may use TRegion::BoundingRect() to return the rectangle
2618 which bounds the clipping region, and draw only primitives that lie within
2621 3. if they wish to exercise finer control, they may extract the individual rectangles
2622 that comprise the clipping region using Operator[]().
2624 Application programs may also manipulate clipping regions in order to constrain
2625 parts of their redrawing to narrower areas of the screen than the clipping
2626 region offered by the window server. To do this, functions that allow clipping
2627 region manipulation may be used; for example, adding or removing rectangles
2628 or finding the intersection or union of two regions.
2633 inline TInt Count() const;
2634 inline const TRect* RectangleList() const;
2635 inline TBool CheckError() const;
2636 IMPORT_C TBool IsEmpty() const;
2637 IMPORT_C TRect BoundingRect() const;
2638 IMPORT_C const TRect& operator[](TInt aIndex) const;
2639 IMPORT_C void Copy(const TRegion& aRegion);
2640 IMPORT_C void AddRect(const TRect& aRect);
2641 IMPORT_C void SubRect(const TRect& aRect,TRegion* aSubtractedRegion=NULL);
2642 IMPORT_C void Offset(TInt aXoffset,TInt aYoffset);
2643 IMPORT_C void Offset(const TPoint& aOffset);
2644 IMPORT_C void Union(const TRegion& aRegion);
2645 IMPORT_C void Intersection(const TRegion& aRegion,const TRegion& aRegion2);
2646 IMPORT_C void Intersect(const TRegion& aRegion);
2647 IMPORT_C void SubRegion(const TRegion& aRegion,TRegion* aSubtractedRegion=NULL);
2648 IMPORT_C void ClipRect(const TRect& aRect);
2649 IMPORT_C void Clear();
2650 IMPORT_C void Tidy();
2651 IMPORT_C TInt Sort();
2652 IMPORT_C TInt Sort(const TPoint& aOffset);
2653 IMPORT_C void ForceError();
2654 IMPORT_C TBool IsContainedBy(const TRect& aRect) const;
2655 IMPORT_C TBool Contains(const TPoint& aPoint) const;
2656 IMPORT_C TBool Intersects(const TRect& aRect) const;
2658 IMPORT_C TRect* RectangleListW();
2659 IMPORT_C TRegion(TInt aAllocedRects);
2661 TBool SetListSize(TInt aCount);
2662 void AppendRect(const TRect& aRect);
2663 void DeleteRect(TRect* aRect);
2664 void AppendRegion(TRegion& aRegion);
2665 void MergeRect(const TRect& aRect, TBool aEnclosed);
2666 void SubtractRegion(const TRegion &aRegion,TRegion *aSubtractedRegion=NULL);
2667 void ShrinkRegion();
2668 TRect* ExpandRegion(TInt aCount);
2674 enum {ERRegionBuf=0x40000000};
2686 This class provides for the construction and destruction of a TRegion, including
2687 a granularity for expanding the region. A region;s granularity represents
2688 the number of memory slots allocated when the object is created, and the number
2689 of new memory slots allocated each time an RRegion is expanded beyond the
2690 number of free slots. The default granularity is five.
2692 class RRegion : public TRegion
2695 enum {EDefaultGranularity=5};
2697 IMPORT_C RRegion(TInt aBuf,TInt aGran);
2700 IMPORT_C RRegion(TInt aGran);
2701 IMPORT_C RRegion(const RRegion& aRegion);
2702 IMPORT_C RRegion(const TRect& aRect,TInt aGran=EDefaultGranularity);
2703 IMPORT_C RRegion(TInt aCount,TRect* aRectangleList,TInt aGran=EDefaultGranularity);
2704 IMPORT_C void Close();
2705 IMPORT_C void Destroy();
2706 inline TInt CheckSpare() const;
2709 TRect* iRectangleList;
2710 friend class TRegion;
2720 Region with pre-allocated buffer.
2722 This class provides the functionality of an RRegion, but in addition, for
2723 optimisation purposes, uses a buffer containing pre-allocated space for as
2724 many rectangles as are specified in the granularity.
2726 When this buffer is full, cell allocation takes place as for an RRegion, and
2727 the RRegionBuf effectively becomes an RRegion. In this case, the region does
2728 not revert to using the buffer, even if the region were to shrink so that
2729 the buffer could, once again, contain the region. When the region is no longer
2730 required, call Close(), defined in the base class RRegion, to free up all
2734 class RRegionBuf : public RRegion
2737 inline RRegionBuf();
2738 inline RRegionBuf(const RRegion& aRegion);
2739 inline RRegionBuf(const RRegionBuf<S>& aRegion);
2740 inline RRegionBuf(const TRect& aRect);
2742 TInt8 iRectangleBuf[S*sizeof(TRect)];
2752 A fixed size region.
2754 The region consists of a fixed number of rectangles; this number is specified
2755 in the templated argument. The region cannot be expanded to contain more than
2756 this number of rectangles. If an attempt is made to do so, the region's
2757 error flag is set, and the region is cleared.
2759 Note that when adding a rectangle to a region, if that rectangle overlaps
2760 an existing rectangle, the operation causes more than one rectangle to be
2764 class TRegionFix : public TRegion
2767 inline TRegionFix();
2768 inline TRegionFix(const TRect& aRect);
2769 inline TRegionFix(const TRegionFix<S>& aRegion);
2771 TInt8 iRectangleBuf[S*sizeof(TRect)];
2781 Base class for searching for global kernel objects.
2783 This is the base class for a number of classes which are used to find specific
2784 types of global kernel object such as semaphores, threads and mutexes;
2785 TFindSemaphore, TFindThread and TFindMutex are typical examples of such
2788 The class implements the common behaviour, specifically, the storage of the
2789 match pattern which is used to search for object names.
2791 This class is not intended to be explicitly instantiated; it has public
2792 constructors but they are part of the class implementation and are described
2793 for information only.
2795 class TFindHandleBase : public TFindHandle
2798 IMPORT_C TFindHandleBase();
2799 IMPORT_C TFindHandleBase(const TDesC& aMatch);
2800 IMPORT_C void Find(const TDesC& aMatch);
2802 TInt NextObject(TFullName& aResult,TInt aObjectType);
2806 The full name of the last kernel side object found.
2818 Finds all global semaphores whose full names match a specified pattern.
2820 The match pattern can be set into the TFindSemaphore object at construction;
2821 it can also be changed at any time after construction by using the Find()
2822 member function of the TFindHandleBase base class.
2824 After construction, the Next() member function can be used repeatedly to find
2825 successive global semaphores whose full names match the current pattern.
2827 A successful call to Next() means that a matching global semaphore has been
2828 found. To open a handle on this semaphore, call the RSemaphore::Open() function
2829 and pass a reference to this TFindSemaphore.
2831 Pattern matching is part of descriptor behaviour.
2833 @see TFindHandleBase::Find
2834 @see TFindSemaphore::Next
2835 @see RSemaphore::Open
2839 class TFindSemaphore : public TFindHandleBase
2842 inline TFindSemaphore();
2843 inline TFindSemaphore(const TDesC& aMatch);
2844 IMPORT_C TInt Next(TFullName& aResult);
2854 Finds all global mutexes whose full names match a specified pattern.
2856 The match pattern can be set into the object at construction; it can also
2857 be changed at any time after construction by using the Find() member function
2860 After construction, the Next() member function may be used repeatedly to find
2861 successive global mutexes whose full names match the current pattern.
2863 A successful call to Next() means that a matching global mutex has been found.
2864 To open a handle on this mutex, call the Open() member function of RMutex
2865 and pass a reference to this TFindMutex object.
2867 Pattern matching is part of descriptors behaviour.
2869 @see TFindHandleBase::Find
2870 @see TFindMutex::Next
2875 class TFindMutex : public TFindHandleBase
2878 inline TFindMutex();
2879 inline TFindMutex(const TDesC& aMatch);
2880 IMPORT_C TInt Next(TFullName& aResult);
2890 Searches for all global chunks by pattern matching against the names of (Kernel
2891 side) chunk objects.
2893 The match pattern can be set into this object at construction; it can also
2894 be changed at any time after construction by using TFindHandleBase::Find().
2896 After construction, call TFindChunk::Next() repeatedly to find successive
2897 chunks whose names match the current pattern. A successful call
2898 to TFindChunk::Next() means that a matching chunk has been found.
2900 @see TFindHandleBase
2902 class TFindChunk : public TFindHandleBase
2905 inline TFindChunk();
2906 inline TFindChunk(const TDesC& aMatch);
2907 IMPORT_C TInt Next(TFullName& aResult);
2918 Searches for threads by pattern matching against the names
2921 The match pattern can be set into this object at construction; it can also be
2922 changed at any time after construction by using TFindHandleBase::Find().
2924 After construction, call TFindThread::Next() repeatedly to find successive
2925 threads whose names match the current pattern.
2926 A successful call to TFindThread::Next() means that a matching thread has
2927 been found. To open a handle on this thread, call RThread::Open() and pass
2928 a reference to this TFindThread.
2932 class TFindThread : public TFindHandleBase
2935 inline TFindThread();
2936 inline TFindThread(const TDesC& aMatch);
2937 IMPORT_C TInt Next(TFullName& aResult);
2947 Searches for processes by pattern matching against the names
2950 The match pattern can be set into this object at construction; it can also be
2951 changed at any time after construction by using TFindHandleBase::Find().
2953 After construction, call TFindProcess::Next() repeatedly to find successive
2954 processes whose names match the current pattern.
2955 A successful call to TFindProcess::Next() means that a matching process has
2956 been found. To open a handle on this process, call RProcess::Open() and pass
2957 a reference to this TFindProcess.
2961 class TFindProcess : public TFindHandleBase
2964 inline TFindProcess();
2965 inline TFindProcess(const TDesC& aMatch);
2966 IMPORT_C TInt Next(TFullName& aResult);
2975 Searches for LDD factory objects by pattern matching against the names of
2976 LDD factory objects.
2978 An LDD factory object is an instance of a DLogicalDevice derived class.
2980 The match pattern can be set into this object at construction; it can also
2981 be changed at any time after construction by using TFindHandleBase::Find().
2983 After construction, call TFindLogicalDevice::Next() repeatedly to find successive
2984 LDD factory objects whose names match the current pattern. A successful call to
2985 TFindLogicalDevice::Next() means that a matching LDD factory object has been found.
2987 The name of an LDD factory object is set by its Install() member function as
2988 part of the construction process.
2990 class TFindLogicalDevice : public TFindHandleBase
2993 inline TFindLogicalDevice();
2994 inline TFindLogicalDevice(const TDesC& aMatch);
2995 IMPORT_C TInt Next(TFullName& aResult);
3002 Searches for PDD factory objects by pattern matching against the names of
3003 PDD factory objects.
3005 A PDD factory object is an instance of a DPhysicalDevice derived class.
3007 The match pattern can be set into this object at construction; it can also be
3008 changed at any time after construction by using TFindHandleBase::Find().
3010 After construction, call TFindPhysicalDevice::Next() repeatedly to find successive
3011 PDD factory objects whose names match the current pattern. A successful call to
3012 TFindPhysicalDevice::Next() means that a matching PDD factory object has been found.
3014 The name of a PDD factory object is set by its Install() member function as part
3015 of the construction process.
3017 class TFindPhysicalDevice : public TFindHandleBase
3020 inline TFindPhysicalDevice();
3021 inline TFindPhysicalDevice(const TDesC& aMatch);
3022 IMPORT_C TInt Next(TFullName& aResult);
3033 Searches for servers by pattern matching against the names of kernel side
3036 The match pattern can be set into this object at construction; it can also
3037 be changed at any time after construction by using the TFindHandleBase::Find()
3040 After construction, call TFindServer::Next() repeatedly to find successive
3041 servers whose names match the current pattern.
3042 A successful call to TFindServer::Next() means that a matching server
3045 class TFindServer : public TFindHandleBase
3048 inline TFindServer();
3049 inline TFindServer(const TDesC& aMatch);
3050 IMPORT_C TInt Next(TFullName& aResult);
3060 Searches for DLLs whose full names match a specified pattern.
3062 The match pattern is set at construction but can also be changed at any time
3063 after construction by using TFindHandleBase::Find().
3065 After construction, use TFindLibrary::Next() to repeatedly find successive DLLs
3066 whose names match the current pattern. A successful call to
3067 TFindLibrary::Next() means that a matching DLL has been found.
3069 class TFindLibrary : public TFindHandleBase
3072 inline TFindLibrary();
3073 inline TFindLibrary(const TDesC& aMatch);
3074 IMPORT_C TInt Next(TFullName& aResult);
3083 User side handle to an LDD factory object, an instance of a DLogicalDevice
3086 The LDD factory object is a Kernel side object which is constructed on the
3087 Kernel heap when the logical device is opened using User::LoadLogicalDevice().
3088 The handle allows the User side to get information about the logical device.
3090 To use the device, a thread must create and use an instance of an
3091 RBusLogicalChannel derived class.
3094 class RDevice : public RHandleBase
3097 inline TInt Open(const TFindLogicalDevice& aFind,TOwnerType aType=EOwnerProcess);
3098 IMPORT_C TInt Open(const TDesC& aName,TOwnerType aType=EOwnerProcess);
3099 IMPORT_C void GetCaps(TDes8& aDes) const;
3100 IMPORT_C TBool QueryVersionSupported(const TVersion& aVer) const;
3101 IMPORT_C TBool IsAvailable(TInt aUnit, const TDesC* aPhysicalDevice, const TDesC8* anInfo) const;
3108 Asynchronous timer services.
3110 Five types of asynchronous request are supported by the class:
3112 1. Requesting an event after a specified interval
3114 2. Requesting an event at a specified system time
3116 3. Requesting a timer event on a specific second fraction
3118 4. Requesting an event if an interval elapses with no user activity.
3120 5. Requesting an event after a specified interval, to a resolution of 1ms.
3122 Each of these requests can be cancelled.
3124 The timer exists from its creation, following a call to RTimer::CreateLocal(),
3125 until it is destroyed by a call to the Close() member function of the base
3128 This class is ultimately implemented in terms of the nanokernel tick, and
3129 therefore the granularity of the generated events is limited to the period of
3130 this timer. This is variant specific, but is usually 1 millisecond.
3132 Note that the CTimer active object uses an RTimer.
3134 class RTimer : public RHandleBase
3137 IMPORT_C TInt CreateLocal();
3138 IMPORT_C void Cancel();
3139 IMPORT_C void After(TRequestStatus& aStatus,TTimeIntervalMicroSeconds32 anInterval);
3140 IMPORT_C void AfterTicks(TRequestStatus &aStatus, TInt aTicks);
3141 IMPORT_C void At(TRequestStatus& aStatus,const TTime& aTime);
3142 IMPORT_C void AtUTC(TRequestStatus& aStatus,const TTime& aUTCTime);
3143 IMPORT_C void Lock(TRequestStatus& aStatus,TTimerLockSpec aLock);
3144 IMPORT_C void Inactivity(TRequestStatus& aStatus, TTimeIntervalSeconds aSeconds);
3145 IMPORT_C void HighRes(TRequestStatus& aStatus,TTimeIntervalMicroSeconds32 anInterval);
3155 A handle to a dynamically loadable DLL.
3157 The class is not intended for user derivation.
3159 class RLibrary : public RHandleBase
3162 IMPORT_C void Close();
3163 IMPORT_C TInt Load(const TDesC& aFileName, const TUidType& aType);
3164 IMPORT_C TInt Load(const TDesC& aFileName, const TDesC& aPath=KNullDesC);
3165 IMPORT_C TInt Load(const TDesC& aFileName, const TDesC& aPath, const TUidType& aType);
3166 IMPORT_C TInt Load(const TDesC& aFileName, const TDesC& aPath, const TUidType& aType, TUint32 aModuleVersion);
3167 IMPORT_C TInt LoadRomLibrary(const TDesC& aFileName, const TDesC& aPath);
3168 IMPORT_C TLibraryFunction Lookup(TInt anOrdinal) const;
3169 IMPORT_C TUidType Type() const;
3170 IMPORT_C TFileName FileName() const;
3171 IMPORT_C TInt GetRamSizes(TInt& aCodeSize, TInt& aConstDataSize);
3172 IMPORT_C TInt Init(); /**< @internalTechnology */
3175 Class representing information about an executable binary, (DLL or EXE).
3180 TUint32 iModuleVersion; /**< Version number */
3181 TUidType iUids; /**< UIDs */
3182 TSecurityInfo iSecurityInfo; /**< Security Info */
3186 Class representing information about an executable binary, (DLL or EXE), version 2.
3189 struct TInfoV2 : public TInfo
3191 TUint8 iHardwareFloatingPoint; /**< Which hardware floating point used, from TFloatingPointType */
3192 enum TDebugAttributes
3194 EDebugAllowed = 1<<0, ///< Flags set if executable may be debugged.
3195 ETraceAllowed = 1<<1 ///< Flags set if executable may be traced.
3197 TUint8 iDebugAttributes; ///< Bitmask of values from enum TDebugAttributes
3202 Type representing a TInfo struct packaged as a descriptor.
3205 typedef TPckgBuf<TInfo> TInfoBuf;
3208 Type representing a TInfo struct packaged as a descriptor, version 2.
3211 typedef TPckgBuf<TInfoV2> TInfoBufV2;
3216 enum TRequiredImageHeaderSize
3220 Size of header data which should be passed to GetInfoFromHeader()
3222 KRequiredImageHeaderSize = KMaxTInt
3224 KRequiredImageHeaderSize = 9*1024
3228 IMPORT_C static TInt GetInfoFromHeader(const TDesC8& aHeader, TDes8& aInfoBuf);
3232 @deprecated Use TInfo
3236 TUint32 iModuleVersion;
3243 @deprecated Use TInfoBuf
3245 typedef TPckgBuf<SInfo> SInfoBuf;
3250 IMPORT_C static TInt GetInfo(const TDesC& aFileName, TDes8& aInfoBuf);
3262 A handle to a critical section.
3264 A critical section itself is a kernel object, and is implemented using
3265 a semaphore. The class RCriticalSection inherits privately from RSemaphore
3266 as a matter of implementation and this is, in effect, equivalent to using
3269 The public functions of RSemaphore are not part of the public API of this
3272 As with all handles, they should be closed after use. This class provides
3273 the necessary Close() function, which should be called when the handle is
3276 @see RHandleBase::Close
3278 class RCriticalSection : private RSemaphore
3281 IMPORT_C RCriticalSection();
3282 IMPORT_C TInt CreateLocal(TOwnerType aType=EOwnerProcess);
3283 IMPORT_C void Close();
3284 IMPORT_C void Wait();
3285 IMPORT_C void Signal();
3286 inline TBool IsBlocked() const;
3297 A handle to a mutex.
3299 The mutex itself is a kernel side object.
3301 Handles should be closed after use. RHandleBase provides the necessary Close()
3302 function which should be called when the handle is no longer required.
3304 @see RHandleBase::Close
3306 class RMutex : public RHandleBase
3309 inline TInt Open(const TFindMutex& aFind,TOwnerType aType=EOwnerProcess);
3310 IMPORT_C TInt CreateLocal(TOwnerType aType=EOwnerProcess);
3311 IMPORT_C TInt CreateGlobal(const TDesC& aName,TOwnerType aType=EOwnerProcess);
3312 IMPORT_C TInt OpenGlobal(const TDesC& aName,TOwnerType aType=EOwnerProcess);
3313 IMPORT_C TInt Open(RMessagePtr2 aMessage,TInt aParam,TOwnerType aType=EOwnerProcess);
3314 IMPORT_C TInt Open(TInt aArgumentIndex, TOwnerType aType=EOwnerProcess);
3315 IMPORT_C void Wait();
3316 IMPORT_C void Signal();
3317 IMPORT_C TBool IsHeld();
3326 A handle to a condition variable.
3328 The condition variable itself is a kernel side object.
3330 Handles should be closed after use. RHandleBase provides the necessary Close()
3331 function which should be called when the handle is no longer required.
3333 @see RHandleBase::Close
3335 class RCondVar : public RHandleBase
3338 IMPORT_C TInt CreateLocal(TOwnerType aType=EOwnerProcess);
3339 IMPORT_C TInt CreateGlobal(const TDesC& aName, TOwnerType aType=EOwnerProcess);
3340 IMPORT_C TInt OpenGlobal(const TDesC& aName, TOwnerType aType=EOwnerProcess);
3341 IMPORT_C TInt Open(RMessagePtr2 aMessage, TInt aParam, TOwnerType aType=EOwnerProcess);
3342 IMPORT_C TInt Open(TInt aArgumentIndex, TOwnerType aType=EOwnerProcess);
3343 IMPORT_C TInt Wait(RMutex& aMutex);
3344 IMPORT_C TInt TimedWait(RMutex& aMutex, TInt aTimeout); // timeout in microseconds
3345 IMPORT_C void Signal();
3346 IMPORT_C void Broadcast();
3353 struct TChunkCreateInfo;
3358 A handle to a chunk.
3360 The chunk itself is a kernel side object.
3362 class RChunk : public RHandleBase
3366 Set of flags used by SetRestrictions().
3368 @see RChunk::SetRestrictions
3372 /** Prevent Adjust, Commit, Allocate and Decommit */
3373 EPreventAdjust = 0x01,
3376 inline TInt Open(const TFindChunk& aFind,TOwnerType aType=EOwnerProcess);
3377 IMPORT_C TInt CreateLocal(TInt aSize,TInt aMaxSize,TOwnerType aType=EOwnerProcess);
3378 IMPORT_C TInt CreateLocalCode(TInt aSize,TInt aMaxSize,TOwnerType aType=EOwnerProcess);
3379 IMPORT_C TInt CreateGlobal(const TDesC& aName,TInt aSize,TInt aMaxSize,TOwnerType aType=EOwnerProcess);
3380 IMPORT_C TInt CreateDoubleEndedLocal(TInt aInitialBottom, TInt aInitialTop,TInt aMaxSize,TOwnerType aType=EOwnerProcess);
3381 IMPORT_C TInt CreateDoubleEndedGlobal(const TDesC& aName,TInt aInitialBottom,TInt aInitialTop,TInt aMaxSize,TOwnerType aType=EOwnerProcess);
3382 IMPORT_C TInt CreateDisconnectedLocal(TInt aInitialBottom, TInt aInitialTop,TInt aMaxSize,TOwnerType aType=EOwnerProcess);
3383 IMPORT_C TInt CreateDisconnectedGlobal(const TDesC& aName,TInt aInitialBottom,TInt aInitialTop,TInt aMaxSize,TOwnerType aType=EOwnerProcess);
3384 IMPORT_C TInt Create(TChunkCreateInfo& aCreateInfo);
3385 IMPORT_C TInt SetRestrictions(TUint aFlags);
3386 IMPORT_C TInt OpenGlobal(const TDesC& aName,TBool isReadOnly,TOwnerType aType=EOwnerProcess);
3387 IMPORT_C TInt Open(RMessagePtr2 aMessage,TInt aParam,TBool isReadOnly,TOwnerType aType=EOwnerProcess);
3388 IMPORT_C TInt Open(TInt aArgumentIndex, TOwnerType aType=EOwnerProcess);
3389 IMPORT_C TInt Adjust(TInt aNewSize) const;
3390 IMPORT_C TInt AdjustDoubleEnded(TInt aBottom, TInt aTop) const;
3391 IMPORT_C TInt Commit(TInt anOffset, TInt aSize) const;
3392 IMPORT_C TInt Allocate(TInt aSize) const;
3393 IMPORT_C TInt Decommit(TInt anOffset, TInt aSize) const;
3394 IMPORT_C TInt Unlock(TInt aOffset, TInt aSize); /**< @internalTechnology */
3395 IMPORT_C TInt Lock(TInt aOffset, TInt aSize); /**< @internalTechnology */
3396 IMPORT_C TUint8* Base() const;
3397 IMPORT_C TInt Size() const;
3398 IMPORT_C TInt Bottom() const;
3399 IMPORT_C TInt Top() const;
3400 IMPORT_C TInt MaxSize() const;
3401 inline TBool IsReadable() const;
3402 inline TBool IsWritable() const;
3403 IMPORT_C TBool IsPaged() const;
3405 friend class UserHeap;
3410 This structure specifies the type and properties of the chunk to be created. It
3411 is passed as a parameter to the RChunk::Create() method.
3416 struct TChunkCreateInfo
3420 Currently supported version numbers
3423 enum TChunkCreateVersions
3429 friend class RChunk;
3432 Attributes that specify whether the chunk to be created is data paged or not.
3434 enum TChunkPagingAtt
3436 EUnspecified, /**< The chunk will use the creating process's paging attributes.*/
3437 EPaged, /**< The chunk will be data paged.*/
3438 EUnpaged, /**< The chunk will not be data paged.*/
3441 IMPORT_C TChunkCreateInfo();
3442 IMPORT_C void SetNormal(TInt aInitialSize, TInt aMaxSize);
3443 IMPORT_C void SetCode(TInt aInitialSize, TInt aMaxSize);
3444 IMPORT_C void SetDoubleEnded(TInt aInitialBottom, TInt aInitialTop, TInt aMaxSize);
3445 IMPORT_C void SetDisconnected(TInt aInitialBottom, TInt aInitialTop, TInt aMaxSize);
3446 IMPORT_C void SetOwner(TOwnerType aType);
3447 IMPORT_C void SetGlobal(const TDesC& aName);
3448 IMPORT_C void SetClearByte(TUint8 aClearByte);
3449 IMPORT_C void SetPaging(const TChunkPagingAtt aPaging);
3450 IMPORT_C void SetReadOnly();
3451 void SetThreadHeap(TInt aInitialSize, TInt aMaxSize, const TDesC& aName);
3454 For use by file server only.
3457 IMPORT_C void SetCache(TInt aMaxSize);
3459 /** The version number of this TChunkCreateInfo.
3462 TUint iVersionNumber;
3463 /** The type of the chunk to be created.
3467 /** Specify if chunk is global or not.
3471 /** The maximum size in bytes of the chunk to be created.
3475 /** An enumeration whose enumerators define the ownership of this chunk
3476 handle. If not explicitly specified, EOwnerProcess is taken as default.
3479 TOwnerType iOwnerType;
3480 /** A pointer to a descriptor containing the name to be assigned to
3481 global chunks. The length of the descriptor must be no greater than
3482 that allowed for a TKName type. Must be NULL for local chunks.
3486 /** The offset of the bottom of the region to commit to the chunk on
3487 creation from the base of the chunk's reserved region.
3488 This is only used for double ended and disconnected chunks.
3491 TInt iInitialBottom;
3492 /** The offset of the top of the region to commit to the chunk on
3493 creation from the base of the chunk's reserved region.
3494 This is only used for double ended and disconnected chunks.
3498 /** Attributes to the chunk to be created should have.
3499 Should be set from one or more the values in TChunkCreate::TChunkCreateAtt.
3503 /** The byte to clear all the memory committed to the chunk to.
3507 /** @internalComponent*/
3509 /** @internalComponent*/
3514 This structure specifies the type and properties of the user heap to be created. It
3515 is passed as a parameter to the UserHeap::Create() method.
3520 struct TChunkHeapCreateInfo
3524 Currently supported version numbers
3527 enum TChunkHeapCreateVersions
3534 Attributes that specify whether the chunk heap to be created is data paged or not.
3536 enum TChunkHeapPagingAtt
3538 EUnspecified, /**< The chunk heap will use the creating process's paging attributes.*/
3539 EPaged, /**< The chunk heap will be data paged.*/
3540 EUnpaged, /**< The chunk heap will not be data paged.*/
3543 friend class UserHeap;
3545 IMPORT_C TChunkHeapCreateInfo(TInt aMinLength, TInt aMaxLength);
3546 IMPORT_C void SetCreateChunk(const TDesC* aName);
3547 IMPORT_C void SetUseChunk(const RChunk aChunk);
3548 inline void SetSingleThread(TBool aSingleThread);
3549 inline void SetAlignment(TInt aAlign);
3550 inline void SetGrowBy(TInt aGrowBy);
3551 inline void SetOffset(TInt aOffset);
3552 inline void SetMode(TUint aMode);
3553 inline void SetPaging(const TChunkHeapPagingAtt aPaging);
3556 /** The version number of this TChunkHeapCreateInfo.
3559 TUint iVersionNumber;
3560 /** The minimum size for the heap.
3564 /** The maximum size for the heap.
3568 /** The alignment of the heap.
3572 /** The grow by value of the heap.
3576 /** The single thread value of the heap.
3579 TBool iSingleThread;
3580 /** The offset from the base of the chunk to the start of the heap.
3584 /** The paging attributes of the chunk.
3587 TChunkHeapPagingAtt iPaging;
3588 /** The mode flags for the heap.
3592 /** The name of the chunk to be created for the heap.
3596 /** The chunk to use for the heap.
3600 /**@internalComponent*/
3604 struct SStdEpocThreadCreateInfo;
3609 A set of static functions for constructing fixed length heaps and local or
3619 Flags to control the heap creation.
3621 enum TChunkHeapCreateMode
3623 /** On successful creation of the heap this switches the calling thread to
3626 EChunkHeapSwitchTo = 0x1,
3627 /** On successful creation of the heap this causes the handle to the heap
3630 EChunkHeapDuplicate = 0x2,
3632 /** @internalComponent*/
3633 EChunkHeapMask = EChunkHeapSwitchTo | EChunkHeapDuplicate,
3635 IMPORT_C static RHeap* FixedHeap(TAny* aBase, TInt aMaxLength, TInt aAlign=0, TBool aSingleThread=ETrue);
3636 IMPORT_C static RHeap* ChunkHeap(const TDesC* aName, TInt aMinLength, TInt aMaxLength, TInt aGrowBy=1, TInt aAlign=0, TBool aSingleThread=EFalse);
3637 IMPORT_C static RHeap* ChunkHeap(RChunk aChunk, TInt aMinLength, TInt aGrowBy=1, TInt aMaxLength=0, TInt aAlign=0, TBool aSingleThread=EFalse, TUint32 aMode=0);
3638 IMPORT_C static RHeap* OffsetChunkHeap(RChunk aChunk, TInt aMinLength, TInt aOffset, TInt aGrowBy=1, TInt aMaxLength=0, TInt aAlign=0, TBool aSingleThread=EFalse, TUint32 aMode=0);
3639 IMPORT_C static RHeap* ChunkHeap(const TChunkHeapCreateInfo& aCreateInfo);
3640 IMPORT_C static TInt SetupThreadHeap(TBool aNotFirst, SStdEpocThreadCreateInfo& aInfo);
3641 IMPORT_C static TInt CreateThreadHeap(SStdEpocThreadCreateInfo& aInfo, RHeap*& aHeap, TInt aAlign=0, TBool aSingleThread=EFalse);
3651 Encapsulates the Id of a kernel object.
3657 inline TObjectId(TUint64 anId);
3658 inline TUint64 Id() const;
3659 inline operator TUint() const;
3660 inline TBool operator==(TObjectId aId) const;
3661 inline TBool operator!=(TObjectId aId) const;
3673 Encapsulates the Id of a thread.
3675 An object of this type is not explicitly constructed in open code,
3676 but is returned by the Id() member function of a thread handle,
3681 class TThreadId : public TObjectId
3685 inline TThreadId(TUint64 anId);
3692 This structure specifies the type and properties of the thread to be created. It
3693 is passed as a parameter to the RThread::Create() method.
3698 struct TThreadCreateInfo
3702 Currently supported version numbers
3705 enum TThreadCreateVersions
3712 Attributes that specify whether the stack and heap of the thread to be created
3713 are data paged or not.
3715 enum TThreadPagingAtt
3717 EUnspecified, /**< The thread will use the creating process's paging attributes.*/
3718 EPaged, /**< The thread will data page its stack and heap.*/
3719 EUnpaged, /**< The thread will not data page its stack and heap.*/
3722 friend class RThread;
3724 IMPORT_C TThreadCreateInfo( const TDesC &aName, TThreadFunction aFunction,
3725 TInt aStackSize, TAny* aPtr);
3726 IMPORT_C void SetCreateHeap(TInt aHeapMinSize, TInt aHeapMaxSize);
3727 IMPORT_C void SetUseHeap(const RAllocator* aHeap);
3728 IMPORT_C void SetOwner(const TOwnerType aOwner);
3729 IMPORT_C void SetPaging(const TThreadPagingAtt aPaging);
3732 /** The version number of this TChunkCreateInfo.
3735 TUint iVersionNumber;
3736 /** The Name to be given to the thread to be created
3740 /** The function this thread will execute.
3743 TThreadFunction iFunction;
3744 /** The size of the stack of the thread to be created.
3748 /** The parameter to be passed to the function of the thread to be created.
3752 /** The owner of the thread to be created.
3756 /** The heap for the thread to be created to use.
3757 NULL if a new heap is to be created.
3761 /** Minimum size of any heap to be created for the thread.
3762 @internalComponent*/
3764 /** Maximum size of any heap to be created for the thread.
3768 /** The attributes of the thread
3772 /**@internalComponent*/
3783 A handle to a thread.
3785 The thread itself is a kernel object.
3787 class RThread : public RHandleBase
3791 IMPORT_C TInt Create(const TDesC& aName, TThreadFunction aFunction, TInt aStackSize, TInt aHeapMinSize, TInt aHeapMaxSize, TAny *aPtr, TOwnerType aType=EOwnerProcess);
3792 IMPORT_C TInt Create(const TDesC& aName, TThreadFunction aFunction, TInt aStackSize, RAllocator* aHeap, TAny* aPtr, TOwnerType aType=EOwnerProcess);
3793 IMPORT_C TInt Create(const TThreadCreateInfo& aCreateInfo);
3794 IMPORT_C TInt Open(const TDesC& aFullName, TOwnerType aType=EOwnerProcess);
3795 IMPORT_C TInt Open(TThreadId aID, TOwnerType aType=EOwnerProcess);
3796 IMPORT_C TThreadId Id() const;
3797 IMPORT_C void Resume() const;
3798 IMPORT_C void Suspend() const;
3801 @deprecated Use User::RenameThread() instead
3803 inline static TInt RenameMe(const TDesC& aName);
3805 IMPORT_C void Kill(TInt aReason);
3806 IMPORT_C void Terminate(TInt aReason);
3807 IMPORT_C void Panic(const TDesC& aCategory,TInt aReason);
3808 IMPORT_C TInt Process(RProcess& aProcess) const;
3809 IMPORT_C TThreadPriority Priority() const;
3810 IMPORT_C void SetPriority(TThreadPriority aPriority) const;
3811 IMPORT_C TProcessPriority ProcessPriority() const;
3812 IMPORT_C void SetProcessPriority(TProcessPriority aPriority) const;
3813 IMPORT_C TInt RequestCount() const;
3814 IMPORT_C TExitType ExitType() const;
3815 IMPORT_C TInt ExitReason() const;
3816 IMPORT_C TExitCategoryName ExitCategory() const;
3817 IMPORT_C void RequestComplete(TRequestStatus*& aStatus,TInt aReason) const;
3818 IMPORT_C void RequestSignal() const;
3819 IMPORT_C void Logon(TRequestStatus& aStatus) const;
3820 IMPORT_C TInt LogonCancel(TRequestStatus& aStatus) const;
3821 IMPORT_C void HandleCount(TInt& aProcessHandleCount, TInt& aThreadHandleCount) const;
3822 IMPORT_C void Context(TDes8& aDes) const;
3823 IMPORT_C TInt StackInfo(TThreadStackInfo& aInfo) const;
3824 IMPORT_C TInt GetCpuTime(TTimeIntervalMicroSeconds& aCpuTime) const;
3825 inline TInt Open(const TFindThread& aFind,TOwnerType aType=EOwnerProcess);
3826 IMPORT_C void Rendezvous(TRequestStatus& aStatus) const;
3827 IMPORT_C TInt RendezvousCancel(TRequestStatus& aStatus) const;
3828 IMPORT_C static void Rendezvous(TInt aReason);
3831 Return the Secure ID of the process to which the thread belongs.
3833 If an intended use of this method is to check that the Secure ID is
3834 a given value, then the use of a TSecurityPolicy object should be
3835 considered. E.g. Instead of something like:
3839 TInt error = thread.SecureId()==KRequiredSecureId ? KErrNone : KErrPermissionDenied;
3846 static _LIT_SECURITY_POLICY_S0(mySidPolicy, KRequiredSecureId);
3847 TBool pass = mySidPolicy().CheckPolicy(thread);
3850 This has the benefit that the TSecurityPolicy::CheckPolicy methods are
3851 configured by the system wide Platform Security configuration. I.e. are
3852 capable of emitting diagnostic messages when a check fails and/or the
3853 check can be forced to always pass.
3855 @see TSecurityPolicy::CheckPolicy(RThread aThread, const char* aDiagnostic) const
3856 @see _LIT_SECURITY_POLICY_S0
3858 @return The Secure ID.
3862 IMPORT_C TSecureId SecureId() const;
3865 Return the Vendor ID of the process to which the thread belongs.
3867 If an intended use of this method is to check that the Vendor ID is
3868 a given value, then the use of a TSecurityPolicy object should be
3869 considered. E.g. Instead of something like:
3873 TInt error = thread.VendorId()==KRequiredVendorId ? KErrNone : KErrPermissionDenied;
3880 static _LIT_SECURITY_POLICY_V0(myVidPolicy, KRequiredVendorId);
3881 TBool pass = myVidPolicy().CheckPolicy(thread);
3884 This has the benefit that the TSecurityPolicy::CheckPolicy methods are
3885 configured by the system wide Platform Security configuration. I.e. are
3886 capable of emitting diagnostic messages when a check fails and/or the
3887 check can be forced to always pass.
3889 @see TSecurityPolicy::CheckPolicy(RThread aThread, const char* aDiagnostic) const
3890 @see _LIT_SECURITY_POLICY_V0
3892 @return The Vendor ID.
3896 IMPORT_C TVendorId VendorId() const;
3899 Check if the process to which the thread belongs has a given capability
3901 When a check fails the action taken is determined by the system wide Platform Security
3902 configuration. If PlatSecDiagnostics is ON, then a diagnostic message is emitted.
3903 If PlatSecEnforcement is OFF, then this function will return ETrue even though the
3906 @param aCapability The capability to test.
3907 @param aDiagnostic A string that will be emitted along with any diagnostic message
3908 that may be issued if the test finds the capability is not present.
3909 This string must be enclosed in the __PLATSEC_DIAGNOSTIC_STRING macro
3910 which enables it to be easily removed from the system.
3911 @return ETrue if the process to which the thread belongs has the capability, EFalse otherwise.
3915 #ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
3916 inline TBool HasCapability(TCapability aCapability, const char* aDiagnostic=0) const;
3917 #else //__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
3918 // Only available to NULL arguments
3919 inline TBool HasCapability(TCapability aCapability, OnlyCreateWithNull aDiagnostic=NULL) const;
3920 #ifndef __REMOVE_PLATSEC_DIAGNOSTICS__
3921 // For things using KSuppressPlatSecDiagnostic
3922 inline TBool HasCapability(TCapability aCapability, OnlyCreateWithNull aDiagnostic, OnlyCreateWithNull aSuppress) const;
3923 #endif // !__REMOVE_PLATSEC_DIAGNOSTICS__
3924 #endif // !__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
3927 Check if the process to which the thread belongs has both of the given capabilities
3929 When a check fails the action taken is determined by the system wide Platform Security
3930 configuration. If PlatSecDiagnostics is ON, then a diagnostic message is emitted.
3931 If PlatSecEnforcement is OFF, then this function will return ETrue even though the
3934 @param aCapability1 The first capability to test.
3935 @param aCapability2 The second capability to test.
3936 @param aDiagnostic A string that will be emitted along with any diagnostic message
3937 that may be issued if the test finds a capability is not present.
3938 This string must be enclosed in the __PLATSEC_DIAGNOSTIC_STRING macro
3939 which enables it to be easily removed from the system.
3940 @return ETrue if the process to which the thread belongs has both the capabilities, EFalse otherwise.
3944 #ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
3945 inline TBool HasCapability(TCapability aCapability1, TCapability aCapability2, const char* aDiagnostic=0) const;
3946 #else //__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
3947 // Only available to NULL arguments
3948 inline TBool HasCapability(TCapability aCapability1, TCapability aCapability2, OnlyCreateWithNull aDiagnostic=NULL) const;
3949 #ifndef __REMOVE_PLATSEC_DIAGNOSTICS__
3950 // For things using KSuppressPlatSecDiagnostic
3951 inline TBool HasCapability(TCapability aCapability, TCapability aCapability2, OnlyCreateWithNull aDiagnostic, OnlyCreateWithNull aSuppress) const;
3952 #endif // !__REMOVE_PLATSEC_DIAGNOSTICS__
3953 #endif // !__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
3955 /** Function only temporarily supported to aid migration to process emulation...
3958 @deprecated Use process emulation instead
3960 inline TInt Create(const TDesC& aName,TThreadFunction aFunction,TInt aStackSize,TAny* aPtr,RLibrary* aLibrary,RHeap* aHeap, TInt aHeapMinSize,TInt aHeapMaxSize,TOwnerType aType);
3963 // Implementations of functions with diagnostics
3964 IMPORT_C TBool DoHasCapability(TCapability aCapability, const char* aDiagnostic) const;
3965 IMPORT_C TBool DoHasCapability(TCapability aCapability) const;
3966 IMPORT_C TBool DoHasCapability(TCapability aCapability1, TCapability aCapability2, const char* aDiagnostic) const;
3967 IMPORT_C TBool DoHasCapability(TCapability aCapability1, TCapability aCapability2) const;
3974 inline TInt RThread::Create(const TDesC& /*aName*/,TThreadFunction /*aFunction*/,TInt /*aStackSize*/,TAny* /*aPtr*/,RLibrary* /*aLibrary*/,RHeap* /*aHeap*/, TInt /*aHeapMinSize*/,TInt /*aHeapMaxSize*/,TOwnerType /*aType*/)
3975 {return KErrNotSupported; }
3983 Encapsulates the Id of a process.
3985 An object of this type is not explicitly constructed in open code,
3986 but is returned by the Id() member function of a process handle,
3991 class TProcessId : public TObjectId
3994 inline TProcessId();
3995 inline TProcessId(TUint64 anId);
4001 class RSubSessionBase;
4007 A handle to a process.
4009 The process itself is a kernel object.
4011 class RProcess : public RHandleBase
4015 IMPORT_C TInt Create(const TDesC& aFileName,const TDesC& aCommand,TOwnerType aType=EOwnerProcess);
4016 IMPORT_C TInt Create(const TDesC& aFileName,const TDesC& aCommand,const TUidType &aUidType, TOwnerType aType=EOwnerProcess);
4017 IMPORT_C TInt Open(const TDesC& aName,TOwnerType aType=EOwnerProcess);
4018 IMPORT_C TInt Open(TProcessId aId,TOwnerType aType=EOwnerProcess);
4019 IMPORT_C TUidType Type() const;
4020 IMPORT_C TProcessId Id() const;
4023 @deprecated Use User::RenameProcess() instead
4025 inline static TInt RenameMe(const TDesC& aName);
4027 IMPORT_C void Kill(TInt aReason);
4028 IMPORT_C void Terminate(TInt aReason);
4029 IMPORT_C void Panic(const TDesC& aCategory,TInt aReason);
4030 IMPORT_C void Resume();
4031 IMPORT_C TFileName FileName() const;
4032 IMPORT_C TExitType ExitType() const;
4033 IMPORT_C TInt ExitReason() const;
4034 IMPORT_C TExitCategoryName ExitCategory() const;
4035 IMPORT_C TProcessPriority Priority() const;
4036 IMPORT_C TInt SetPriority(TProcessPriority aPriority) const;
4037 IMPORT_C TBool JustInTime() const;
4038 IMPORT_C void SetJustInTime(TBool aBoolean) const;
4039 IMPORT_C void Logon(TRequestStatus& aStatus) const;
4040 IMPORT_C TInt LogonCancel(TRequestStatus& aStatus) const;
4041 IMPORT_C TInt GetMemoryInfo(TModuleMemoryInfo& aInfo) const;
4042 inline TInt Open(const TFindProcess& aFind,TOwnerType aType=EOwnerProcess);
4043 IMPORT_C void Rendezvous(TRequestStatus& aStatus) const;
4044 IMPORT_C TInt RendezvousCancel(TRequestStatus& aStatus) const;
4045 IMPORT_C static void Rendezvous(TInt aReason);
4046 IMPORT_C TBool DefaultDataPaged() const;
4049 Return the Secure ID of the process.
4051 If an intended use of this method is to check that the Secure ID is
4052 a given value, then the use of a TSecurityPolicy object should be
4053 considered. E.g. Instead of something like:
4057 TInt error = process.SecureId()==KRequiredSecureId ? KErrNone : KErrPermissionDenied;
4064 static _LIT_SECURITY_POLICY_S0(mySidPolicy, KRequiredSecureId);
4065 TBool pass = mySidPolicy().CheckPolicy(process);
4068 This has the benefit that the TSecurityPolicy::CheckPolicy methods are
4069 configured by the system wide Platform Security configuration. I.e. are
4070 capable of emitting diagnostic messages when a check fails and/or the
4071 check can be forced to always pass.
4073 @see TSecurityPolicy::CheckPolicy(RProcess aProcess, const char* aDiagnostic) const
4074 @see _LIT_SECURITY_POLICY_S0
4076 @return The Secure ID.
4080 IMPORT_C TSecureId SecureId() const;
4083 Return the Vendor ID of the process.
4085 If an intended use of this method is to check that the Vendor ID is
4086 a given value, then the use of a TSecurityPolicy object should be
4087 considered. E.g. Instead of something like:
4091 TInt error = process.VendorId()==KRequiredVendorId ? KErrNone : KErrPermissionDenied;
4098 static _LIT_SECURITY_POLICY_V0(myVidPolicy, KRequiredVendorId);
4099 TBool pass = myVidPolicy().CheckPolicy(process);
4102 This has the benefit that the TSecurityPolicy::CheckPolicy methods are
4103 configured by the system wide Platform Security configuration. I.e. are
4104 capable of emitting diagnostic messages when a check fails and/or the
4105 check can be forced to always pass.
4107 @see TSecurityPolicy::CheckPolicy(RProcess aProcess, const char* aDiagnostic) const
4108 @see _LIT_SECURITY_POLICY_V0
4110 @return The Vendor ID.
4114 IMPORT_C TVendorId VendorId() const;
4117 Check if the process has a given capability
4119 When a check fails the action taken is determined by the system wide Platform Security
4120 configuration. If PlatSecDiagnostics is ON, then a diagnostic message is emitted.
4121 If PlatSecEnforcement is OFF, then this function will return ETrue even though the
4124 @param aCapability The capability to test.
4125 @param aDiagnostic A string that will be emitted along with any diagnostic message
4126 that may be issued if the test finds the capability is not present.
4127 This string must be enclosed in the __PLATSEC_DIAGNOSTIC_STRING macro
4128 which enables it to be easily removed from the system.
4129 @return ETrue if the process has the capability, EFalse otherwise.
4133 #ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
4134 inline TBool HasCapability(TCapability aCapability, const char* aDiagnostic=0) const;
4135 #else //__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
4136 // Only available to NULL arguments
4137 inline TBool HasCapability(TCapability aCapability, OnlyCreateWithNull aDiagnostic=NULL) const;
4138 #ifndef __REMOVE_PLATSEC_DIAGNOSTICS__
4139 // For things using KSuppressPlatSecDiagnostic
4140 inline TBool HasCapability(TCapability aCapability, OnlyCreateWithNull aDiagnostic, OnlyCreateWithNull aSuppress) const;
4141 #endif // !__REMOVE_PLATSEC_DIAGNOSTICS__
4142 #endif // !__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
4145 Check if the process has both of the given capabilities
4147 When a check fails the action taken is determined by the system wide Platform Security
4148 configuration. If PlatSecDiagnostics is ON, then a diagnostic message is emitted.
4149 If PlatSecEnforcement is OFF, then this function will return ETrue even though the
4152 @param aCapability1 The first capability to test.
4153 @param aCapability2 The second capability to test.
4154 @param aDiagnostic A string that will be emitted along with any diagnostic message
4155 that may be issued if the test finds a capability is not present.
4156 This string must be enclosed in the __PLATSEC_DIAGNOSTIC_STRING macro
4157 which enables it to be easily removed from the system.
4158 @return ETrue if the process has both the capabilities, EFalse otherwise.
4162 #ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
4163 inline TBool HasCapability(TCapability aCapability1, TCapability aCapability2, const char* aDiagnostic=0) const;
4164 #else //__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
4165 // Only available to NULL arguments
4166 inline TBool HasCapability(TCapability aCapability1, TCapability aCapability2, OnlyCreateWithNull aDiagnostic=NULL) const;
4167 #ifndef __REMOVE_PLATSEC_DIAGNOSTICS__
4168 // For things using KSuppressPlatSecDiagnostic
4169 inline TBool HasCapability(TCapability aCapability, TCapability aCapability2, OnlyCreateWithNull aDiagnostic, OnlyCreateWithNull aSuppress) const;
4170 #endif // !__REMOVE_PLATSEC_DIAGNOSTICS__
4171 #endif // !__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
4173 IMPORT_C TInt SetParameter(TInt aIndex, RHandleBase aHandle);
4174 IMPORT_C TInt SetParameter(TInt aSlot, const RSubSessionBase& aSession);
4175 IMPORT_C TInt SetParameter(TInt aSlot, const TDesC16& aDes);
4176 IMPORT_C TInt SetParameter(TInt aSlot, const TDesC8& aDes);
4177 IMPORT_C TInt SetParameter(TInt aSlot, TInt aData);
4178 inline RProcess(TInt aHandle);
4181 @deprecated Use RProcess::SecureId() instead
4183 inline TUid Identity() const { return SecureId(); }
4186 Legacy Platform Security development and migration support
4188 @deprecated No replacement
4190 enum TSecureApi { ESecureApiOff, ESecureApiOn, ESecureApiQuery }; // __SECURE_API__ remove this
4193 Legacy Platform Security development and migration support
4195 @deprecated No replacement
4197 IMPORT_C TInt SecureApi(TInt aState); // __SECURE_API__ remove this
4200 Legacy Platform Security development and migration support
4202 @deprecated No replacement
4204 enum TDataCaging { EDataCagingOff, EDataCagingOn, EDataCagingQuery}; // __DATA_CAGING__ __SECURE_API__ remove this
4207 Legacy Platform Security development and migration support
4209 @deprecated No replacement
4211 IMPORT_C TInt DataCaging(TInt aState); // __DATA_CAGING__ __SECURE_API__ remove this
4214 IMPORT_C TInt CreateWithStackOverride(const TDesC& aFileName,const TDesC& aCommand, const TUidType &aUidType, TInt aMinStackSize, TOwnerType aType);
4216 IMPORT_C static TAny* ExeExportData(void);
4219 // Implementations of functions with diagnostics
4220 IMPORT_C TBool DoHasCapability(TCapability aCapability, const char* aDiagnostic) const;
4221 IMPORT_C TBool DoHasCapability(TCapability aCapability) const;
4222 IMPORT_C TBool DoHasCapability(TCapability aCapability1, TCapability aCapability2, const char* aDiagnostic) const;
4223 IMPORT_C TBool DoHasCapability(TCapability aCapability1, TCapability aCapability2) const;
4237 class RServer2 : public RHandleBase
4240 IMPORT_C TInt CreateGlobal(const TDesC& aName);
4241 IMPORT_C TInt CreateGlobal(const TDesC& aName, TInt aMode);
4242 IMPORT_C TInt CreateGlobal(const TDesC& aName, TInt aMode, TInt aRole, TInt aOpts);
4243 IMPORT_C void Receive(RMessage2& aMessage,TRequestStatus& aStatus);
4244 IMPORT_C void Receive(RMessage2& aMessage);
4245 IMPORT_C void Cancel();
4255 Client-side handle to a session with a server.
4257 This is the client-side interface through which communication with the server
4260 Clients normally define and implement a derived class to provide
4263 class RSessionBase : public RHandleBase
4265 friend class RSubSessionBase;
4268 Indicates whether or not threads in the process are automatically attached
4269 to the session when passed as a parameter to the Share() function.
4271 enum TAttachMode {EExplicitAttach,EAutoAttach};
4274 Creates a session that can be shared by other threads in the current
4277 After calling this function the session object may be used by threads other
4278 than than the one that created it.
4280 Note that this can only be done with servers that mark their sessions
4283 @return KErrNone, if the session is successfully shared;
4284 KErrNoMmemory, if the attempt fails for lack of memory.
4286 @panic KERN-EXEC 23 The session cannot be shared.
4289 @see RSessionBase::ShareProtected()
4290 @see CServer2::TServerType
4292 inline TInt ShareAuto() { return DoShare(EAutoAttach); }
4296 Creates a session handle that can be be passed via IPC to another process
4297 as well as being shared by other threads in the current process.
4299 After calling this function the session object may be used by threads other
4300 than than the one that created it.
4302 Note that this can only be done with servers that mark their sessions
4303 as globally sharable.
4305 @return KErrNone, if the session is successfully shared;
4306 KErrNoMmemory, if the attempt fails for lack of memory.
4308 @panic KERN-EXEC 23 The session cannot be shared.
4311 @see RSessionBase::ShareAuto()
4312 @see CServer2::TServerType
4314 inline TInt ShareProtected() { return DoShare(EAutoAttach|KCreateProtectedObject); }
4317 IMPORT_C TInt Open(RMessagePtr2 aMessage,TInt aParam,TOwnerType aType=EOwnerProcess);
4318 IMPORT_C TInt Open(RMessagePtr2 aMessage,TInt aParam,const TSecurityPolicy& aServerPolicy,TOwnerType aType=EOwnerProcess);
4319 IMPORT_C TInt Open(TInt aArgumentIndex, TOwnerType aType=EOwnerProcess);
4320 IMPORT_C TInt Open(TInt aArgumentIndex, const TSecurityPolicy& aServerPolicy, TOwnerType aType=EOwnerProcess);
4321 inline TInt SetReturnedHandle(TInt aHandleOrError);
4322 IMPORT_C TInt SetReturnedHandle(TInt aHandleOrError,const TSecurityPolicy& aServerPolicy);
4324 inline TInt CreateSession(const TDesC& aServer,const TVersion& aVersion);
4325 IMPORT_C TInt CreateSession(const TDesC& aServer,const TVersion& aVersion,TInt aAsyncMessageSlots);
4326 IMPORT_C TInt CreateSession(const TDesC& aServer,const TVersion& aVersion,TInt aAsyncMessageSlots,TIpcSessionType aType,const TSecurityPolicy* aPolicy=0, TRequestStatus* aStatus=0);
4327 inline TInt CreateSession(RServer2 aServer,const TVersion& aVersion);
4328 IMPORT_C TInt CreateSession(RServer2 aServer,const TVersion& aVersion,TInt aAsyncMessageSlots);
4329 IMPORT_C TInt CreateSession(RServer2 aServer,const TVersion& aVersion,TInt aAsyncMessageSlots,TIpcSessionType aType,const TSecurityPolicy* aPolicy=0, TRequestStatus* aStatus=0);
4330 inline static TInt SetReturnedHandle(TInt aHandleOrError,RHandleBase& aHandle);
4333 @deprecated Use CreateSession(const TDesC& aServer,const TVersion& aVersion,TInt aAsyncMessageSlots,TIpcSessionType aType,const TSecurityPolicy* aPolicy=0, TRequestStatus* aStatus=0);
4335 inline TInt CreateSession(const TDesC& aServer,const TVersion& aVersion,TInt aAsyncMessageSlots,TRequestStatus* aStatus)
4336 { return CreateSession(aServer, aVersion, aAsyncMessageSlots, EIpcSession_Unsharable, (TSecurityPolicy*)0, aStatus); }
4337 inline TInt Send(TInt aFunction,const TIpcArgs& aArgs) const;
4338 inline void SendReceive(TInt aFunction,const TIpcArgs& aArgs,TRequestStatus& aStatus) const;
4339 inline TInt SendReceive(TInt aFunction,const TIpcArgs& aArgs) const;
4340 inline TInt Send(TInt aFunction) const;
4341 inline void SendReceive(TInt aFunction,TRequestStatus& aStatus) const;
4342 inline TInt SendReceive(TInt aFunction) const;
4344 IMPORT_C TInt DoSend(TInt aFunction,const TIpcArgs* aArgs) const;
4345 IMPORT_C void DoSendReceive(TInt aFunction,const TIpcArgs* aArgs,TRequestStatus& aStatus) const;
4346 IMPORT_C TInt DoSendReceive(TInt aFunction,const TIpcArgs* aArgs) const;
4347 TInt SendAsync(TInt aFunction,const TIpcArgs* aArgs,TRequestStatus* aStatus) const;
4348 TInt SendSync(TInt aFunction,const TIpcArgs* aArgs) const;
4349 IMPORT_C TInt DoShare(TInt aAttachMode);
4350 TInt DoConnect(const TVersion &aVersion,TRequestStatus* aStatus);
4360 Client-side handle to a sub-session.
4362 It represents a client-side sub-session, and has a corresponding sub-session
4363 object on the server-side.
4365 Clients normally define and implement a derived class to provide a richer
4366 interface. In particular, a derived class should:
4368 1. provide a function to create a new sub-session with the server;
4369 this should call CreateSubSession().
4371 2. provide a function to close the current sub-session;
4372 this should call CloseSubSession().
4374 A session must already exist with a server before a client can establish
4377 class RSubSessionBase
4380 inline TInt SubSessionHandle() const;
4382 inline RSubSessionBase();
4383 IMPORT_C const RSessionBase Session() const;
4384 inline TInt CreateSubSession(const RSessionBase& aSession,TInt aFunction,const TIpcArgs& aArgs);
4385 inline TInt CreateSubSession(const RSessionBase& aSession,TInt aFunction);
4386 IMPORT_C TInt CreateAutoCloseSubSession(RSessionBase& aSession,TInt aFunction,const TIpcArgs& aArgs);
4387 IMPORT_C void CloseSubSession(TInt aFunction);
4388 inline TInt Send(TInt aFunction,const TIpcArgs& aArgs) const;
4389 inline void SendReceive(TInt aFunction,const TIpcArgs& aArgs,TRequestStatus& aStatus) const;
4390 inline TInt SendReceive(TInt aFunction,const TIpcArgs& aArgs) const;
4391 inline TInt Send(TInt aFunction) const;
4392 inline void SendReceive(TInt aFunction,TRequestStatus& aStatus) const;
4393 inline TInt SendReceive(TInt aFunction) const;
4395 IMPORT_C TInt DoCreateSubSession(const RSessionBase& aSession,TInt aFunction,const TIpcArgs* aArgs);
4396 IMPORT_C TInt DoSend(TInt aFunction,const TIpcArgs* aArgs) const;
4397 IMPORT_C void DoSendReceive(TInt aFunction,const TIpcArgs* aArgs,TRequestStatus& aStatus) const;
4398 IMPORT_C TInt DoSendReceive(TInt aFunction,const TIpcArgs* aArgs) const;
4399 TInt DoCreateSubSession(RSessionBase& aSession,TInt aFunction,const TIpcArgs* aArgs, TBool aAutoClose);
4401 RSessionBase iSession;
4402 TInt iSubSessionHandle;
4412 Base class that provides an implementation for the templated
4420 IMPORT_C void Free();
4423 inline RRefBase(const RRefBase& aRef);
4424 IMPORT_C void DoAlloc(const TAny* aPtr,TInt aSize);
4425 IMPORT_C void DoAllocL(const TAny* aPtr,TInt aSize);
4426 IMPORT_C void Copy(const RRefBase& aRef);
4428 IMPORT_C void operator=(const RRefBase& aRef);
4440 Contains, or packages, a copy of an instance of another class.
4442 The template parameter defines the type of the contained object.
4444 The contained object is held in allocated memory, and can be accessed
4445 through the member selection and dereference operators.
4448 class RRef : public RRefBase
4452 inline RRef(const RRef<T>& anObject);
4453 inline void operator=(const RRef<T>& anObject);
4454 inline T* operator->();
4455 inline operator T*();
4456 inline void Alloc(const T& anObject);
4457 inline void Alloc(const T& anObject,TInt aSize);
4458 inline void AllocL(const T& anObject);
4459 inline void AllocL(const T& anObject,TInt aSize);
4469 A handle to a change notifier.
4471 The change notifier itself is a kernel object.
4473 class RChangeNotifier : public RHandleBase
4476 IMPORT_C TInt Create();
4477 IMPORT_C TInt Logon(TRequestStatus& aStatus) const;
4478 IMPORT_C TInt LogonCancel() const;
4488 Handle to a thread death notifier.
4490 The notifier allows threads to be notified of the death of another thread.
4492 The thread-death notifier itself is a kernel object.
4494 class RUndertaker : public RHandleBase
4497 IMPORT_C TInt Create();
4498 IMPORT_C TInt Logon(TRequestStatus& aStatus,TInt& aThreadHandle) const;
4499 IMPORT_C TInt LogonCancel() const;
4511 A handle to a session with the extended notifier server that provides support
4512 for plug-in notifiers.
4514 The interface allows engines or other low level components
4515 to communicate with the UI.
4517 class RNotifier : public RSessionBase
4520 IMPORT_C RNotifier();
4521 IMPORT_C TInt Connect();
4522 IMPORT_C void Close();
4523 IMPORT_C TInt StartNotifier(TUid aNotifierUid,const TDesC8& aBuffer);
4524 IMPORT_C TInt StartNotifier(TUid aNotifierUid,const TDesC8& aBuffer,TDes8& aResponse);
4525 IMPORT_C TInt StartNotifier(TUid aNotifierDllUid,TUid aNotifierUid,const TDesC8& aBuffer,TDes8& aResponse);
4526 IMPORT_C TInt CancelNotifier(TUid aNotifierUid);
4527 IMPORT_C TInt UpdateNotifier(TUid aNotifierUid,const TDesC8& aBuffer,TDes8& aResponse);
4528 IMPORT_C void UpdateNotifierAndGetResponse(TRequestStatus& aRs,TUid aNotifierUid,const TDesC8& aBuffer,TDes8& aResponse);
4529 IMPORT_C void StartNotifierAndGetResponse(TRequestStatus& aRs,TUid aNotifierUid,const TDesC8& aBuffer,TDes8& aResponse);
4530 IMPORT_C void StartNotifierAndGetResponse(TRequestStatus& aRs,TUid aNotifierDllUid,TUid aNotifierUid,const TDesC8& aBuffer,TDes8& aResponse);
4531 IMPORT_C TInt UnloadNotifiers(TUid aNotifierUid);
4532 IMPORT_C TInt LoadNotifiers(TUid aNotifierUid);
4533 IMPORT_C void Notify(const TDesC& aLine1,const TDesC& aLine2,const TDesC& aBut1,const TDesC& aBut2,TInt& aButtonVal,TRequestStatus& aStatus);
4534 IMPORT_C void NotifyCancel();
4535 IMPORT_C TInt InfoPrint(const TDesC& aDes);
4538 HBufC16* iCombinedBuffer;
4545 Abstract class that defines a handler to work with the TRAP mechanism.
4547 Symbian OS provides a trap handler and this class does not normally need to be
4548 used or accessed directly by applications and third party code.
4553 IMPORT_C TTrapHandler();
4556 Called when a TRAP is invoked.
4558 IMPORT_C virtual void Trap()=0;
4561 Called when a function exits a TRAP without leaving.
4563 IMPORT_C virtual void UnTrap()=0;
4566 Called when a function within a TRAP leaves.
4568 @param aValue The leave value.
4570 IMPORT_C virtual void Leave(TInt aValue)=0;
4576 struct TCollationMethod; // forward declaration
4585 Contains a set of static functions which perform manipulation of
4588 The arguments passed to the functions of this class are pointers to memory
4589 locations and length values. These functions are, therefore, not normally
4590 used in open code but are suitable for implementing data manipulation for
4591 other classes. Typically the interface provided by such classes is typesafe
4592 and hides this direct memory to memory manipulation.
4597 inline static TUint8* Copy(TAny* aTrg, const TAny* aSrc, TInt aLength);
4598 inline static TUint8* Move(TAny* aTrg, const TAny* aSrc, TInt aLength);
4599 inline static void Fill(TAny* aTrg, TInt aLength, TChar aChar);
4600 inline static void FillZ(TAny* aTrg, TInt aLength);
4602 inline static TInt Compare(const TUint8* aLeft, TInt aLeftL, const TUint8* aRight, TInt aRightL);
4604 IMPORT_C static TInt Compare(const TUint8* aLeft, TInt aLeftL, const TUint8* aRight, TInt aRightL);
4607 IMPORT_C static TInt Compare(const TUint16* aLeft, TInt aLeftL, const TUint16* aRight, TInt aRightL);
4608 IMPORT_C static TInt CompareF(const TUint8* aLeft, TInt aLeftL, const TUint8* aRight, TInt aRightL);
4609 IMPORT_C static TInt CompareF(const TUint16* aLeft, TInt aLeftL, const TUint16* aRight, TInt aRightL);
4610 IMPORT_C static TInt CompareC(const TUint8* aLeft, TInt aLeftL, const TUint8* aRight, TInt aRightL);
4611 IMPORT_C static TInt CompareC(const TUint16* aLeft, TInt aLeftL, const TUint16* aRight, TInt aRightL);
4612 IMPORT_C static TInt CompareC(const TUint16* aLeft, TInt aLeftL, const TUint16* aRight, TInt aRightL,
4613 TInt aMaxLevel, const TCollationMethod* aCollationMethod);
4614 IMPORT_C static TInt CollationMethods();
4615 IMPORT_C static TUint CollationMethodId(TInt aIndex);
4616 IMPORT_C static const TCollationMethod* CollationMethodByIndex(TInt aIndex);
4617 IMPORT_C static const TCollationMethod* CollationMethodById(TUint aId);
4618 IMPORT_C static const TCollationMethod* GetDefaultMatchingTable();
4619 IMPORT_C static void Swap(TAny* aPtr1, TAny* aPtr2, TInt aLength);
4620 IMPORT_C static void Crc(TUint16& aCrc, const TAny* aPtr, TInt aLength);
4621 IMPORT_C static void Crc32(TUint32& aCrc, const TAny* aPtr, TInt aLength);
4632 Set of static user functions.
4634 These functions are related to a number of System component APIs.
4636 The majority of the functions are related to either the current thread, or
4637 its heap. Examples in this category include User::Exit(), which causes the
4638 thread to terminate, and User::Alloc(), which allocates memory from the current
4641 Some of these functions are equivalent to functions in the RThread or RHeap
4642 classes. In these cases, the User function is a convenient way to access the
4643 function without first having to get a handle to the current thread.
4645 Functions are also provided to support debugging of memory leaks. These function
4646 calls can be written explicitly or can be generated using a corresponding
4647 macro - the advantage of using a macro is that the function call is only
4648 generated for debug builds.
4650 A final category of functions, which includes User::BinarySearch() and User::QuickSort(),
4651 are just useful functions which have no other natural home.
4656 class User : public UserHeap
4659 // Execution control
4660 IMPORT_C static void InitProcess(); /**< @internalComponent */
4661 IMPORT_C static void Exit(TInt aReason);
4662 IMPORT_C static void Panic(const TDesC& aCategory,TInt aReason);
4663 IMPORT_C static void HandleException(TAny* aInfo); /**< @internalComponent */
4665 IMPORT_C static void Leave(TInt aReason);
4666 IMPORT_C static void LeaveNoMemory();
4667 IMPORT_C static TInt LeaveIfError(TInt aReason);
4668 IMPORT_C static TAny* LeaveIfNull(TAny* aPtr);
4669 inline static const TAny* LeaveIfNull(const TAny* aPtr);
4670 IMPORT_C static TTrapHandler* SetTrapHandler(TTrapHandler* aHandler);
4671 IMPORT_C static TTrapHandler* TrapHandler();
4672 IMPORT_C static TTrapHandler* MarkCleanupStack(); /**< @internalComponent */
4673 IMPORT_C static void UnMarkCleanupStack(TTrapHandler* aHandler); /**< @internalComponent */
4674 IMPORT_C static void LeaveEnd(); /**< @internalComponent */
4676 IMPORT_C static TInt InfoPrint(const TDesC& aDes);
4677 // Asynchronous service support
4678 IMPORT_C static void RequestComplete(TRequestStatus*& aStatus,TInt aReason);
4679 IMPORT_C static void WaitForAnyRequest();
4680 IMPORT_C static void WaitForRequest(TRequestStatus& aStatus);
4681 IMPORT_C static void WaitForRequest(TRequestStatus& aStatus1,TRequestStatus& aStatus2);
4682 IMPORT_C static void WaitForNRequest(TRequestStatus *aStatusArray[], TInt aNum);
4683 // User heap management
4684 IMPORT_C static TInt AllocLen(const TAny* aCell);
4685 IMPORT_C static TAny* Alloc(TInt aSize);
4686 IMPORT_C static TAny* AllocL(TInt aSize);
4687 IMPORT_C static TAny* AllocLC(TInt aSize);
4688 IMPORT_C static TAny* AllocZ(TInt aSize);
4689 IMPORT_C static TAny* AllocZL(TInt aSize);
4690 IMPORT_C static TInt AllocSize(TInt& aTotalAllocSize);
4691 IMPORT_C static TInt Available(TInt& aBiggestBlock);
4692 IMPORT_C static TInt CountAllocCells();
4693 IMPORT_C static TInt CountAllocCells(TInt& aFreeCount);
4694 IMPORT_C static void Free(TAny* aCell);
4695 IMPORT_C static void FreeZ(TAny*& aCell);
4696 IMPORT_C static RAllocator& Allocator();
4697 inline static RHeap& Heap();
4698 IMPORT_C static TAny* ReAlloc(TAny* aCell, TInt aSize, TInt aMode=0);
4699 IMPORT_C static TAny* ReAllocL(TAny* aCell, TInt aSize, TInt aMode=0);
4700 IMPORT_C static RAllocator* SwitchAllocator(RAllocator* aAllocator);
4701 inline static RHeap* SwitchHeap(RAllocator* aHeap);
4702 IMPORT_C static TInt CompressAllHeaps();
4703 // Synchronous timer services
4704 IMPORT_C static void After(TTimeIntervalMicroSeconds32 aInterval);
4705 IMPORT_C static TInt At(const TTime& aTime);
4706 IMPORT_C static void AfterHighRes(TTimeIntervalMicroSeconds32 aInterval);
4707 // Set time and deal with timezones
4708 IMPORT_C static TInt SetHomeTime(const TTime& aTime);
4709 IMPORT_C static TInt SetHomeTimeSecure(const TTime& aTime);
4710 IMPORT_C static TInt SetUTCTime(const TTime& aUTCTime);
4711 IMPORT_C static TInt SetUTCTimeSecure(const TTime& aUTCTime);
4712 IMPORT_C static TTimeIntervalSeconds UTCOffset();
4713 IMPORT_C static void SetUTCOffset(TTimeIntervalSeconds aOffset);
4714 IMPORT_C static TInt SetUTCTimeAndOffset(const TTime& aUTCTime, TTimeIntervalSeconds aOffset);
4715 // Set locale information
4716 IMPORT_C static TInt SetCurrencySymbol(const TDesC& aSymbol);
4717 // Set floating point mode
4718 IMPORT_C static TInt SetFloatingPointMode(TFloatingPointMode aMode, TFloatingPointRoundingMode aRoundingMode=EFpRoundToNearest);
4720 IMPORT_C static TUint TickCount();
4721 IMPORT_C static TUint32 NTickCount();
4722 IMPORT_C static TTimerLockSpec LockPeriod();
4723 IMPORT_C static TTimeIntervalSeconds InactivityTime();
4724 IMPORT_C static void ResetInactivityTime();
4725 IMPORT_C static TUint32 FastCounter();
4726 // Atomic operations
4727 IMPORT_C static TInt LockedInc(TInt& aValue);
4728 IMPORT_C static TInt LockedDec(TInt& aValue);
4729 IMPORT_C static TInt SafeInc(TInt& aValue);
4730 IMPORT_C static TInt SafeDec(TInt& aValue);
4732 IMPORT_C static TInt Beep(TInt aFrequency,TTimeIntervalMicroSeconds32 aDuration);
4734 IMPORT_C static TInt IsRomAddress(TBool& aBool,TAny* aPtr);
4736 IMPORT_C static TInt BinarySearch(TInt aCount,const TKey& aKey,TInt& aPos);
4737 IMPORT_C static TInt QuickSort(TInt aCount,const TKey& aKey,const TSwap& aSwap);
4738 // Language-dependent character functions
4739 IMPORT_C static TLanguage Language();
4740 IMPORT_C static TRegionCode RegionCode();
4741 IMPORT_C static TUint Collate(TUint aChar);
4742 IMPORT_C static TUint Fold(TUint aChar);
4743 IMPORT_C static TUint LowerCase(TUint aChar);
4744 IMPORT_C static TUint UpperCase(TUint aChar);
4745 IMPORT_C static TUint Fold(TUint aChar,TInt aFlags);
4746 IMPORT_C static TUint TitleCase(TUint aChar);
4747 // C-style string length
4748 IMPORT_C static TInt StringLength(const TUint8* aString);
4749 IMPORT_C static TInt StringLength(const TUint16* aString);
4750 // Device management
4751 IMPORT_C static TInt FreeLogicalDevice(const TDesC& aDeviceName);
4752 IMPORT_C static TInt FreePhysicalDevice(const TDesC& aDriverName);
4753 IMPORT_C static TInt LoadLogicalDevice(const TDesC& aFileName);
4754 IMPORT_C static TInt LoadPhysicalDevice(const TDesC& aFileName);
4755 // Version information
4756 IMPORT_C static TBool QueryVersionSupported(const TVersion& aCurrent,const TVersion& aRequested);
4757 IMPORT_C static TVersion Version();
4758 // Machine configuration
4759 IMPORT_C static TInt SetMachineConfiguration(const TDesC8& aConfig);
4760 IMPORT_C static TInt MachineConfiguration(TDes8& aConfig,TInt& aSize);
4761 // Debugging support
4762 IMPORT_C static void SetDebugMask(TUint32 aVal);
4763 IMPORT_C static void SetDebugMask(TUint32 aVal, TUint aIndex);
4764 IMPORT_C static void SetJustInTime(const TBool aBoolean);
4765 IMPORT_C static void Check();
4766 IMPORT_C static void Invariant();
4767 IMPORT_C static TBool JustInTime();
4768 IMPORT_C static void __DbgMarkStart(TBool aKernel);
4769 IMPORT_C static void __DbgMarkCheck(TBool aKernel, TBool aCountAll, TInt aCount, const TUint8* aFileName, TInt aLineNum);
4770 IMPORT_C static TUint32 __DbgMarkEnd(TBool aKernel, TInt aCount);
4771 IMPORT_C static void __DbgSetAllocFail(TBool aKernel, RAllocator::TAllocFail aFail, TInt aRate);
4772 IMPORT_C static void __DbgSetBurstAllocFail(TBool aKernel, RAllocator::TAllocFail aFail, TUint aRate, TUint aBurst);
4773 IMPORT_C static TUint __DbgCheckFailure(TBool aKernel);
4774 IMPORT_C static void PanicUnexpectedLeave(); /**< @internalComponent */
4776 IMPORT_C static TInt ValidateName(const TDesC& aName);
4777 // Instruction Memory Barrier
4778 IMPORT_C static void IMB_Range(TAny* aStart, TAny* aEnd);
4780 IMPORT_C static TInt CommandLineLength();
4781 IMPORT_C static void CommandLine(TDes &aCommand);
4782 IMPORT_C static TExceptionHandler ExceptionHandler();
4783 IMPORT_C static TInt SetExceptionHandler(TExceptionHandler aHandler,TUint32 aMask);
4784 IMPORT_C static void ModifyExceptionMask(TUint32 aClearMask, TUint32 aSetMask);
4785 IMPORT_C static TInt RaiseException(TExcType aType);
4786 IMPORT_C static TBool IsExceptionHandled(TExcType aType);
4789 A set of values that defines the effect that terminating a thread
4790 has, either on its owning process or on the whole system.
4792 A thread is said to be critical if its owning process or the entire system
4793 terminates when the thread itself terminates.
4795 You pass one of these values to the functions:
4796 - User::SetCritical()
4797 - User::SetProcessCritical()
4799 The meaning of a value when passed to one function is different to
4800 its meaning when passed the other function. See the description of each
4803 @see User::SetCritical()
4804 @see User::SetProcessCritical()
4810 This value can be passed to both:
4811 - User::SetCritical(), which means that the current thread
4812 is no longer critical, i.e. termination of the current
4813 thread will no longer cause termination of the current thread's
4814 owning process (i.e. the current process) or a reboot of the system.
4815 - User::SetProcessCritical(), which means that threads
4816 subsequently created in the current thread's owning
4817 process (i.e. the current process) will no longer cause termination of that
4818 process or a reboot of the system. Note, however, that existing
4819 threads are NOT affected when you call this function.
4821 @see User::SetCritical()
4822 @see User::SetProcessCritical()
4828 This value can only be passed to User::SetCritical() and
4829 affects the current thread only.
4831 It means that the owning process (i.e.the current process)
4833 - the current thread is terminated.
4834 - the current thread panics.
4836 @see User::SetCritical()
4842 This value can only be passed to User::SetCritical() and
4843 affects the current thread only.
4845 It means that the owning process (i.e.the current process)
4846 terminates if the current thread terminates for any reason.
4848 @see User::SetCritical()
4854 This value can only be passed to User::SetProcessCritical() and
4855 affects any new threads created in the current process.
4857 It means that the current process terminates if:
4858 - any new thread subsequently created in the current process is terminated.
4859 - any new thread subsequently created in the current process panics.
4861 Note, however, that existing threads in the current process
4862 are NOT affected when you call User::SetProcessCritical()
4865 @see EProcessCritical
4866 @see User::SetProcessCritical()
4868 EAllThreadsCritical,
4872 This value can be passed to both: User::SetCritical() and
4873 User::SetProcessCritical().
4875 When passed to User::SetCritical(), it means that
4876 the entire system is rebooted if:
4877 - the current thread is terminated.
4878 - the current thread panics.
4880 When passed to User::SetProcessCritical(), it means that
4881 the entire system is rebooted if:
4882 - any new thread subsequently created in the current process is terminated.
4883 - any new thread subsequently created in the current process panics.
4884 - the process itself is terminated
4885 - the process itself panics
4888 -# existing threads in the current process are NOT affected when you
4889 call User::SetProcessCritical() with this value.
4890 -# Only a process with 'Protected Server' capability can set a
4891 thread to system-critical.
4893 @see User::SetCritical()
4894 @see User::SetProcessCritical()
4900 This value can be passed to both: User::SetCritical()
4901 and User::SetProcessCritical().
4903 When passed to User::SetCritical(), it means that
4904 the entire system is rebooted if the current thread
4905 exits for any reason.
4907 When passed to User::SetProcessCritical(), it means that
4908 the entire system is rebooted if any new thread
4909 subsequently created in the current process exits
4910 for any reason, or if the process itself exits for any reason.
4913 -# existing threads in the current process are NOT affected when you
4914 call User::SetProcessCritical() with this value.
4915 -# Only a process with 'Protected Server' capability can set a
4916 thread to system-permanent.
4918 @see User::SetCritical()
4919 @see User::SetProcessCritical()
4923 IMPORT_C static TCritical Critical();
4924 IMPORT_C static TCritical Critical(RThread aThread);
4925 IMPORT_C static TInt SetCritical(TCritical aCritical);
4926 IMPORT_C static TCritical ProcessCritical();
4927 IMPORT_C static TCritical ProcessCritical(RProcess aProcess);
4928 IMPORT_C static TInt SetProcessCritical(TCritical aCritical);
4929 IMPORT_C static TBool PriorityControl();
4930 IMPORT_C static void SetPriorityControl(TBool aEnable);
4933 A threads realtime state.
4934 Some non-realtime behaviour can be detected by the kernel. When it does so,
4935 action is taken depending on the thread state:
4936 - ERealtimeStateOff - no action.
4937 - ERealtimeStateOn - the the thread will be panicked with KERN-EXEC 61 (EIllegalFunctionForRealtimeThread).
4938 - ERealtimeStateWarn - no action. However, if the kernel trace flag KREALTIME is enabled
4939 then tracing will be emitted as if the thread state was ERealtimeStateOn.
4945 ERealtimeStateOff, /**< Thread is not realtime */
4946 ERealtimeStateOn, /**< Thread is realtime */
4947 ERealtimeStateWarn /**< Thread is realtime but doesn't want this enforced */
4951 Set the current threads realtime state.
4953 @param aState The state
4954 @return KErrNone if successful. KErrArgument if aState is invalid.
4958 IMPORT_C static TInt SetRealtimeState(TRealtimeState aState);
4961 Return the Secure ID of the process that created the current process.
4962 @return The Secure ID.
4966 IMPORT_C static TSecureId CreatorSecureId();
4969 Return the Vendor ID of the process that created the current process.
4970 @return The Vendor ID.
4974 IMPORT_C static TVendorId CreatorVendorId();
4977 Check if the process that created the current process has a given capability
4979 When a check fails the action taken is determined by the system wide Platform Security
4980 configuration. If PlatSecDiagnostics is ON, then a diagnostic message is emitted.
4981 If PlatSecEnforcement is OFF, then this function will return ETrue even though the
4984 @param aCapability The capability to test.
4985 @param aDiagnostic A string that will be emitted along with any diagnostic message
4986 that may be issued if the test finds the capability is not present.
4987 This string must be enclosed in the __PLATSEC_DIAGNOSTIC_STRING macro
4988 which enables it to be easily removed from the system.
4989 @return ETrue if the creator process has the capability, EFalse otherwise.
4993 #ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
4994 inline static TBool CreatorHasCapability(TCapability aCapability, const char* aDiagnostic=0);
4995 #else //__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
4996 // Only available to NULL arguments
4997 inline static TBool CreatorHasCapability(TCapability aCapability, OnlyCreateWithNull aDiagnostic=NULL);
4998 #ifndef __REMOVE_PLATSEC_DIAGNOSTICS__
4999 // For things using KSuppressPlatSecDiagnostic
5000 inline static TBool CreatorHasCapability(TCapability aCapability, OnlyCreateWithNull aDiagnostic, OnlyCreateWithNull aSuppress);
5001 #endif // !__REMOVE_PLATSEC_DIAGNOSTICS__
5002 #endif // !__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
5005 Check if the process that created the current process has both of the given capabilities
5007 When a check fails the action taken is determined by the system wide Platform Security
5008 configuration. If PlatSecDiagnostics is ON, then a diagnostic message is emitted.
5009 If PlatSecEnforcement is OFF, then this function will return ETrue even though the
5012 @param aCapability1 The first capability to test.
5013 @param aCapability2 The second capability to test.
5014 @param aDiagnostic A string that will be emitted along with any diagnostic message
5015 that may be issued if the test finds a capability is not present.
5016 This string must be enclosed in the __PLATSEC_DIAGNOSTIC_STRING macro
5017 which enables it to be easily removed from the system.
5018 @return ETrue if the creator process has both the capabilities, EFalse otherwise.
5022 #ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
5023 inline static TBool CreatorHasCapability(TCapability aCapability1, TCapability aCapability2, const char* aDiagnostic=0);
5024 #else //__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
5025 // Only available to NULL arguments
5026 inline static TBool CreatorHasCapability(TCapability aCapability1, TCapability aCapability2, OnlyCreateWithNull aDiagnostic=NULL);
5027 #ifndef __REMOVE_PLATSEC_DIAGNOSTICS__
5028 // For things using KSuppressPlatSecDiagnostic
5029 inline static TBool CreatorHasCapability(TCapability aCapability, TCapability aCapability2, OnlyCreateWithNull aDiagnostic, OnlyCreateWithNull aSuppress);
5030 #endif // !__REMOVE_PLATSEC_DIAGNOSTICS__
5031 #endif // !__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
5033 IMPORT_C static TInt ParameterLength(TInt aSlot);
5034 IMPORT_C static TInt GetTIntParameter(TInt aSlot, TInt& aData);
5035 IMPORT_C static TInt GetDesParameter(TInt aSlot, TDes8& aDes);
5036 IMPORT_C static TInt GetDesParameter(TInt aSlot, TDes16& aDes);
5037 IMPORT_C static TInt RenameThread(const TDesC &aName);
5038 IMPORT_C static TInt RenameProcess(const TDesC &aName);
5040 User::Identity() has been deprecated and is available for backward
5041 compatibility purposes only.
5043 Use RProcess().SecureId() instead.
5047 inline static TUid Identity() { return RProcess().SecureId(); }
5050 User::CreatorIdentity() has been deprecated and is available for backward
5051 compatibility purposes only.
5053 Use CreatorSecureId() instead.
5057 static inline TUid CreatorIdentity() { return CreatorSecureId(); }
5059 IMPORT_C static void NotifyOnIdle(TRequestStatus& aStatus); /**< @internalTechnology */
5060 IMPORT_C static void CancelMiscNotifier(TRequestStatus& aStatus); /**< @internalTechnology */
5062 // Implementations of functions with diagnostics
5063 IMPORT_C static TBool DoCreatorHasCapability(TCapability aCapability, const char* aDiagnostic);
5064 IMPORT_C static TBool DoCreatorHasCapability(TCapability aCapability);
5065 IMPORT_C static TBool DoCreatorHasCapability(TCapability aCapability1, TCapability aCapability2, const char* aDiagnostic);
5066 IMPORT_C static TBool DoCreatorHasCapability(TCapability aCapability1, TCapability aCapability2);
5078 typedef void (*TTlsCleanupHandler)(TAny*); //don't use
5084 A collection of static functions involved in managing access to
5085 thread-local storage.
5087 Thread-local storage is a single machine word of static writable memory.
5088 The scope of this machine word is the thread, which means that there is one
5089 word per thread. The word is only accessible to code running in a DLL.
5091 In practice, this word is almost always used to hold a pointer to allocated
5092 memory; this makes that memory available to all DLL code running on behalf
5095 Note that DLL code running on behalf of one thread does not see the same word when
5096 running on behalf of another thread.
5098 The class in not intended for user derivation.
5103 static TInt SetTls(TAny* aPtr);
5105 static void FreeTls();
5106 static void FileName(TFileName &aFileName);
5117 A thin wrapper class for C++ arrays allowing automatic checking of index values
5118 to ensure that all accesses are legal.
5120 The class also supports the deletion of objects.
5122 The class is templated, based on a class type and an integer value. The class
5123 type defines the type of object contained in the array; the integer value
5124 defines the size (dimension) of the array.
5126 A wrapper object can be:
5128 1. embedded in objects allocated on the heap.
5130 2. used on the program stack.
5132 template <class T,TInt S>
5135 typedef TFixedArray<T,S> ThisClass;
5137 inline TFixedArray();
5138 inline TFixedArray(const T* aList, TInt aLength);
5140 inline void Copy(const T* aList, TInt aLength);
5141 inline void Reset(); // zero fill
5142 inline void DeleteAll();
5144 inline TInt Count() const;
5145 inline TInt Length() const;
5146 // Accessors - debug range checking
5147 inline T& operator[](TInt aIndex);
5148 inline const T& operator[] (TInt aIndex) const;
5149 // Accessors - always range checking
5150 inline T& At(TInt aIndex);
5151 inline const T& At(TInt aIndex) const;
5152 // Provides pointers to the beginning and end of the array
5155 inline const T* Begin() const;
5156 inline const T* End() const;
5158 inline TArray<T> Array() const;
5160 inline static TBool InRange(TInt aIndex);
5161 inline static TInt CountFunctionR(const CBase* aThis);
5162 inline static const TAny* AtFunctionR(const CBase* aThis,TInt aIndex);
5174 #define DECLARE_ROM_ARRAY( AName, AData, AType ) \
5175 const TFixedArray<AType,(sizeof(AData)/sizeof((AData)[0]))>& \
5176 AName = *(reinterpret_cast<const TFixedArray<AType, \
5177 (sizeof(AData)/sizeof((AData)[0]))>* > (AData))
5180 // Global leaving operator new
5185 inline TAny* operator new(TUint aSize, TLeave);
5190 inline TAny* operator new(TUint aSize, TLeave, TUint aExtraSize);
5191 #if !defined(__VC32__) || defined (__MSVCDOTNET__)
5196 inline TAny* operator new[](TUint aSize, TLeave);
5200 #ifdef __LEAVE_EQUALS_THROW__
5201 /** Macro to assert in all builds that code does not leave
5203 @param _s C++ statements to be executed which should not leave
5204 @panic USER 194 if the code being checked does leave
5209 #define __ASSERT_ALWAYS_NO_LEAVE(_s) \
5212 TTrapHandler* ____t = User::MarkCleanupStack(); \
5214 User::UnMarkCleanupStack(____t); \
5216 catch (XLeaveException& /*l*/) \
5218 User::PanicUnexpectedLeave(); \
5222 User::Invariant(); \
5227 /** Macro to assert in all builds that code does not leave
5229 @param _s C++ statements to be executed which should not leave
5230 @panic USER 194 if the code being checked does leave
5235 #define __ASSERT_ALWAYS_NO_LEAVE(_s) \
5239 if (_t.Trap(_r) == 0) \
5245 User::PanicUnexpectedLeave(); \
5249 /** Macro to assert in debug builds that code does not leave
5251 @param _s C++ statements to be executed which should not leave
5252 @panic USER 194 if the code being checked does leave
5258 #define __ASSERT_DEBUG_NO_LEAVE(_s) __ASSERT_ALWAYS_NO_LEAVE(_s)
5260 #define __ASSERT_DEBUG_NO_LEAVE(_s) { _s; }
5266 #include <e32std.inl>
5268 #ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
5269 #include <e32std_private.h>