123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865 |
- {%MainUnit ../symbian.pas}
- {
- This file is part of the Free Pascal run time library.
- Copyright (c) 2007 by contributors of the Free Pascal Compiler
- This file is a pascal translation of the Symbian OS headers
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- { e32\include\e32def.h
- *
- * Copyright (c) Symbian Software Ltd 1994-2005. All rights reserved.
- *
- * NOTE: THIS FILE SHOULD BE ACCEPTABLE TO A C COMPILER
- }
- {
- * __LEAVE_EQUALS_THROW__ requires the compiler to support C++ exceptions
- }
- {#ifndef __SUPPORT_CPP_EXCEPTIONS__
- #undef __LEAVE_EQUALS_THROW__
- #endif}
- {#ifdef __PROFILING__
- /**
- @publishedPartner
- @removed
- */
- #define __PROFILE_START(aBin) RDebug::ProfileStart(aBin)
- /**
- @publishedPartner
- @removed
- */
- #define __PROFILE_END(aBin) RDebug::ProfileEnd(aBin)
- /**
- @publishedPartner
- @removed
- */
- #define __PROFILE_RESET(aNumberOfBins) RDebug::ProfileReset(0,aNumberOfBins)
- /**
- @publishedPartner
- @removed
- */
- #define __PROFILE_DISPLAY(aNumberOfBins) \
- begin TFixedArray<TProfile, aNumberOfBins> result; \
- RDebug::ProfileResult(result.Begin(), 0, aNumberOfBins); \
- for (TInt i=0; i<aNumberOfBins; i++) \
- RDebug::Print(_L("Profile bin %d: Calls: %d, Clock ticks: %d\n" ),i,res[i].iCount,result[i].iTime); \
- end
- #else /* __PROFILING__ */
- #define __PROFILE_START(aBin)
- #define __PROFILE_END(aBin)
- #define __PROFILE_RESET(aNumberOfBins)
- #define __PROFILE_DISPLAY(aNumberOfBins)
- #endif}
- {#if defined(__VC32__)
- /**
- @publishedAll
- @released
- */
- #define __NO_CLASS_CONSTS__
- #if (_MSC_VER >= 1200)
- /**
- @publishedAll
- @released
- */
- #define __NORETURN__ __declspec(noreturn)
- #else
- #define __NORETURN__
- #endif
- /**
- @publishedAll
- @released
- */
- #define __NORETURN_TERMINATOR()
- /**
- @publishedAll
- @released
- */
- #define IMPORT_C __declspec(dllexport)
- /**
- @publishedAll
- @released
- */
- #define EXPORT_C __declspec(dllexport)
- /**
- @publishedAll
- @released
- */
- #define NONSHARABLE_CLASS(x) class x
- /**
- @publishedAll
- @released
- */
- #define NONSHARABLE_STRUCT(x) struct x
- /**
- @publishedAll
- @released
- */
- #define __NO_THROW throw()
- /**
- @publishedAll
- @released
- */
- #define __THROW(t) throw(t)
- #pragma warning( disable : 4355 ) /* 'this' used in base member initializer list */
- #pragma warning( disable : 4511 ) /* copy constructor could not be generated */
- #pragma warning( disable : 4512 ) /* assignment operator could not be generated */
- #pragma warning( disable : 4514 ) /* unreferenced inline function has been removed */
- #pragma warning( disable : 4699 ) /* Note: Using precompiled header %s */
- #pragma warning( disable : 4710 ) /* function not inlined */
- #pragma warning( disable : 4121 ) /* alignment sensitive to packing */
- #pragma warning( disable : 4273 )
- #pragma warning( disable : 4097 ) /* typedef-name 'identifier1' used as synonym for class-name 'identifier2' */
- #pragma warning( disable : 4291 ) /* 'TAny *CBase::operator new(TUint,TLeave)' : no matching operator delete found; memory will not be freed if initialization throws an exception */
- #if _MSC_VER >= 1100
- /**
- @publishedAll
- @released
- */
- #define TEMPLATE_SPECIALIZATION template<>
- #else
- #define TEMPLATE_SPECIALIZATION
- #endif
- #endif}
- {#if defined(__CW32__)
- #undef __embedded_cplusplus
- /** @internalTechnology */
- #define __embedded_cplusplus 1
- #define __NO_CLASS_CONSTS__
- #define __NORETURN__
- #define __NORETURN_TERMINATOR()
- #define IMPORT_C __declspec(dllexport)
- #define EXPORT_C __declspec(dllexport)
- #define NONSHARABLE_CLASS(x) class x
- #define NONSHARABLE_STRUCT(x) struct x
- #define __NO_THROW throw()
- #define __THROW(t) throw(t)
- #define TEMPLATE_SPECIALIZATION template<>
- /**
- @publishedAll
- @released
- */
- #define _asm asm
- #ifndef __int64
- #pragma longlong on
- /** @internalTechnology */
- #define __int64 long long
- #endif
- #ifndef __SUPPORT_CPP_EXCEPTIONS__
- #pragma exceptions off /* no support for C++ exception handling */
- #pragma RTTI off /* no support for C++ runtime type information */
- #endif
- #if __MWERKS__ >= 0x3200
- #pragma warning off (10480) /* deleteing void pointer is undefined */
- #pragma warning off (10350) /* N pad byte(s) inserted after data member */
- #endif
- #endif}
- {#if defined(__GCC32__)
- #define __NO_CLASS_CONSTS__
- #define __NORETURN__ __attribute__ ((noreturn))
- #ifdef __GCCV3__
- #define __NORETURN_TERMINATOR()
- #else
- #define __NORETURN_TERMINATOR() abort()
- #endif
- #define IMPORT_C
- #if !defined __WINS__ && defined _WIN32 /* VC++ Browser Hack */
- #define EXPORT_C
- /** @internalTechnology */
- #define asm(x)
- #else
- #define EXPORT_C __declspec(dllexport)
- #endif
- #define NONSHARABLE_CLASS(x) class x
- #define NONSHARABLE_STRUCT(x) struct x
- #define __NO_THROW
- #define __THROW(t)
- #ifdef __EABI__
- #define TEMPLATE_SPECIALIZATION template<>
- #else
- #define TEMPLATE_SPECIALIZATION
- #endif
- #endif}
- {#ifdef __GCC32__
- /**
- @publishedAll
- @released
- */
- #define __DOUBLE_WORDS_SWAPPED__
- #endif}
- { @internalTechnology }
- {#define __NO_MUTABLE_KEYWORD
- #if defined(__NO_MUTABLE_KEYWORD)
- /**
- @publishedAll
- @deprecated
- */
- #define __MUTABLE
- #else
- #define __MUTABLE mutable
- #endif}
- {/**
- @publishedAll
- @deprecated
- */
- #define CONST_CAST(type,exp) (const_cast<type>(exp))
- /**
- @publishedAll
- @deprecated
- */
- #define STATIC_CAST(type,exp) (static_cast<type>(exp))
- /**
- @publishedAll
- @deprecated
- */
- #define REINTERPRET_CAST(type,exp) (reinterpret_cast<type>(exp))
- #if defined(__NO_MUTABLE_KEYWORD)
- /**
- @publishedAll
- @deprecated
- */
- #define MUTABLE_CAST(type,exp) (const_cast<type>(exp))
- #else
- #define MUTABLE_CAST(type,exp) (exp)
- #endif
- /**
- @publishedAll
- @deprecated
- */
- #define GLREF_D extern
- /**
- @publishedAll
- @deprecated
- */
- #define GLDEF_D
- /**
- @publishedAll
- @deprecated
- */
- #define LOCAL_D static
- /**
- @publishedAll
- @deprecated
- */
- #define GLREF_C extern
- /**
- @publishedAll
- @deprecated
- */
- #define GLDEF_C
- /**
- @publishedAll
- @deprecated
- */
- #define LOCAL_C static
- /**
- @publishedAll
- @deprecated
- */
- #define FOREVER for(;;)}
- {/**
- @publishedAll
- @released
- Symbolic definition for a true value.
- */
- #define TRUE 1}
- {/**
- @publishedAll
- @released
- Symbolic definition for a false value.
- */
- #define FALSE 0
- #ifndef NULL}
- {/**
- @publishedAll
- @released
- Symbolic definition for a NULL value.
- */
- #define NULL 0
- #endif}
- {#ifndef VA_START
- /**
- @publishedAll
- @released
- A macro used by Symbian OS code for handling a variable argument list
- in a function call.
- Sets a pointer to point to the first of the variable arguments.
- Typical usage:
- @code
- Foo(CAbcdef aAbcdef,...)
- {
- VA_LIST list;
- VA_START(list, aAbcdef);
- // other code
- }
- @endcode
- @param ap A pointer used to hold the address of an argument in
- the variable argument list. After execution of the code generated
- by this macro, the pointer points to the first argument in
- the variable argument list.
- This symbol is usually declared as a VA_LIST type.
- @param pn The argument that immediately precedes the variable argument list.
- @see VA_LIST
- @see VA_ARG
- */
- #define VA_START(ap,pn) ((ap)[0]=(TInt8 *)&pn+((sizeof(pn)+sizeof(TInt)-1)&~(sizeof(TInt)-1)),(void)0)
- #endif}
- {#ifndef VA_ARG
- /**
- @publishedAll
- @released
- A macro used by Symbian OS code for handling a variable argument list
- in a function call.
- Increments a pointer to a variable argument list to point to the next argument
- in the list. The current argument is assumed to be of a type defined by
- the second parameter to this macro.
- Typical usage:
- @code
- Foo(CAbcdef aAbcdef,...)
- {
- VA_LIST list;
- VA_START(list, aAbcdef);
- ...
- TInt x = VA_ARG(list,TInt);
- ...
- const TDesC *pS=VA_ARG(aList,const TDesC*);
- ...
- etc
- }
- @endcode
- @param ap A pointer used to hold the address of an argument in
- the variable argument list. It is assumed to point to the current
- argument in the variable argument list. After execution of the code
- generated by this macro, the pointer points to the next argument in
- the list. This symbol is usually declared as a VA_LIST type.
- @param type The type of the current argument.
- This can be any valid type, for example, TInt, const TDesC*, etc.
- @see VA_LIST
- @see VA_START
- */
- #define VA_ARG(ap,type) ((ap)[0]+=((sizeof(type)+sizeof(TInt)-1)&~(sizeof(TInt)-1)),(*(type *)((ap)[0]-((sizeof(type)+sizeof(TInt)-1)&~(sizeof(TInt)-1)))))
- #endif }
- {#ifndef VA_END
- /**
- @publishedAll
- @released
- A macro used by Symbian OS code for handling a variable argument list
- in a function call.
- Sets a pointer to zero.
- @param ap A pointer used to hold the address of an argument in
- the variable argument list. After execution of the code generated
- by this macro, the pointer is reset to 0.
- This symbol is usually declared as a VA_LIST type.
- @see VA_LIST
- @see VA_START
- @see VA_ARG
- */
- #define VA_END(ap) ((ap)[0]=0,(void)0)
- #endif}
- {/**
- @publishedAll
- @released
- Calculates the offset of member f within class c.
- This is used in the TSglQue and TDblQue constructors to set the offset of
- the link object from the start of a list element.
- @param c The name of the class.
- @param f The name of the member within the specified class.
- @see TSglQue
- @see TDblQue
- */
- #define _FOFF(c,f) (((TInt)&(((c *)0x1000)->f))-0x1000)
- /**
- @internalTechnology
- @released
- */
- #define _ALIGN_DOWN(x,a) ((x)&~((a)-1))
- /**
- @internalTechnology
- @released
- */
- #define _ALIGN_UP(x,a) _ALIGN_DOWN((x)+(a)-1, a)
- }
- {
- @publishedAll
- @released
- Pointer to any type.
- TAny* is equivalent to void* in standard C or C++. TAny* is used in preference
- to void* because it is more suggestive of the actual meaning,
- e.g. TAny* foo();.
- TAny is not used where it really means "nothing", as in the declaration of
- functions which do not return a value; void is used instead, e.g. void Foo();.
- }
- type TAny = Pointer;
- {
- @publishedAll
- @released
- 8-bit signed integer type, used in Symbian OS to mean an 8-bit
- unsigned integer, independent of the implementation.
- }
- type TInt8 = Byte;
- {
- @publishedAll
- @released
- 8-bit unsigned integer type; used in Symbian OS to mean an 8-bit
- unsigned integer, independent of the implementation.
- }
- type TUint8 = Char;
- {
- @publishedAll
- @released
- 16-bit signed integer type, used in Symbian OS to mean a 16-bit
- unsigned integer, independent of the implementation.
- }
- type TInt16 = ShortInt;
- {
- @publishedAll
- @released
- 16-bit unsigned integer type. used in Symbian OS to mean a 16-bit
- unsigned integer, independent of the implementation.
- }
- type TUint16 = Word;
- {
- @publishedAll
- @released
- 32-bit signed integer type, used in Symbian OS to mean a 32-bit
- unsigned integer, independent of the implementation.
- }
- type TInt32 = Integer;
- {
- @publishedAll
- @released
- 32-bit unsigned integer type; used in Symbian OS to mean a 32-bit
- unsigned integer, independent of the implementation.
- }
- type TUint32 = Cardinal;
- {
- @publishedAll
- @released
- Signed integer type of the natural machine word length.
- This is as defined by the C++ implementation's int type. In all
- implementations, this is guaranteed to be at least 32 bits.
- A TInt should be used in preference to a sized integer (TInt32, TInt16) for
- all general use. Sized integers should only be used when packing is essential.
- C++'s type conversion rules imply that all sized integers smaller than the
- natural machine word are in any case broadened to the natural machine word
- size when passed as function parameters.
- A TInt should be used in preference to an unsigned integer (TUint) for all
- general use. Unsigned integers should only be used for flags (which use Boolean
- operations but not arithmetic) and, in very rare cases, for numbers whose
- range exceeds that available from signed integers. Although it is natural
- to attempt to use unsigned integers for quantities which cannot by nature
- be negative, the C++ language does not provide the support necessary to enforce
- the "expected" behaviour in these circumstances, and experience has shown
- that it is better to use signed integers unless there is good reason not to.
- @see TUint
- @see TInt32
- @see TInt16
- }
- type TInt = cint;
- {
- @publishedAll
- @released
- Unsigned integer type of the natural machine word length.
- This is guaranteed to be at least 32 bits in all implementations.
- In almost all circumstances, a TInt should be used in preference to a TUint.
- The main exception is in flags bytes.
- @see TInt
- }
- type TUint = cuint;
- {
- @publishedAll
- @released
- 32-bit floating point number, providing IEEE754 single precision on all Symbian
- OS implementations.
- TReal should normally be used in preference to TReal32.
- Use of floating-point numbers should generally be avoided unless a natural
- part of the problem specification. Most Symbian OS implementations do not
- have a hardware floating point unit: as a result, their floating-point performance
- is hundreds of times slower than integer performance.
- }
- //type float TReal32;
- {
- @publishedAll
- @released
- 64-bit floating point number, providing IEEE754 double precision on all Symbian
- OS implementations.
- Use of floating-point numbers should generally be avoided unless a natural
- part of the problem specification. Most Symbian OS implementations do not
- have a hardware floating point unit: as a result, their floating-point performance
- is hundreds of times slower than integer performance.
- This type is identical to TReal.
- @see TReal
- }
- //type double TReal64;
- {
- @publishedAll
- @released
- 64-bit floating point number; identical to TReal64.
- Use of floating-point numbers should generally be avoided unless a natural
- part of the problem specification. Most Symbian OS implementations do not
- have a hardware floating point unit: as a result, their floating-point performance
- is hundreds of times slower than integer performance.
- Most serious floating-point calculations require double-precision. All standard
- math functions (see Math class) take double-precision arguments. Single-precision
- should only be used where space and performance are at a premium, and when
- their limited precision is acceptable.
- @see TReal64
- @see Math
- }
- //type double TReal;
- {
- @publishedAll
- @released
- 8-bit unsigned character.
- Use instead of C++ built-in char type because it is guaranteed to be unsigned.
- Use instead of TInt8 where the application is really for text rather than
- 8-bit arithmetic or binary quantities.
- For most purposes, you should use TText rather than TText8. TText is mapped
- onto either TText8 or TText16 depending on whether a non-Unicode or Unicode
- variant is being built. Use TText8 only when you are dealing explicitly with
- 8-bit text, regardless of build.
- @see TText }
- type TText8 = Char;
- {
- @publishedAll
- @released
- 16-bit unsigned character.
- Use instead of C++ wchar_t type because it is guaranteed to be unsigned. Use
- instead of TInt16 where the application is really for text rather than 8-bit
- arithmetic or binary quantities.
- For most purposes, you should use TText rather than TText16. TText is mapped
- onto either TText8 or TText16 depending on whether a non-Unicode or Unicode
- variant is being built. Use TText16 only when you are dealing explicitly with
- 16-bit text, regardless of build.
- @see TText
- }
- type TText16 = Word;
- {
- @publishedAll
- @released
- Boolean type which takes the value either ETrue or EFalse.
- Although only a single bit would theoretically be necessary to represent a
- Boolean, a machine word is used instead, so that these quantities can be easily
- passed. Also, TBool must map onto int because of C++'s interpretation of
- operands in conditional expressions.
- On implementations of Symbian OS in which the compiler supports the ANSI-recommended
- bool type, TBool will be type'ed to bool instead of int.
- }
- //type int TBool;
- {
- @publishedPartner
- @released
- Defines a linear (virtual) address type.
- }
- type TLinAddr = TUint32;
- {
- @internalTechnology
- A sorted list of all the code segments in ROM that contain an Exception Descriptor.
- }
- type
- TRomExceptionSearchTable = record
- {
- The number of entries in the following table.
- }
- iNumEntries: TInt32;
- {
- Address of the code segment of each TRomImageHeader that has an Exception Descriptor.
- }
- iEntries: array[0..0] of TLinAddr;
- end;
- {
- @internalComponent
- }
- {type
- TExceptionDescriptor = record
- TLinAddr iExIdxBase;
- TLinAddr iExIdxLimit;
- TLinAddr iROSegmentBase;
- TLinAddr iROSegmentLimit;
- end;}
- {$if defined(__GCC32__)}
- {
- @publishedAll
- @released
- Defines a 64-bit signed integer type.
- }
- //type Int64;
- {
- @publishedAll
- @released
- Defines a 64-bit unsigned integer type.
- }
- //type unsigned long long Uint64;
- {
- @publishedAll
- @released
- }
- #define I64LIT(x) x##LL
- {
- @publishedAll
- @released
- }
- #define UI64LIT(x) x##ULL
- #elif defined(__VC32__)
- type __int64 Int64;
- type unsigned __int64 Uint64;
- #define I64LIT(x) (__int64)##x
- #define UI64LIT(x) (unsigned __int64)##x
- #elif defined(__CW32__)
- #pragma longlong on
- type long long Int64;
- type unsigned long long Uint64;
- #define I64LIT(x) x##LL
- #define UI64LIT(x) x##ULL
- {$endif}
- {
- @publishedAll
- @released
- Defines a 64-bit signed integer type.
- NOTE: For those migrating from versions of Symbian OS before 8.1b (i.e. 8.1a, 7.0s etc)
- TInt64 is now defined as a built-in type instead of as a class type. This means
- that the member functions of the old TInt64 class are no longer exported
- from EUSER.LIB, and represents a compatibility break.
- To ease migration of source code, a number of macros are provided. Similar
- macros have also been defined in Symbian OS versions 7.0s and 8.1a, but
- implemented in terms of the old TInt64 class. This is important for code that
- is common to : one or both of these Symbian OS versions, and to 8.1b and
- subsequent versions.
- The following list shows the new macros and the functions that they replace.
- It also shows some alternative techniques.
- In this list: x, v and r are declared as TInt64, c is declared as TInt, High
- and Low are declared as TUint.
- @code
- OLD USAGE REPLACEMENT
- TInt64(High,Low); MAKE_TINT64(High,Low);
- x.Set(High,Low); MAKE_TINT64(High,Low);
- x.Low(); I64LOW(x);
- x.High(); I64HIGH(x);
- x.GetTInt(); I64INT(x);
- x.GetTReal(); I64REAL(x);
- x.Lsr(c); I64LSR(x,c);
- x.Mul10(); x*=10;
- x.MulTop(a); I64MULTOP(x,a);
- x.DivMod(v,r); r=x%v; x/=v;
- @endcode
- }
- type TInt64 = Int64;
- {
- @publishedAll
- @released
- Defines a 64-bit unsigned integer type.
- }
- //type Uint64 TUint64;
- { @internalComponent }
- //#define _MAKE_TINT64_ZX(x) ((TInt64)((TUint32)(x)))
- { @internalComponent }
- //#define _MAKE_TUINT64_ZX(x) ((TUint64)((TUint32)(x)))
- {
- @publishedAll
- @released
- }
- //#define MAKE_TINT64(h,l) ( (_MAKE_TINT64_ZX(h)<<32) | _MAKE_TINT64_ZX(l) )
- {
- @publishedAll
- @released
- }
- //#define MAKE_TUINT64(h,l) ( (_MAKE_TUINT64_ZX(h)<<32) | _MAKE_TUINT64_ZX(l) )
- {
- @publishedAll
- @released
- Generates code to access the high order 32 bits of a 64 bit number.
- }
- //#define I64HIGH(x) ( (TUint32)((x)>>32) )
- {
- @publishedAll
- @released
- Generates code to access the low order 32 bits of a 64 bit number.
- }
- //#define I64LOW(x) ( (TUint32)(x) )
- {
- @publishedAll
- @released
- Generates code to cast a 64 bit value as an signed integer.
- }
- //#define I64INT(x) ( (TInt)(x) )
- {
- @publishedAll
- @released
- Generates code to cast a 64 bit value as a TReal type.
- }
- //#define I64REAL(x) ( (TReal)(x) )
- {
- @publishedAll
- @released
- Generates code to logically shift a 64 bit integer right.
- }
- //#define I64LSR(x, shift) ( *reinterpret_cast<TUint64*>(&(x)) >>= (shift) )
- {
- @publishedAll
- @released
- Generates code to multiply a 64 bit integer by 10.
- }
- //#define I64MUL10(x) ( (x) *= 10 )
- {
- @publishedAll
- @released
- Generates code to divide a 64 bit integer by another and find the remainder.
- }
- //#define I64DIVMOD(x, divisor, remainder) ( ((remainder) = (x) % (divisor), (x) /= (divisor)) )
- {
- @publishedAll
- @released
- Generates code to cast a double to a 64 bit integer.
- }
- //#define I64DOUBLECAST(x) ( static_cast<TInt64>(x) )
- {
- @publishedAll
- @deprecated Use _LIT8 instead.
- 8-bit literal.
- The macro defines an explicit 8-bit constant literal which is suitable
- for non-Unicode literal text, regardless of the build.
- @see _L
- @see _LIT8
- @see _LIT
- }
- //#define _L8(a) (TPtrC8((const TText8 *)(a)))
- {
- @publishedAll
- @released
- Defines an explicit 8-bit string which is suitable when non-Unicode text
- is required, regardless of the build.
- This is used by the deprecated literal descriptor _L8.
- }
- //#define _S8(a) ((const TText8 *)a)
- {
- @publishedAll
- @released
- Constructs a constant literal descriptor of type TLitC8<TInt> with
- the specified name and text.
- The 8-bit build variant is generated for both non-Unicode and Unicode builds.
- @param name The name of the C++ variable to be generated.
- @param s The literal text enclosed within a pair of double quotes.
- @see _LIT
- }
- //#define _LIT8(name,s) const static TLitC8<sizeof(s)> name={sizeof(s)-1,s}
- {
- @publishedAll
- @deprecated Use _LIT16 instead.
- 16-bit literal.
- The macro defines an explicit 16-bit constant literal which is suitable
- for Unicode literal text, regardless of the build.
- @see _L
- @see _LIT16
- @see _LIT
- }
- //#define _L16(a) (TPtrC16((const TText16 *)L ## a))
- {
- @publishedAll
- @released
- Defines an explicit 16-bit string which is suitable when Unicode text
- is required, regardless of the build.
- This is used by the deprecated literal descriptor _L16.
- }
- //#define _S16(a) ((const TText16 *)L ## a)
- {
- @publishedAll
- @released
- Constructs a constant literal descriptor of type TLitC16<TInt> with
- the specified name and text.
- The 16-bit build variant is generated for both non-Unicode and Unicode builds.
- @param name The name of the C++ variable to be generated.
- @param s The literal text enclosed within a pair of double quotes.
- @see _LIT
- }
- //#define _LIT16(name,s) const static TLitC16<sizeof(L##s)/2> name={sizeof(L##s)/2-1,L##s}
- {$if defined(_UNICODE) and not defined(__KERNEL_MODE__)}
- {
- @publishedAll
- @released
- Build independent general text character.
- In non-Unicode builds, this is mapped to TText8. In Unicode builds, this is
- mapped to TText16. Use the classes with explicit width only when you wish
- the width to be independent of the build variant.
- Use this class rather than TChar for general use.
- }
- type TText16 TText;
- {
- @publishedAll
- @deprecated Use _LIT instead.
- Build independent literal.
- The macro defines either an 8-bit constant literal (for non-Unicode text),
- or a 16-bit constant literal (for Unicode text) depending on the build.
- @see _LIT
- @see _L16
- @see _L8
- }
- #define _L(a) (TPtrC((const TText *)L ## a))
- {
- @publishedAll
- @released
- Defines either an 8-bit string (for non-Unicode text),
- or a 16-bit string (for Unicode text) depending on the build.
- This is used by the deprecated build independent literal _L.
- }
- #define _S(a) ((const TText *)L ## a)
- {
- @publishedAll
- @released
- Constructs a build independent constant literal descriptor of type TLitC<TInt>
- with the specified name and text.
- An 8-bit build variant is generated for a non-Unicode build;
- A 16-bit build variant is generated for a Unicode build.
- @param name The name of the C++ variable to be generated.
- @param s The literal text enclosed within a pair of double quotes.
- @see _LIT16
- @see _LIT8
- }
- #define _LIT(name,s) const static TLitC<sizeof(L##s)/2> name={sizeof(L##s)/2-1,L##s}
- {$else}
- {
- @publishedAll
- @released
- Build independent general text character.
- In non-Unicode builds, this is mapped to TText8. In Unicode builds, this is
- mapped to TText16. Use the classes with explicit width only when you wish
- the width to be independent of the build variant.
- Use this class rather than TChar for general use.
- }
- type TText = TText8;
- {
- @publishedAll
- @released
- @deprecated Use _LIT instead.
- Build independent literal.
- The macro defines either an 8-bit constant literal (for non-Unicode text),
- or a 16-bit constant literal (for Unicode text) depending on the build.
- @see _LIT
- @see _L16
- @see _L8
- }
- //#define _L(a) (TPtrC((const TText *)(a)))
- {
- @publishedAll
- @released
- Defines either an 8-bit string (for non-Unicode text),
- or a 16-bit string (for Unicode text) depending on the build.
- This is used by the deprecated build independent literal _L.
- }
- //#define _S(a) ((const TText *)a)
- {
- @publishedAll
- @released
- Constructs a build independent constant literal descriptor of type TLitC<TInt>
- with the specified name and text.
- An 8-bit build variant is generated for a non-Unicode build;
- A 16-bit build variant is generated for a Unicode build.
- @param name The name of the C++ variable to be generated.
- @param s The literal text enclosed within a pair of double quotes.
- @see _LIT16
- @see _LIT8
- }
- //#define _LIT(name,s) const static TLitC<sizeof(s)> name={sizeof(s)-1,s}
- {$endif}
- {$ifndef __VA_LIST_defined}
- {
- @publishedAll
- @released
- Defines a 'C' style array of pointers to TInt8 types.
- The type is most commonly used by code that needs to deal with a variable
- number of arguments passed to a function.
- @see TInt8
- }
- //type TInt8 *VA_LIST[1];
- {$endif}
- {
- @publishedAll
- @released
- Asserts that a condition is true.
- Code is generated for all builds.
- This macro is used as a C++ statement to assert the truth of some condition,
- and to take appropriate action if the condition is false. Unlike __ASSERT_DEBUG
- it is defined in both release and debug builds.
- The most common use for this macro is to check that the external environment of
- a function or class is behaving as expected; for example, that parameters
- passed to a function are credible, or that called functions are behaving as
- expected; the macro is commonly placed at the beginning of a function.
- The effect of the macro is to generate code which tests
- the conditional expression c; if the expression is false, then
- function p is called. In the majority of cases, the function p is one that
- raises a panic.
- Note that the macro definition is, in effect, equivalent to:
- @code
- if !(c)p;
- @endcode
- @param c a conditional expression which results in true or false.
- @param p a function which is called if the conditional expression c is false.
- @see __ASSERT_DEBUG
- }
- //#define __ASSERT_ALWAYS(c,p) (void)((c)||(p,0))
- //#ifdef __WINS__
- //#ifdef __CW32__
- {
- @internalAll
- @released
- }
- //#define __BREAKPOINT() \
- // { \
- // __asm { byte 0xcc }; \
- // }
- //#else //!__CW32__
- {
- @internalAll
- @released
- }
- //#define __BREAKPOINT() \
- // { \
- // __asm { int 3 }; \
- // }
- //#endif //__CW32__
- //#else
- {
- @internalAll
- @released
- }
- //#define __BREAKPOINT()
- //#endif
- //#if defined(_DEBUG)
- {
- @internalComponent
- @deprecated
- }
- //#define __ASSERT_DEBUG_MB(aCond,aPanicNo) (void)((aCond)||(PanicMB(aPanicNo,_L(#aPanicNo),_L(#aCond)),0))
- {
- @publishedAll
- @released
- Asserts that a condition is true.
- Code is generated for debug builds only.
- This macro is used as a C++ statement to assert the truth of some condition,
- and to take appropriate action if the condition is false. It is used in
- the same way as __ASSERT_ALWAYS, except that it is only defined for debug builds.
- The macro may be used to insert extra checks at various points in source code
- as desired; the code will only be generated in debug builds and not in release
- builds.
- @param c A conditional expression which results in true or false.
- @param p A function which is called if the conditional expression c is false.
- @see __ASSERT_ALWAYS
- }
- //#define __ASSERT_DEBUG(c,p) (void)((c)||(p,0))
- {
- @internalAll
- @removed
- }
- //#define __DECLARE_NAME(t)
- {
- @publishedAll
- @released
- Calls the function for testing object invariance.
- Classes can define a standard member function __DbgTestInvariant(),
- which checks that the object is in a valid state, and panics if it is not.
- In debug builds, this macro simply expands to call that function. For details on how
- to define __DbgTestInvariant(), and an example of its use, see __DECLARE_TEST.
- The macro is typically invoked at the beginning of all the member functions of
- the class. For non-const functions (those which can change the object’s state),
- you can ensure that the object has been left in a stable state by invoking
- the macro at the end of the function.
- In release builds, no code is generated for the macro.
- }
- //#define __TEST_INVARIANT __DbgTestInvariant()
- {
- @publishedAll
- @released
- Marks the start of checking the current thread's heap.
- This macro is defined only for debug builds.
- This macro must be matched by a corresponding call to __UHEAP_MARKEND or __UHEAP_MARKENDC.
- Calls to this macro can be nested but each call must be matched by corresponding
- call to __UHEAP_MARKEND or __UHEAP_MARKENDC.
- @see User::__DbgMarkStart()
- @see __UHEAP_MARKEND
- @see __UHEAP_MARKENDC
- }
- //#define __UHEAP_MARK User::__DbgMarkStart(FALSE)
- {
- @publishedAll
- @released
- Checks that the number of allocated cells at the current nested level on the
- current thread's heap is the same as the specified value.
- This macro is defined only for debug builds.
- The macro also takes the name of the file containing this source code statement
- and the line number of this source code statement; they are displayed as part
- of the panic category, if the checks fail.
- The macro assumes that:
- 1. the heap being checked is a user heap
- 2. checking is being done for the number of allocated cells at the current nested
- level; i.e. that aCountAll is set to false
- 3. the line number is the line number of this source code statement.
- 4. the file name is the full path name of the file containing this source statement
- @param aCount The number of heap cells expected to be allocated at
- the current nest level.
- @see User::__DbgMarkCheck()
- @see __KHEAP_CHECK
- }
- //#define __UHEAP_CHECK(aCount) User::__DbgMarkCheck(FALSE,FALSE,aCount,(TText8*)__FILE__,__LINE__)
- {
- @publishedAll
- @released
- Checks that the total number of allocated cells on the current thread's heap
- is the same as the specified value.
- This macro is defined only for debug builds.
- The macro also takes the name of the file containing this source code statement
- and the line number of this source code statement; they are displayed as part
- of the panic category, if the checks fail.
- @param aCount The total number of heap cells expected to be allocated.
- @see User::__DbgMarkCheck()
- @see __KHEAP_CHECKALL
- }
- //#define __UHEAP_CHECKALL(aCount) User::__DbgMarkCheck(FALSE,TRUE,aCount,(TText8*)__FILE__,__LINE__)
- {
- @publishedAll
- @released
- Marks the end of checking the current thread's heap.
- The macro expects zero heap cells to remain allocated at the current nest
- level. This macro is defined only for debug builds.
- This macro must match an earlier call to __UHEAP_MARK.
- @see User::__DbgMarkEnd()
- @see __UHEAP_MARK
- }
- //#define __UHEAP_MARKEND User::__DbgMarkEnd(FALSE,0)
- {
- @publishedAll
- @released
- Marks the end of checking the current thread's heap.
- The macro expects aCount heap cells to remain allocated at the current nest
- level.
- This macro must match an earlier call to __UHEAP_MARK.
- @param aCount The number of heap cells expected to remain allocated at
- the current nest level.
- @see User::__DbgMarkEnd()
- @see __UHEAP_MARK
- }
- //#define __UHEAP_MARKENDC(aCount) User::__DbgMarkEnd(FALSE,aCount)
- {
- @publishedAll
- @released
- Simulates heap allocation failure for the current thread's heap.
- The failure occurs on the next call to new or any of the functions which
- allocate memory from the heap. This macro is defined only for debug builds.
- @param aCount Determines when the allocation will fail.
- Heap allocation fails on attempt number aCount - later
- allocations will succeed.
- For example, if aCount is 3, then heap allocation fails
- on the 3rd attempt, but all subsequent allocations succeed.
- @see User::__DbgSetAllocFail()
- }
- //#define __UHEAP_FAILNEXT(aCount) User::__DbgSetAllocFail(FALSE,RAllocator::EFailNext,aCount)
- {
- @publishedAll
- @released
- Simulates heap allocation failure for the current thread's heap.
- The failure occurs on subsequent calls to new or any of the functions which
- allocate memory from the heap. This macro is defined only for debug builds.
- @param aType The type of failure to be simulated.
- @param aValue The failure rate.
- @see User::__DbgSetAllocFail()
- }
- //#define __UHEAP_SETFAIL(aType,aValue) User::__DbgSetAllocFail(FALSE,aType,aValue)
- {
- @publishedAll
- @released
- Cancels simulated heap allocation failure for the current thread's heap.
- This macro is defined only for debug builds.
- @see User::__DbgSetAllocFail()
- }
- //#define __UHEAP_RESET User::__DbgSetAllocFail(FALSE,RAllocator::ENone,1)
- {
- @publishedAll
- @released
- Cancels simulated heap allocation failure for the current thread's heap.
- It walks the the heap and sets the nesting level for all allocated
- cells to zero.
- This macro is defined only for debug builds.
- }
- //#define __UHEAP_TOTAL_RESET User::__DbgSetAllocFail(FALSE,RAllocator::EReset,1)
- {
- @publishedPartner
- @released
- Marks the start of Kernel heap checking.
- Checking the Kernel heap is only useful when developing Kernel side code such
- as device drivers and media drivers.
- This macro is defined only for debug builds.
- This macro must be matched by a corresponding call to __KHEAP_MARKEND or __KHEAP_MARKENDC.
- Calls to this macro can be nested but each call must be matched by corresponding
- call to __KHEAP_MARKEND or __KHEAP_MARKENDC.
- @see User::__DbgMarkStart()
- @see __KHEAP_MARKEND
- @see __KHEAP_MARKENDC
- }
- //#define __KHEAP_MARK User::__DbgMarkStart(TRUE)
- {
- @publishedPartner
- @released
- Checks that the number of allocated cells at the current nested level of the
- Kernel heap is the same as the specified value. This macro is defined only
- for debug builds. Checking the Kernel heap is only useful when developing
- Kernel side code such as device drivers and media drivers.
- The macro also takes the name of the file containing this source code statement
- and the line number of this source code statement; they are displayed as part
- of the panic category, if the checks fail.
- @param aCount The number of heap cells expected to be allocated at
- the current nest level.
- @see User::__DbgMarkCheck()
- @see __UHEAP_CHECK
- }
- //#define __KHEAP_CHECK(aCount) User::__DbgMarkCheck(TRUE,FALSE,aCount,(TText8*)__FILE__,__LINE__)
- {
- @publishedPartner
- @released
- Checks that the total number of allocated cells on the Kernel heap is the same
- as the specified value.
- It is only useful when developing Kernel side code such as device drivers
- and media drivers.
- The macro also takes the name of the file containing this source code statement
- and the line number of this source code statement; they are displayed as part
- of the panic category, if the checks fail.
- This macro is defined only for debug builds.
- @param aCount The total number of heap cells expected to be allocated
- @see User::__DbgMarkCheck()
- @see __UHEAP_CHECKALL
- }
- //#define __KHEAP_CHECKALL(aCount) User::__DbgMarkCheck(TRUE,TRUE,aCount,(TText8*)__FILE__,__LINE__)
- {
- @publishedPartner
- @released
- Marks the end of Kernel heap checking. The macro expects zero heap cells to
- remain allocated at the current nest level.
- This macro is defined only for debug builds. Checking the Kernel heap is only
- useful when developing Kernel side code such as device drivers and media drivers.
- This macro must match an earlier call to __KHEAP_MARK.
- @see User::__DbgMarkEnd()
- @see __KHEAP_MARK
- }
- //#define __KHEAP_MARKEND User::__DbgMarkEnd(TRUE,0)
- {
- @publishedPartner
- @released
- Marks the end of Kernel heap checking. The macro expects aCount heap cells
- to remain allocated at the current nest level.
- This macro is defined only for debug builds.
- This macro must match an earlier call to __KHEAP_MARK.
- @param aCount The number of heap cells expected to remain allocated at
- the current nest level.
- @see User::__DbgMarkEnd()
- @see __KHEAP_MARK
- }
- //#define __KHEAP_MARKENDC(aCount) User::__DbgMarkEnd(TRUE,aCount)
- {
- @publishedPartner
- @released
- Simulates Kernel heap allocation failure. The failure occurs on the next call
- to new or any of the functions which allocate memory from the heap. This macro
- is defined only for debug builds.
- Checking the Kernel heap is only useful when developing Kernel side code such
- as device drivers and media drivers.
- @param aCount The rate of failure - heap allocation fails every aCount attempt.
- @see User::__DbgSetAllocFail()
- }
- //#define __KHEAP_FAILNEXT(aCount) User::__DbgSetAllocFail(TRUE,RAllocator::EFailNext,aCount)
- {
- @publishedPartner
- @released
- Simulates Kernel heap allocation failure.
- The failure occurs on subsequent calls to new or any of the functions which
- allocate memory from this heap.
- This macro is defined only for debug builds.
- @param aType The type of failure to be simulated.
- @param aValue The failure rate.
- @see User::__DbgSetAllocFail()
- }
- //#define __KHEAP_SETFAIL(aType,aValue) User::__DbgSetAllocFail(TRUE,aType,aValue)
- {
- @publishedPartner
- @released
- Cancels simulated Kernel heap allocation failure.
- Checking the Kernel heap is only useful when developing Kernel side code such
- as device drivers and media drivers.
- This macro is defined only for debug builds.
- @see User::__DbgSetAllocFail()
- }
- //#define __KHEAP_RESET User::__DbgSetAllocFail(TRUE,RAllocator::ENone,1)
- {
- @publishedPartner
- @released
- Cancels simulated kernel heap allocation failure.
- It walks the the heap and sets the nesting level for all allocated
- cells to zero.
- Checking the kernel heap is only useful when developing kernel side code such
- as device drivers and media drivers.
- This macro is defined only for debug builds.
- }
- //#define __KHEAP_TOTAL_RESET User::__DbgSetAllocFail(TRUE,RAllocator::EReset,1)
- {
- @publishedAll
- @released
- Marks the start of heap checking for the specific heap.
- This macro is defined only for debug builds.
- This macro must be matched by a corresponding call to __RHEAP_MARKEND or __RHEAP_MARKENDC.
- Calls to this macro can be nested but each call must be matched by corresponding
- call to __RHEAP_MARKEND or __RHEAP_MARKENDC.
- @param aHeap A pointer to the specific RHeap
- @see RHeap
- @see RAllocator::__DbgMarkStart()
- @see __RHEAP_MARKEND
- @see __RHEAP_MARKENDC
- }
- //#define __RHEAP_MARK(aHeap) (aHeap)->__DbgMarkStart()
- {
- @publishedAll
- @released
- Checks that the number of allocated cells at the current nested level on the
- specified heap is the same as the specified value.
- The macro also takes the name of the file containing this source code statement
- and the line number of this source code statement; they are displayed as part
- of the panic category, if the checks fail.
- This macro is defined only for debug builds.
- @param aHeap A pointer to the specific RHeap.
- @param aCount The number of heap cells expected to be allocated at
- the current nest level.
- @see RAllocator::__DbgMarkCheck()
- }
- //#define __RHEAP_CHECK(aHeap,aCount) (aHeap)->__DbgMarkCheck(FALSE,aCount,(TText8*)__FILE__,__LINE__)
- {
- @publishedAll
- @released
- Checks that the total number of allocated cells on the specified heap is the
- same as the specified value.
- The macro also takes the name of the file containing this source code statement
- and the line number of this source code statement; they are displayed as part
- of the panic category, if the checks fail.
- This macro is defined only for debug builds.
- @param aHeap A pointer to the specific RHeap.
- @param aCount The total number of heap cells expected to be allocated.
- @see RAllocator::__DbgMarkCheck()
- }
- //#define __RHEAP_CHECKALL(aHeap,aCount) (aHeap)->__DbgMarkCheck(TRUE,aCount,(TText8*)__FILE__,__LINE__)
- {
- @publishedAll
- @released
- Marks the end of heap checking for the specific heap.
- The macro expects zero heap cells to remain allocated at the current nest
- level. This macro is defined only for debug builds.
- This macro must match an earlier call to __RHEAP_MARK.
- @param aHeap A pointer to the specific RHeap.
- @see RAllocator::__DbgMarkEnd()
- @see __RHEAP_MARK
- }
- //#define __RHEAP_MARKEND(aHeap) (aHeap)->__DbgMarkEnd(0)
- {
- @publishedAll
- @released
- Marks the end of heap checking for the specific heap.
- The macro expects aCount heap cells to remain allocated at the current nest
- level. This macro is defined only for debug builds.
- This macro must match an earlier call to __RHEAP_MARK.
- @param aHeap A pointer to the specific RHeap.
- @param aCount The number of heap cells expected to remain allocated at
- the current nest level
- @see RAllocator::__DbgMarkEnd()
- @see __RHEAP_MARK
- }
- //#define __RHEAP_MARKENDC(aHeap,aCount) (aHeap)->__DbgMarkEnd(aCount)
- {
- @publishedAll
- @released
- Simulates an allocation failure for the specific heap.
- The failure occurs on the next call to new or any of the functions which allocate
- memory from the heap. This macro is defined only for debug builds.
- @param aHeap A pointer to the specific RHeap.
- @param aCount The rate of failure - heap allocation fails every aCount attempt.
- @see RAllocator::__DbgSetAllocFail()
- }
- //#define __RHEAP_FAILNEXT(aHeap,aCount) (aHeap)->__DbgSetAllocFail(RAllocator::EFailNext,aCount)
- {
- @publishedAll
- @released
- Simulates an allocation failure for the specific heap.
- The failure occurs on subsequent calls to new or any of the functions which
- allocate memory from the heap. This macro is defined only for debug builds.
- @param aHeap A pointer to the specific RHeap.
- @param aType The type of failure to be simulated.
- @param aValue The failure rate.
- @see RAllocator::__DbgSetAllocFail()
- }
- //#define __RHEAP_SETFAIL(aHeap,aType,aValue) (aHeap)->__DbgSetAllocFail(aType,aValue)
- {
- @publishedAll
- @released
- Cancels simulated allocation failure for the specific heap.
- This macro is defined only for debug builds.
- @param aHeap A pointer to the specific RHeap.
- @see RAllocator::__DbgSetAllocFail()
- }
- //#define __RHEAP_RESET(aHeap) (aHeap)->__DbgSetAllocFail(RAllocator::ENone,1)
- {
- @publishedAll
- @released
- Cancels simulated allocation failure for the specific heap.
- It walks the the heap and sets the nesting level for all allocated
- cells to zero.
- This macro is defined only for debug builds.
- @param aHeap A pointer to the specific RHeap.
- @see RAllocator::__DbgSetAllocFail()
- }
- //#define __RHEAP_TOTAL_RESET(aHeap) (aHeap)->__DbgSetAllocFail(RAllocator::EReset,1)
- //#if defined (__WINS__)
- {
- @publishedAll
- @released
- }
- //#define __DEBUGGER() {if (User::JustInTime()) __BREAKPOINT()}
- //#else
- //#define __DEBUGGER()
- //#endif
- //#if defined(__DLL__)
- {
- @publishedAll
- @released
- Declares a function for testing object invariance.
- For complex classes, it is often useful to provide a function that can
- be called to check that the object is in a valid state.
- The __DECLARE_TEST macro supplies a standard prototype for such a function
- named __DbgTestInvariant(). A companion macro __TEST_INVARIANT is provided
- to call the function.
- For DLLs, as opposed to EXEs, __DbgTestInvariant() is exported,
- i.e. the macro expands to:
- @code
- public: IMPORT_C void __DbgTestInvariant() const; void __DbgTest(TAny *aPtr) const
- @endcode
- This macro should placed as the last item in a class declaration (as it
- switches back to public access). Note that a terminating semi-colon must be used.
- You should define the __DbgTestInvariant() function to check that the object
- is in a healthy state. If it finds an error, it should call User::Invariant(),
- which will cause a panic.
- If a class is derived from a base class, then the base class __DbgTestInvariant()
- should be called first, and then any further checking done.
- The second function declared, __DbgTest(), is intended to allow test code a way
- of directly accessing non-public members of a class. The function is
- implemented by any test code that requires it, rather than in the class’s own
- source code. The function is therefore not exported.
- __DECLARE_TEST is defined for both debug and release builds. This point is
- particularly important for DLLs, as otherwise the exported interfaces would
- differ between the build versions, giving potential binary compatibility
- problems. To avoid using memory unnecessarily in release builds, you can,
- however, use preprocessor directives to define the code within
- __DbgTestInvariant() only for debug builds. __DbgTestInvariant() is never
- called in release builds.
- @see __TEST_INVARIANT
- }
- {#define __DECLARE_TEST public: IMPORT_C void __DbgTestInvariant() const; void __DbgTest(TAny *aPtr) const
- #else
- #define __DECLARE_TEST public: void __DbgTestInvariant() const; void __DbgTest(TAny *aPtr) const
- #endif
- #else
- #define __ASSERT_DEBUG(c,p)
- #define __DECLARE_NAME(t)
- #define __TEST_INVARIANT
- #if defined(__DLL__)
- #define __DECLARE_TEST public: IMPORT_C void __DbgTestInvariant() const; void __DbgTest(TAny *aPtr) const
- #else
- #define __DECLARE_TEST public: void __DbgTestInvariant() const; void __DbgTest(TAny *aPtr) const
- #endif}
- {
- @publishedAll
- @released
- Marks the start of checking the current thread's heap.
- This macro is defined only for debug builds.
- This macro must be matched by a corresponding call to __UHEAP_MARKEND or __UHEAP_MARKENDC.
- Calls to this macro can be nested but each call must be matched by corresponding
- call to __UHEAP_MARKEND or __UHEAP_MARKENDC.
- @see User::__DbgMarkStart()
- @see __UHEAP_MARKEND
- @see __UHEAP_MARKENDC
- }
- //#define __UHEAP_MARK
- {
- @publishedAll
- @released
- Checks that the number of allocated cells at the current nested level on the
- current thread's heap is the same as the specified value.
- This macro is defined only for debug builds.
- The macro also takes the name of the file containing this source code statement
- and the line number of this source code statement; they are displayed as part
- of the panic category, if the checks fail.
- The macro assumes that:
- 1. the heap being checked is a user heap
- 2. checking is being done for the number of allocated cells at the current nested
- level; i.e. that aCountAll is set to false
- 3. the line number is the line number of this source code statement.
- 4. the file name is the full path name of the file containing this source statement
- @param aCount The number of heap cells expected to be allocated at
- the current nest level.
- @see User::__DbgMarkCheck()
- @see __KHEAP_CHECK
- }
- //#define __UHEAP_CHECK(aCount)
- {
- @publishedAll
- @released
- Checks that the total number of allocated cells on the current thread's heap
- is the same as the specified value.
- This macro is defined only for debug builds.
- The macro also takes the name of the file containing this source code statement
- and the line number of this source code statement; they are displayed as part
- of the panic category, if the checks fail.
- @param aCount The total number of heap cells expected to be allocated.
- @see User::__DbgMarkCheck()
- @see __KHEAP_CHECKALL
- }
- //#define __UHEAP_CHECKALL(aCount)
- {
- @publishedAll
- @released
- Marks the end of checking the current thread's heap.
- The macro expects zero heap cells to remain allocated at the current nest
- level. This macro is defined only for debug builds.
- This macro must match an earlier call to __UHEAP_MARK.
- @see User::__DbgMarkEnd()
- @see __UHEAP_MARK
- }
- //#define __UHEAP_MARKEND
- {
- @publishedAll
- @released
- Marks the end of checking the current thread's heap.
- The macro expects aCount heap cells to remain allocated at the current nest
- level.
- This macro must match an earlier call to __UHEAP_MARK.
- @param aCount The number of heap cells expected to remain allocated at
- the current nest level.
- @see User::__DbgMarkEnd()
- @see __UHEAP_MARK
- }
- //#define __UHEAP_MARKENDC(aCount)
- {
- @publishedAll
- @released
- Simulates heap allocation failure for the current thread's heap.
- The failure occurs on the next call to new or any of the functions which
- allocate memory from the heap. This macro is defined only for debug builds.
- @param aCount Determines when the allocation will fail.
- Heap allocation fails on attempt number aCount - later
- allocations will succeed.
- For example, if aCount is 3, then heap allocation fails
- on the 3rd attempt, but all subsequent allocations succeed.
- @see User::__DbgSetAllocFail()
- }
- //#define __UHEAP_FAILNEXT(aCount)
- {
- @publishedAll
- @released
- Simulates heap allocation failure for the current thread's heap.
- The failure occurs on subsequent calls to new or any of the functions which
- allocate memory from the heap. This macro is defined only for debug builds.
- @param aType The type of failure to be simulated.
- @param aValue The failure rate.
- @see User::__DbgSetAllocFail()
- }
- //#define __UHEAP_SETFAIL(aType,aValue)
- {
- @publishedAll
- @released
- Cancels simulated heap allocation failure for the current thread's heap.
- This macro is defined only for debug builds.
- @see User::__DbgSetAllocFail()
- }
- //#define __UHEAP_RESET
- {
- @publishedAll
- @released
- Cancels simulated heap allocation failure for the current thread's heap.
- It walks the the heap and sets the nesting level for all allocated
- cells to zero.
- This macro is defined only for debug builds.
- }
- //#define __UHEAP_TOTAL_RESET
- {
- @publishedPartner
- @released
- Marks the start of Kernel heap checking.
- Checking the Kernel heap is only useful when developing Kernel side code such
- as device drivers and media drivers.
- This macro is defined only for debug builds.
- This macro must be matched by a corresponding call to __KHEAP_MARKEND or __KHEAP_MARKENDC.
- Calls to this macro can be nested but each call must be matched by corresponding
- call to __KHEAP_MARKEND or __KHEAP_MARKENDC.
- @see User::__DbgMarkStart()
- @see __KHEAP_MARKEND
- @see __KHEAP_MARKENDC
- }
- //#define __KHEAP_MARK
- {
- @publishedPartner
- @released
- Checks that the number of allocated cells at the current nested level of the
- Kernel heap is the same as the specified value. This macro is defined only
- for debug builds. Checking the Kernel heap is only useful when developing
- Kernel side code such as device drivers and media drivers.
- The macro also takes the name of the file containing this source code statement
- and the line number of this source code statement; they are displayed as part
- of the panic category, if the checks fail.
- @param aCount The number of heap cells expected to be allocated at
- the current nest level.
- @see User::__DbgMarkCheck()
- @see __UHEAP_CHECK
- }
- //#define __KHEAP_CHECK(aCount)
- {
- @publishedPartner
- @released
- Checks that the total number of allocated cells on the Kernel heap is the same
- as the specified value.
- It is only useful when developing Kernel side code such as device drivers
- and media drivers.
- The macro also takes the name of the file containing this source code statement
- and the line number of this source code statement; they are displayed as part
- of the panic category, if the checks fail.
- This macro is defined only for debug builds.
- @param aCount The total number of heap cells expected to be allocated
- @see User::__DbgMarkCheck()
- @see __UHEAP_CHECKALL
- }
- //#define __KHEAP_CHECKALL(aCount)
- {
- @publishedPartner
- @released
- Marks the end of Kernel heap checking. The macro expects zero heap cells to
- remain allocated at the current nest level.
- This macro is defined only for debug builds. Checking the Kernel heap is only
- useful when developing Kernel side code such as device drivers and media drivers.
- This macro must match an earlier call to __KHEAP_MARK.
- @see User::__DbgMarkEnd()
- @see __KHEAP_MARK
- }
- //#define __KHEAP_MARKEND
- {
- @publishedPartner
- @released
- Marks the end of Kernel heap checking. The macro expects aCount heap cells
- to remain allocated at the current nest level.
- This macro is defined only for debug builds.
- This macro must match an earlier call to __KHEAP_MARK.
- @param aCount The number of heap cells expected to remain allocated at
- the current nest level.
- @see User::__DbgMarkEnd()
- @see __KHEAP_MARK
- }
- //#define __KHEAP_MARKENDC(aCount)
- {
- @publishedPartner
- @released
- Simulates Kernel heap allocation failure. The failure occurs on the next call
- to new or any of the functions which allocate memory from the heap. This macro
- is defined only for debug builds.
- Checking the Kernel heap is only useful when developing Kernel side code such
- as device drivers and media drivers.
- @param aCount The rate of failure - heap allocation fails every aCount attempt.
- @see User::__DbgSetAllocFail()
- }
- //#define __KHEAP_FAILNEXT(aCount)
- {
- @publishedPartner
- @released
- Simulates Kernel heap allocation failure.
- The failure occurs on subsequent calls to new or any of the functions which
- allocate memory from this heap.
- This macro is defined only for debug builds.
- @param aType The type of failure to be simulated.
- @param aValue The failure rate.
- @see User::__DbgSetAllocFail()
- }
- //#define __KHEAP_SETFAIL(aType,aValue)
- {
- @publishedPartner
- @released
- Cancels simulated Kernel heap allocation failure.
- Checking the Kernel heap is only useful when developing Kernel side code such
- as device drivers and media drivers.
- This macro is defined only for debug builds.
- @see User::__DbgSetAllocFail()
- }
- //#define __KHEAP_RESET
- {
- @publishedPartner
- @released
- Cancels simulated kernel heap allocation failure.
- It walks the the heap and sets the nesting level for all allocated
- cells to zero.
- Checking the kernel heap is only useful when developing kernel side code such
- as device drivers and media drivers.
- This macro is defined only for debug builds.
- }
- //#define __KHEAP_TOTAL_RESET
- {
- @publishedAll
- @released
- Marks the start of heap checking for the specific heap.
- This macro is defined only for debug builds.
- This macro must be matched by a corresponding call to __RHEAP_MARKEND or __RHEAP_MARKENDC.
- Calls to this macro can be nested but each call must be matched by corresponding
- call to __RHEAP_MARKEND or __RHEAP_MARKENDC.
- @param aHeap A pointer to the specific RHeap
- @see RHeap
- @see RAllocator::__DbgMarkStart()
- @see __RHEAP_MARKEND
- @see __RHEAP_MARKENDC
- }
- //#define __RHEAP_MARK(aHeap)
- {
- @publishedAll
- @released
- Checks that the number of allocated cells at the current nested level on the
- specified heap is the same as the specified value.
- The macro also takes the name of the file containing this source code statement
- and the line number of this source code statement; they are displayed as part
- of the panic category, if the checks fail.
- This macro is defined only for debug builds.
- @param aHeap A pointer to the specific RHeap.
- @param aCount The number of heap cells expected to be allocated at
- the current nest level.
- @see RAllocator::__DbgMarkCheck()
- }
- //#define __RHEAP_CHECK(aHeap,aCount)
- {
- @publishedAll
- @released
- Checks that the total number of allocated cells on the specified heap is the
- same as the specified value.
- The macro also takes the name of the file containing this source code statement
- and the line number of this source code statement; they are displayed as part
- of the panic category, if the checks fail.
- This macro is defined only for debug builds.
- @param aHeap A pointer to the specific RHeap.
- @param aCount The total number of heap cells expected to be allocated.
- @see RAllocator::__DbgMarkCheck()
- }
- //#define __RHEAP_CHECKALL(aHeap,aCount)
- {
- @publishedAll
- @released
- Marks the end of heap checking for the specific heap.
- The macro expects zero heap cells to remain allocated at the current nest
- level. This macro is defined only for debug builds.
- This macro must match an earlier call to __RHEAP_MARK.
- @param aHeap A pointer to the specific RHeap.
- @see RAllocator::__DbgMarkEnd()
- @see __RHEAP_MARK
- }
- //#define __RHEAP_MARKEND(aHeap)
- {
- @publishedAll
- @released
- Marks the end of heap checking for the specific heap.
- The macro expects aCount heap cells to remain allocated at the current nest
- level. This macro is defined only for debug builds.
- This macro must match an earlier call to __RHEAP_MARK.
- @param aHeap A pointer to the specific RHeap.
- @param aCount The number of heap cells expected to remain allocated at
- the current nest level
- @see RAllocator::__DbgMarkEnd()
- @see __RHEAP_MARK
- }
- //#define __RHEAP_MARKENDC(aHeap,aCount)
- {
- @publishedAll
- @released
- Simulates an allocation failure for the specific heap.
- The failure occurs on the next call to new or any of the functions which allocate
- memory from the heap. This macro is defined only for debug builds.
- @param aHeap A pointer to the specific RHeap.
- @param aCount The rate of failure - heap allocation fails every aCount attempt.
- @see RAllocator::__DbgSetAllocFail()
- }
- //#define __RHEAP_FAILNEXT(aHeap,aCount)
- {
- @publishedAll
- @released
- Simulates an allocation failure for the specific heap.
- The failure occurs on subsequent calls to new or any of the functions which
- allocate memory from the heap. This macro is defined only for debug builds.
- @param aHeap A pointer to the specific RHeap.
- @param aType The type of failure to be simulated.
- @param aValue The failure rate.
- @see RAllocator::__DbgSetAllocFail()
- }
- //#define __RHEAP_SETFAIL(aHeap,aType,aValue)
- {
- @publishedAll
- @released
- Cancels simulated allocation failure for the specific heap.
- This macro is defined only for debug builds.
- @param aHeap A pointer to the specific RHeap.
- @see RAllocator::__DbgSetAllocFail()
- }
- //#define __RHEAP_RESET(aHeap)
- {
- @publishedAll
- @released
- Cancels simulated allocation failure for the specific heap.
- It walks the the heap and sets the nesting level for all allocated
- cells to zero.
- This macro is defined only for debug builds.
- @param aHeap A pointer to the specific RHeap.
- @see RAllocator::__DbgSetAllocFail()
- }
- //#define __RHEAP_TOTAL_RESET(aHeap)
- {#define __DEBUGGER()
- #endif
- #if defined (__WINS__)}
- { @internalTechnology }
- //#define __EMULATOR_IMAGE_HEADER2(aUid0,aUid1,aUid2,aPriority,aCap0,aCap1,aSid,aVid,aVer,aFlags) TEmulatorImageHeader uid={{aUid0,aUid1,aUid2},aPriority,{aSid,aVid,{aCap0,aCap1}},0,0,aVer,aFlags};
- { @internalTechnology }
- {#define __EMULATOR_IMAGE_HEADER(aUid0,aUid1,aUid2,aPriority,aCap,aFlags) TEmulatorImageHeader uid={{aUid0,aUid1,aUid2},aPriority,{aUid2,0,{aCap,0}},0,0,0x00010000u,aFlags};
- #else
- #define __EMULATOR_IMAGE_HEADER2(aUid0,aUid1,aUid2,aPriority,aCap0,aCap1,aSid,aVer,aFlags)
- #define __EMULATOR_IMAGE_HEADER(aUid0,aUid1,aUid2,aPriority,aCap,aFlags)
- #endif
- #if defined(__OPT__)}
- {
- @internalComponent
- @deprecated
- }
- {#define __ASSERT_OPT(c,p) (void)((c)||(p,0))
- #else
- #define __ASSERT_OPT(c,p)
- #endif
- #if defined(_UNICODE)
- #if !defined(UNICODE) }
- {
- @publishedAll
- @deprecated
- }
- {#define UNICODE
- #endif
- #endif }
- //#if defined(_DEBUG)
- {
- @internalComponent
- @deprecated
- }
- {#define __DECLARE_TEST_DEBUG __DECLARE_TEST
- #else
- #define __DECLARE_TEST_DEBUG
- #endif
- #if !defined(ASSERT) }
- {
- @publishedAll
- @released
- Generates _ASSERT_DEBUG code that calls User::Invariant() if the specified
- condition is not true.
- @param x A conditional expression which results in true or false.
- }
- {#define ASSERT(x) __ASSERT_DEBUG(x,User::Invariant())
- #endif
- #ifndef __VALUE_IN_REGS__ }
- {
- @publishedPartner
- @released
- }
- {#define __VALUE_IN_REGS__
- #endif
- #if defined(_DEBUG) }
- {
- @publishedAll
- @released
- }
- {#define __DEBUG_ONLY(x) x
- #else
- #define __DEBUG_ONLY(x)
- #endif }
- {$ifdef __KERNEL_MODE__}
- { @internalComponent }
- #define KIMPORT_C IMPORT_C
- { @internalComponent }
- #define KEXPORT_C EXPORT_C
- { @internalComponent }
- #define UIMPORT_C
- { @internalComponent }
- #define UEXPORT_C
- #else
- #define KIMPORT_C
- #define KEXPORT_C
- #define UIMPORT_C IMPORT_C
- #define UEXPORT_C EXPORT_C
- {$endif}
- {
- @publishedAll
- @released
- Asserts that a condition is true at compilation time.
- @param x Condition to assert
- }
- //#define __ASSERT_COMPILE(x) void __compile_time_assert(int __check[(x)?1:-1])
- //#ifdef __REMOVE_PLATSEC_DIAGNOSTICS__
- {
- @publishedPartner
- @released
- }
- //#ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
- //#define __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
- //#endif /*__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__}
- //#endif /*__REMOVE_PLATSEC_DIAGNOSTICS__}
- {
- @internalComponent
- }
- //static const char* const KSuppressPlatSecDiagnosticMagicValue = (const char*)1;
- //#ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
- {
- @internalComponent
- }
- //#define __PLATSEC_DIAGNOSTIC_FILE_AND_LINE_HELPER(l) #l
- {
- @internalComponent
- }
- //#define __PLATSEC_DIAGNOSTIC_FILE_AND_LINE_HELPER2(f,l) f "(" __PLATSEC_DIAGNOSTIC_FILE_AND_LINE_HELPER(l) ")"
- {
- @publishedPartner
- @released
- }
- //#define __PLATSEC_DIAGNOSTIC_FILE_AND_LINE __PLATSEC_DIAGNOSTIC_FILE_AND_LINE_HELPER2(__FILE__,__LINE__)
- {
- @publishedPartner
- @released
- A macro that should be used to enclose a platform security diagnostic
- 'C' style string that can be passed to a capability checking function such
- as RThread::HasCapability() and Kern::CurrentThreadHasCapability().
- The content of the string is emitted if the capability test finds that
- the capability is not present.
- The macro provides a convenient mechanism that allows the strings to
- be removed from future versions of Symbian OS.
- For example:
- @code
- if(!Kern::CurrentThreadHasCapability(ECapabilityPowerMgmt,__PLATSEC_DIAGNOSTIC_STRING("Checked by Hal function EDisplayHalSetState")))
- {
- return KErrPermissionDenied;
- }
- @endcode
- In this example, the string:
- @code
- Checked by Hal function EDisplayHalSetState
- @endcode
- is emitted if the calling process does not have the ECapabilityPowerMgmt capability.
- @param s A C-style string.
- @see RProcess::HasCapability()
- @see RThread::HasCapability()
- @see RMessagePtr2::HasCapability()
- @see User::CreatorHasCapability()
- }
- //#define __PLATSEC_DIAGNOSTIC_STRING(s) s
- {
- When this value is used in Platform Security APIs as the value for the aDiagnosticText
- argument, these APIs will not emit any form of diagnostic message.
- @publishedPartner
- @released
- }
- //static const char* const KSuppressPlatSecDiagnostic = KSuppressPlatSecDiagnosticMagicValue;
- //#else /* __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__ }
- //#define __PLATSEC_DIAGNOSTIC_STRING(s) NULL
- {$ifndef __KERNEL_MODE__}
- //#ifndef __REMOVE_PLATSEC_DIAGNOSTICS__
- {
- When this value is used in Platform Security APIs as the value for the aDiagnostic
- argument, these APIs will not emit any form of diagnostic message.
- @publishedPartner
- @released
- }
- //#define KSuppressPlatSecDiagnostic NULL, NULL
- {.$else} { __REMOVE_PLATSEC_DIAGNOSTICS__ }
- {
- When this value is used in Platform Security APIs as the value for the aDiagnostic
- argument, these APIs will not emit any form of diagnostic message.
- @publishedPartner
- @release
- }
- //#define KSuppressPlatSecDiagnostic NULL
- //#endif { !__REMOVE_PLATSEC_DIAGNOSTICS__ }
- {$endif} { !__KERNEL_MODE__ }
- //#endif /* !__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__ }
- {
- * MSVC operator new and operator new[] header guards
- }
- {#ifdef __PLACEMENT_NEW
- #define __PLACEMENT_NEW_INLINE
- #endif} { __PLACEMENT_NEW }
- {#if defined(__VC32__) && (_MSC_VER < 1300)
- #define __PLACEMENT_VEC_NEW_INLINE
- #endif} { version of MSVC that doesn't support overloaded operator new[] }
- {
- Calling convention qualifier for functions involving floating point
- variables passed or returned by value.
- @publishedAll
- @released
- }
- {#ifndef __SOFTFP
- #define __SOFTFP
- #endif /* __SOFTFP }
|