Developing Series 60 Applications: A Guide for Symbian OS C++ Developers: A Guide for Symbian OS C++ Developers

The basic types used throughout Symbian OS are shown in Table 3-1. They are mainly defined in the system include file e32defs.h (which is often #include d implicitly, as part of e32base.h ), and they all have a T -class interface, so they do not require complex construction or explicit destructors. Many of them are actually implemented as compiler-specific typedef s of standard C++ types, providing guaranteed platform independence. Some are implemented as actual simple C++ classes. Note that the Symbian OS types should always be used in preference to built-in C++ types. For example, you should always use TInt instead of int .

Note that the implementation of TBool seems very wasteful , considering that 32 bits are used to store one of two possible values. There are several reasons for this, including:

However, note that you should never compare a TBool directly to Etrue , as any nonzero value is also considered "true." For example:

TInt b = 2; if (b == ETrue) { // This statement is "false"! } if (b) // Will return "true" as required. { // Use this form instead. }

Similarly, you should not compare TBool values to EFalse ”even though the code will work, it is inefficient and inconsistent. Instead use the following form:

if (!b) { // b is "false". }

If your class uses a lot of Boolean attributes, and if minimum memory usage is a goal, then you might consider using bit packing. However, this is beyond the scope of this book.

Table 3-1. The Basic Types in Symbian OS

Name

Type

Size (bytes)

Comments

TInt

Integer

At least 4

Signed and unsigned integers, guaranteed to give at least 32 bits of precision, independent of the compiler.

TUInt

Integer

At least 4

TInt64

Integer

8

64-bit integer, implemented as two 32-bit integers.

TInt8

Integer

1

Explicitly sized signed integers.

TInt16

Integer

2

TInt32

Integer

4

TUInt8

Integer

1

Explicitly sized unsigned integers.

TUInt16

Integer

2

TUInt32

Integer

4

TReal

Floating point

8

Double-precision floating-point value.

treal32

Floating point

4

Explicitly sized floating-point values.

treal64

Floating point

8

TRealX

Floating point

12

Extended-precision floating-point values, with a dynamic range from as small as ~ ±1 x 10 -9863 to as large as ~ ±1 x 10 9863 .

TText8

Character

1

Unsigned char for narrow (8-bit) character storage.

TText

Character

2

Unsigned short int for Unicode character storage. Note these cannot be used for storing characters in the extended Unicode range.

TText16

Character

2

TChar

Character

4

A 32-bit character that can be used for storing extended Unicode characters. Used in a host of character- related helper functions.

TBool

Boolean

4

Enumerated values of ETRue and EFalse are defined, but naturally any nonzero value is considered true.

TAny

Void

N/A

Used exclusively as TAny * ( implying a pointer to anything ), which is more meaningful than void * (implying a pointer to nothing ).

Категории