SYMBIAN OS V9.1
FEEDBACK
»
Index
»
Document Tree
Tree Index
Symbian OS v9.1
About Symbian OS
About the Developer Library
Introduction to the Developer Library
Documentation Conventions
Using the Glossary and Indexes
Further information
Symbian Acknowledgements
Application development tutorial
Development basics
Building and running
The application engine
The application GUI
Symbian OS guide
About Symbian OS development
Subsystems and APIs
Versions and devices
User interfaces
Standards support
Programming languages
C++ development processes
Localisation support
Essential idioms
Naming conventions
Layout conventions
Class types
C++ and machine architecture
Object orientation basics
Object lifetimes and cleanup
Multiple inheritance and interfaces
Descriptors
Thin templates
Code efficiency
Defensive programming
Static data
Frameworks, libraries and DLLs
Ordinal growth and the extension DLL pattern
How to optimise application start-up time
Platform security
Symbian OS v9 Security Architecture
Capability report
Application engines
Using Agenda Model (AGNMODEL)
App engines CALINTERIMAPI
CCalAlarm
CCalAttendee
CCalCategory
CCalCategoryManager
CCalDataExchange
CCalEntry
CCalEntryId
CCalEntryView
CCalInstance
CCalInstanceView
CCalIter
CCalSession
CCalUser
CalCommon
MCalChangeCallBack
MCalProgressCallBack
TCalRRule
TCalTime
caldataformat.h Global variables
Using Contacts Model (CNTMODEL)
Contacts Model overview
The contact database
Contact items
Contact fields
Mapping between vCard properties and Symbian-specific constants
Application framework
Using Application Architecture (APPARC)
How to access and manipulate running applications
How to port guide: apps to exes
How to port guide: control panel plug-ins
How to port guide: data caged applications
Using Bitmap Animation
Bitmap Animation Overview
Using Clock
Clock overview
Message Window overview
Using Converter Architecture
Converter Architecture overview
How to use converters
How to get a suitable converter
How to request conversions
How to write a conversion observer
How to write a converter DLL
How to write a converter DLL project file
How to write a converter information file
How to implement the DLL boilerplate code
How to implement a converter
Using UI Control Framework (CONE)
UI Control Framework overview
View Server overview
UI Control Framework concepts
Introduction to the UI Control Framework
Simplifying access to the Window Server
Setting a recommended framework for UI libraries
No specific user interface policy
Controls
About controls
Window-owning controls and non-window-owning controls
Simple controls and compound controls
The run-time control hierarchy
The control environment
Control observers
Control contexts
Object provider mechanism
How to Write Controls
How to write a new control
How to construct a control
How to set the size and position of a control
How to draw controls
How to get user events
How to write compound controls
The Application User Interface
About the Application User Interface
The control stack
Embedded applications
Using UI Graphics Utilities (EGUL)
UI Graphics Utilities overview
Using MIME
How are data recognizers used?
How to write a data recognizer
Using Text and Text Attributes (ETEXT)
Text and Text Attributes overview
Text content
Introduction to text content
Text objects
The Symbian OS text model
Fields
Pictures
Files and clipboard
Viewing and user interfaces
Examples of use
Formatting
Introduction to formatting
Format layering
Paragraph styles
Style behaviour
How to use styles
How to manipulate simple global text
How to manipulate rich text
How to store and restore text
Using Front End Processor (FEPBASE)
Front End Processor overview
How to write a FEP
Using Open Font System (FNTSTORE)
Open Font System overview
Framework behaviour
How to use an Open Font System font
How to install a rasterizer DLL
How to install a font file
How to write a rasterizer DLL
How to derive from COpenFontRasterizer
How to derive from COpenFontFile
How to derive from COpenFont
How to derive from COpenFontRasterizerContext
Using Text Views (FORM)
Text Views overview
Text Views concepts
Introduction to Text Views
Editing
Printing
Special requirements
How to use text views
How to set up the text view
How to handle changes to the text view
How to select text
How to set the cursor
How to use wrapping
How to implement scrolling
How to reset
How to use system colours
Using Print Framework
Print Framework overview
Print Preview overview
How to insert a field into the header
How to start the print process
Using Uikon
Uikon overview
Using the extended notifier framework
Using HTTP Client
HTTP Client overview
A simple HTTP Client session
Handling request body data
Cancelling and closing transactions
Session and transaction properties
Filters
Headers
Security server certificates
HTTP string table
Application services
Using the Alarm Server
Alarm Server Overview
Types of alarms
Alarm Server functionality
Alarm states
Alarm Server issues
Using Calendar Conversion (CALCON)
Calendar Conversion Overview
Using Versit
Versit Overview
Versit
Using World Server
World Server Overview
World Server functionality
How to obtain city/country data
How to modify city/country data
Session notification messages
Importing/exporting databases
Base
Using User Library (E32)
Arrays and Lists
Arrays And Lists Overview
Doubly Linked Lists Overview
Singly Linked Lists Overview
Dynamic Arrays Overview
Fixed Size Arrays Overview
Array Keys Overview
Using Doubly Linked Lists
Doubly linked lists
Links
Headers
Iterators
How to form links
How to construct a header
How to construct an iterator
How to construct and manipulate a doubly linked list
Using Singly Linked Lists
Singly linked lists
Links
Headers
Iterators
How to form links
How to construct a header
How to construct an iterator
How to construct and manipulate a singly linked list
Using Dynamic Arrays
Dynamic Arrays
Introduction to dynamic arrays
Array implementation
The array buffer
Flat or segmented buffer?
Identifying elements
Array capacity and granularity
The types of array
Array of same length elements, flat buffer
Array of same length elements, segmented buffer
Array of variable length elements, flat buffer
Array of variable length elements, segmented buffer
Array of packed elements, flat array
When to choose the RArray and RPointerArray types
How to Use Dynamic Arrays
How to use dynamic arrays
How to append and insert elements
How to remove elements
How to expand the array
How to reserve space in a fixed flat array
How to resize an array
How to find elements
How to access elements
How to destroy the array
How to create a generic array
Pointers to the start and end of contiguous regions
Using CArrayFixFlat<TAny>
Using CArrayFixSeg<TAny>
Using CArrayPak<TAny>
Using CArrayVar<TAny>
Using RArray<class T>
Using RPointerArray<class T>
Using TArray<class T>
Using Fixed Size Arrays
The range checking wrapper for fixed length C++ arrays
How to replace a C++ array with a wrapper
How to use the range checking wrapper
Using Array Keys
Array keys
Key type
Key comparison
Key length and location
How to use array keys
Implementing TKey derived classes
Basic Types
Basic Types Overview
Integral types
Text types
Boolean type
Floating-point numbers
Templated functions
Using TRefByValue<class T> Class
Buffers and Strings
Buffers And Strings Overview
Circular Buffers Overview
Descriptors Overview
Dynamic Buffers Overview
Lexical Analysis Overview
Literals Overview
Package Buffers Overview
Raw Memory Overview
Using Circular Buffers
Circular Buffer structure
Using CCirBuf
Using CCirBuffer
Using Descriptors
Descriptor concepts
Descriptor basics
Text and binary data
8 bit variant, 16 bit variant and build independence
Length, maximum length and size
Folding and collation (comparing strings)
Safe data access
Descriptor Types
Buffer descriptors
Heap descriptors
Pointer descriptors
Resizable buffer descriptors
Abstract base descriptor classes
The relationship between descriptor classes
How to Use Descriptors
How to use the non-modifiable buffer descriptor TBufC<TInt>
How to use modifiable buffer descriptor TBuf<TInt>
How to use the non-modifiable pointer descriptor TPtrC
How to use the modifiable pointer descriptor TPtr
How to use the heap descriptor HBufC
How to use the resizable buffer descriptor RBuf
Descriptors for function interfaces
How to represent general binary data
Using TDes
Using TDes16
Using TDes8
Using TDes8Overflow
Using TDesC
Using TDesC16
Using TDesC8
Format string syntax
Using Dynamic Buffers
Introduction to dynamic buffers
Dynamic buffers versus descriptors, arrays and heap cells
Buffer position
Space management and granularity
Contiguousness
Choices with buffers
How to use standard buffer operations
How to allocate buffers
How to pre-expand a buffer
Using Lexical analysis
Introduction to Lexical Analysis
How to use Lexical Aanalysis
Using TLitC operators
Using Literal Descriptors
Constant literal text
Coding literal descriptors
The NULL constant literals
How to use literal descriptors
Using Package Buffers
Packages as type-safe descriptors
Types of package
External and internal representations
How to use a package buffer
Date and Time Handling
Date And Time Handling Overview
Using Date And Time Handling
Using TDateTime
Using TTime
Dynamically Loading Link Libraries
Dynamically Loading Link Libraries Overview
The polymorphic interface DLL
UID protection
Module definition file
Locating a DLL
How to define the interface to a polymorphic interface DLL
How to use a polymorphic interface DLL
How to implement a polymorphic interface DLL
Supporting polymorphic interface DLLs with static interface DLLs
Handles
Handles overview
Handle numbers
Kernel side object containers
Thread relative and process relative handles
Local and global handles
Duplicating handles to Kernel side objects
Opening a handle to an existing global Kernel object
Preventing closure of a handle
Inter Process Communication
Inter Process Communication Overview
Asynchronous Services Overview
Client/Server Overview
Notification Services Overview
Using Asynchronous Services
Asynchronous Programming
Introduction to asynchronous programming
Asynchronous service providers
Low Level Asynchronous Service Handling
What asynchronous service providers do
Asynchronous service provider's responsibilities
How to handle a single asynchronous request
How to handle multiple asynchronous requests with a wait loop
Cancelling an asynchronous request
High Level Asynchronous Service Handling
Introduction to active objects and the active scheduler
Active objects
Active Scheduler
How to construct an active object
How to issue requests
How to handle completed requests
How to cancel requests
How to start active objects
How to renew a request from the active scheduler
How to use multiple active objects
Long-running services and background objects
Non pre-emptive servicing
Simple encapsulation of a service provider
Life cycle of active objects
Using CActive
Using CAsyncOneShot
Using CIdle
Using TCallBack
Using TRequestStatus
Types of Service
About the types of services
Kernel services
Server services
Same-thread services
Device driver services
Using Client/Server
Introduction to the client-server architecture
Features of the client-server architecture
Sessions and requests
Sharable sessions
Subsessions within a session
Initialising a subsession
Inter-thread data transfer
How to implement a simple client interface
How to implement a simple server interface
How to implement a client interface with subsessions
How to implement a server interface with subsessions
Using Notification Services
Change notifier
Thread-death notifier
Notifier
How to use a change notifier
How to use a thread-death notifier
How to use a notifier to display a simple dialog, asynchronously
How to use a notifier to display a single line message, synchronously
Locale Settings
Locale settings overview
Introduction to locale settings
Date and time formatting
Units of measurements
How to set the locale
How to format the date and time
How to format date and time independent of locale
How to format date as text
How to implement universal time and home time
How to format currency values
Maths
Maths Overview
Character Representation Of Real Numbers Overview
Maths Services Overview
Using Maths Services
Math functions
Memory Management
Memory Management Overview
Cleanup Support Overview
Memory Allocation Overview
Memory Management concepts
Address Space and Process
Chunks
Heaps
Structure of a heap
Virtual machine model
Using Memory Allocation
How to share heaps
How to switch heaps
How to walk the heap
Using Cleanup Support
Exception Handling
Types of error and recovery
C++ exception handling
Basic exception support
How to use User::Leave()
How to use TRAP
How to use new with automatic leave on failure
Where to put trap harnesses?
Cleanup Stack Basics
Cleanup requirements
How to use the cleanup stack
How to pop and destroy
How to use the trailing-C naming convention
Destructor requirements
How to allocate and de-allocate cleanup stacks
Summary of cleanup rules
Two Phase Construction
CBase-derived classes and two-phase construction
How to implement two-phase construction
How to implement and use NewLC()
How to write a derived class with two-phase construction
Advanced Cleanup
Cleanup stack support for non-CBase classes
How to clean up non-CBase classes
Cleanup utilities
Cleanup for heap arrays
How to use CleanupDeletePushL()
How to use CleanupClosePushL()
How to use CleanupReleasePushL()
Cleanup following trap harnesses
Using TAutoClose
Message Queue
Message Queue Overview
Using Message Queue
Publish and Subscribe
Publish and Subscribe Overview
Properties
Using Publish and Subscribe
Security issues
Notifier framework
Reference Counting Objects
Reference Counting Objects Overview
The reference counting object
The object container
The object container index
The object index
Ownership of reference counting objects
Find-handle number
Names and fullnames
Accessing reference counting objects in object containers
How to access reference counting objects in object containers
The handle-number and the object index
System Macros
Using __ASSERT_ALWAYS
Using __DECLARE_TEST
Using MUTABLE_CAST macro
System Static Functions
System Wide Error Codes
Thread And Process Management
Thread And Process Management Overview
Critical Sections Overview
Mutexes Overview
Semaphores Overview
Threads And Processes Overview
Using Critical Sections
Using Mutexes
Using Semaphores
Using Threads and Processes
Introduction to Threads and Processes
Thread and process priorities
Assigning a relative priority value to a thread
Assigning an absolute priority value to a thread
Assigning priority value EPriorityRealTime
Thread and process Id
The process type
Fixed processes
Exception handling
Thread termination
Inter-thread data transfer
Timers And Timing Services
Timers And Timing Services overview
How to use simple timers
How to create an RTimer
How to wait for a given time period
How to wait for a given time
How to close an RTimer
Using RTimer class
How to use periodic timers
How to start a periodic timer
How to stop a periodic timer
How to use heartbeat timers
How to start a heartbeat timer
How to stop a heartbeat timer
UID Manipulation
UID Manipulation Overview
UID Manipulation Classes
How to Declare a UID
Version Handling
Using File Server (F32)
File Server Client Side
File Server Client Side overview
Introduction to the file server
File names
Media types
File systems
File server session
Directories
Files
Units, drives and volumes
Management and searching
How to use sessions, files, and directories
How to use file server sessions
How to share file handles between processes
How to use sessions efficiently
How to list directories and files
How to create directories
How to delete files and directories
How to create and open a file
How to get and change file details
How to move a file
How to read and write a file
How to track changes
How to retrieve drive and volume information
How to rename files
Using RFormat
Using TFileText
File management and searching
File management with CFileMan
How to search for files with TFindFile
Using CDirScan
Parsing paths and filenames
Structure of paths and filenames
TParse, TParsePtr and TParsePtrC
How to parse a pathname
Other file-related components
File locations
Stream store
Database manager
Bluetooth
Bluetooth overview
Using Bluetooth Sockets
Bluetooth Sockets overview
How to find and connect to remote devices
Methods for selecting a remote device
How to inquire about remote devices
How to inquire about services on a remote device
How to connect and transfer data to a remote device
How to use security on outgoing sockets
Listening for incoming Bluetooth connections
How to get and set the local device name
How to perform low-level configuration
How to send vendor specific debug commands to the host controller
How to disconnect ACL links
Using Bluetooth Service Discovery Database
Bluetooth Service Discovery Database overview
Service records and attributes
How to connect to the service discovery database
How to create and manipulate attributes
How to register a service in the database
How to set an attribute in a service record
Using Bluetooth Service Discovery Agent
Bluetooth Service Discovery Agent overview
How to query for a remote service
How to read remote service attributes
How to create an object to handle inquiry results
Using Bluetooth Security Manager
Bluetooth Security Manager overview
How to connect to the security manager
How to set service security requirements
Using Bluetooth UI
How to prompt the user to select a remote device
Comms infrastructure
CommDb
CommDb Overview
The communications database
How to access tables in the database
Transactions and locking
How to use transactions and locks
Two box device model
How to use the global settings to manage modems/locations for two-box device
Notification service
Connection preferences
Template records
Hidden records
Override settings
CommDb CDMA fields
Configuring Mobile IP to Simple IP Fallback
Table summary
Using Sockets Server (ESOCK)
Sockets Client Overview
Socket Server Protocols Overview
Using Sockets Client
Introduction to Sockets
Sockets Client API Classes
Socket Server Interface
Socket Interface
Read socket functions
Connection Management
Connection Management overview
Progress information for connections
Getting progress information asynchronously
Getting progress information synchronously
Getting the last error which occurred
Using Socket Server Protocols
Introduction to writing socket server protocol modules
Protocol modules and families
Protocols and binding
Socket Service Providers
How to define a protocol module entry point
How to write CProtocolFamilyBase::Install()
How to write CProtocolFamilyBase::ProtocolList()
How to write CProtocolFamilyBase::Open()
Using Nifman
NifMan Overview
How to write a NIFMAN configuration daemon
Graphics
Using Font and Bitmap Server (FBSERV)
Introduction to Font and Bitmap Server
Operation of the Font and Bitmap Server
Using Graphics Device Interface
Graphics Device Interface Overview
Drawing and Graphics Contexts
Introduction to drawing and graphics contexts
Graphics context settings
Shape operations
Text operations
Bitmap operations
Geometry classes
Colours
The linear DDA
How to Draw to a Graphics Context
Using the GDI drawing functions
How to draw points
How to draw lines
How to draw text
How to use relative and sequential drawing
How to draw arcs and ellipses
How to draw a rounded rectangle
How to draw polylines and polygons
How to use a bitmap-patterned brush
Twips and Zooming
Twip to pixel mapping
How to use TZoomFactor and MGraphicsDeviceMap
Using Bitmaps
Bitmap devices and contexts
Bitmaps
How to load a bitmap from a file
How to draw bitmaps
How to draw reduced and enlarged bitmaps
How to create and draw to an off-screen bitmap
How to create a bitmap by duplication
How to clear a rectangle
How to copy a screen area
How to use the bitmap utilities
Using Embedding
Introduction to pictures
Using CPicture
How to store a picture
How to restore pictures
Using Fonts
Introduction to Fonts
The Font classes
Character metrics
Character ascent, descent, height and baseline
Character width, move and adjusts
Character underlining
Character maximum normal width
How to use typefaces
How to select a font
Using Printing
Introduction to Printing
Printing classes
How to set the printer model
How to set the page specification
How to print bands
OpenGL ES
OpenGL ES Native Platform Graphics Interface (EGL Version 1.1.02)
OpenGL ES Common/Common-Lite Profile Specification, Version 1.1.04 (Annotated)
Using Screendriver
2D Graphics Hardware Acceleration Overview
Using Window Server (WSERV)
Window Server Overview
Window Server architecture
Introduction to the window server
Window server session
Window server events
Window server events
General events
Redraw events
Priority key events
Pointer handling
How to declare a window server event handling class
How to handle general events
How to process window-group related events
How to process window-related events
How to process system-related events
Client-side buffer
Screen handling
WSINI.INI
Window types
Window types
Window groups and applications
Displayable windows
Back up behind windows
Window hierarchy
Ordinal position
Window group priority
(x,y) co-ordinate system
Shadowing
Graphics and drawing
Graphics
Drawing and redrawing
How to draw and redraw
Sprites and cursors
Sprites and cursors
How to create sprites and pointer cursors
How to set the text cursor
Animation
Animation Overview
Introduction to Animation
Implementing the client side
Implementing the server side
How to create an animation object
How to create an animation DLL object
How to pass arguments from client to server classes
Password support
Window server configuration
Window server configuration
How to set up window server logging
Infrared
Infrared Overview
IrDA Serial Overview
IrDA Sockets Overview
IrTranP Overview
Using Infrared
Using IrDA Serial
Introduction to IrDA Serial
How to implement a simple IR printing application
Using IrDA Sockets
The IrDA Sockets API
The IrDA Sockets API
How to load an IrDA protocol set