DEVELOPER LIBRARY
»
Index
»
Document Tree
Tree Index
Developer Library
Quick Start
Essential setup
Application development quick start
Base porting and OS customisation quick start
Notes on the Base
Notes on Comms
Notes on Media and Graphics
Notes on WAP and Web Browsing
About Symbian OS Kits
Introduction to the Development Kit
Introduction to the Customization Kit
Kits structure and contents
Development Kit directory tree
Source and example code on the Development Kit
Customization Kit directory tree
Source and example code on the Customization Kit
About the Developer Library
Introduction to the Developer Library
Documentation Conventions
Documentation History
Release Notes
Using the Glossary and Indexes
Acknowledgements
Symbian OS Guide
New in Symbian OS v7.0
C++ API guide
Using the C++ API guide
Application Engines
Application Engines overview
Agenda Entry and Instance overview
Agenda File overview
Agenda Server Client Side overview
Agenda Model Utilities overview
Contacts Model overview
To-do List overview
Using Agenda File
Introduction to the agenda model
The entry model, instance model and indexed model
How to use the model classes
How to set the model's alarms
Using Agenda Entry and Instance
Entries and instances
Entry IDs
Categories
How to create and use entries
How to set date and time
How to set alarm data
Using Contacts Model
Introduction to Contacts Model
The contact database
Contact items
Contact fields
Application Framework
Application Framework overview
Clock overview
Front End Processor overview
Message Window overview
Open Font System overview
Print Framework overview
Print Preview overview
Recognizers overview
System Sounds overview
Text and Text Attributes overview
Text Views overview
UI Control Framework overview
UI Graphics Utilities overview
Uikon overview
Uikon Core overview
Uikon Core Controls overview
View Server 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 Open Font System
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 Print Framework
Introduction to Print Framework
How to insert a field into the header
How to start the print process
Using Text and Text Attributes
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 Text Views
Text Views
Introduction to Text Views
Editing
Printing
Special requirements
Using 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 UI Control Framework
UI Control Framework
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
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 Uikon Core Control's Status Pane
Introduction to the status pane
How to access the default status pane
How to define an application model resource
How to dynamically change status pane layout
How to get and set subpane contents
Application Protocols
Using ECom
The ECom Plug-in Architecture
Introduction to the ECom architecture
Interface clients
Interface definitions
Interface implementations
ECom framework summary
How to write interface definitions
Interface definition overview
How to define instantiation functions
How to define the destructor
How to create implementation collections
How to write an interface implementation
How to export the implementation factories
How to provide the standard DLL entry point code
How to provide registry information
How to write an implementation collection's project file
How to provide a custom resolver
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
Using SyncML Client
SyncML Client overview
The SyncML standard
Using SyncML Client
Using SyncML Synchronisation Controller
Synchronisation Controller overview
How to start and stop a synchronisation
How to get a list of SyncML content providers
How to get the list of protocols over which SyncML is supported
How to get the list of SyncML profiles
How to get a list of the tasks in a profile
How to delete a task from a profile
How to add a task to a profile
How to enable or disable a task in a profile
How to edit server details in a profile
How to get information about the last and next synchronisations
Using SyncML Database Adapter Plug-in
Database Plug-in Adapter overview
Database adapter example code
How to create a DBA
How to derive from CSmlDbAdapter
How to derive from CSmlDbAdapter
DBA Member variables
How to define the DBA NewL() constructor
How to implement OpenDbL()
How to implement CancelOpenL()
How to implement DoesDbUidMatchL()
How to create and register a database snapshot
How to implement CreateFile()
How to implement Version()
How to implement ItemEncoding()
How to implement DbCapabilitiesL()
How to implement GetMetaInformationL()
How to implement SetMetaInformationL()
How to implement SetRxItemDataFormatL()
How to implement SetTxItemDataFormatL()
How to implement FetchChangedItemUidsL()
How to implement FetchDeletedItemUidsL()
How to implement FetchNewItemUidsL()
How to implement FetchItemL()
How to implement AddItemL()
How to implement DeleteItemL()
How to implement UpdateItemL()
How to implement ResetL()
How to implement ResetDatabaseL()
How to implement CloseL()
How to implement transactions
How to satisfy ECom requirements for a DBA plug-in
How to create the DBA resource file
How to create the DBA project file
How to install a DBA
Using SyncML Transport Adapter Plug-in
SyncML Transport Adapter Plug-in overview
SyncML Engine/Transport adapter sequence of operation
How to create a Transport adapter
How to satisfy ECom requirements for a Transport Adapter plug-in
How to handle errors
How to create the Transport Adapter resource file
How to create the Transport Adapter project file
SyncML localisable and customisable files
Application Services
Application Services Overview
Alarm Server Overview
Calendar Conversion Overview
Log Engine Overview
System Agent Overview
Versit Overview
World Server Overview
Using Alarm Server
Types of alarms
Alarm Server functionality
Alarm states
Alarm Server issues
Using System Agent
Using the System Agent interface
Use of buffering
Managing changes to state variables
Using Versit
Versit
Using World Server
World Server functionality
How to obtain city/country data
How to modify city/country data
Session notification messages
Importing/exporting databases
Base
Application Utilities
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 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
Basic Types
Basic Types Overview
Integral types
Text types
Boolean type
Floating-point numbers
Templated functions
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
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
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
Descriptors for function interfaces
How to represent general binary data
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 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
Character Conversion
Character Conversion Overview
Introduction to Character Conversion
Character sets and Unicode
Character conversion to and from Unicode
Transformation formats
Conversion to and from Unicode transformation formats
How to use CCnvCharacterSetConverter
How to use CnvUtfConverter
Character Conversion Plug-In Provider
Character Conversion Plug-In Provider Overview
Clipboard
Clipboard Overview
Introduction to Clipboard
How to copy or cut to the clipboard
How to paste from the clipboard
How to copy and paste real numbers
Command Line Parsing
Command Line Parsing Overview
How to parse command line arguments
C Standard Library
Copyright information
Design and implementation of STDLIB
Porting
Date and Time Handling
Date And Time Handling Overview
Using Date And Time Handling
DBMS
DBMS overview
Interface to DBMS databases
Interface to DBMS databases overview
Introduction to DBMS databases
Rules for DBMS names
Implementation limits
Database storage overhead
Data safety and recovery
Database encryption
Database compression
Error codes
Transactions on a store database
Indexes
DBMS columns, column sets, and keys
DBMS Columns, Column Sets, And Keys Overview
Columns, column sets and keys
Column type characteristics
DBMS rowsets
DBMS rowsets overview
Types of rowset
Cursor navigation
Tables
DBMS SQL
SQL views
Pre-evaluation window properties
Basic SQL keywords
Supported SQL subset
SQL schema update statements (DDL)
SQL data update statements (DML)
Mapping SQL types to DBMS types
How to modify the database definition (DDL)
How to modify the database content (DML)
DBMS incremental operations
Incremental operations overview
Executing SQL statements
How to execute SQL incrementally
DBMS sharing databases
Sharing databases overview
The DBMS server
Named database
Access modes
Transactions and locks
Change notification
Database compaction
Descriptor Arrays
Descriptor Arrays Overview
Using descriptor arrays
8 bit variant, 16 bit variant and build independence
The relationship between descriptor array classes
How to construct a descriptor array
The MDesCArray mixin class
How to use the MDesCArray mixin class
Copying arrays
Deleting elements from the arrays
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
Environment Change Notifier
Environment Change Notifier Overview
Environment Change Notifier
How to use the environment change notifier
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 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
File management and searching
File management with CFileMan
How to implement CFileMan operation observers
How to search for files with TFindFile
Parsing paths and filenames
Structure of paths and filenames
TParse, TParsePtr and TParsePtrC
How to parse a pathname
Other file-related components
Application architecture
Stream store
Database manager
File Stores
File Stores Overview
Introduction to file stores
Direct file store
Permanent file store
File based dictionary store
File store type and layout
Direct file store structure
How to detach and re-attach a file
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
Incremental Matcher
Interface to Resource Files
Interface to Resource Files Overview
Introduction to the resource file interface
Basic resource file usage
How to read a simple string resource
How to convert data from a simple resource into a C++ program
How to convert data from a resource containing an array of structs
How to support multiple resource files
Type safety issues
Summary of file types
Inter Process Communciation
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
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
Sharable sessions
How to implement a client interface with subsessions
How to implement a client-side session with the count server
How to implement a client-side session with subsessions
How to implement a server interface with subsessions
How to implement a simple client interface
How to implement a simple server interface
Initialising a subsession
Inter-thread data transfer
Providing services using a server
Sessions and requests
Subsessions within a session
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, local time and home time
How to format currency values
Localised Names of Plug-ins
Localised Names of Plug-ins Overview
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
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
Stores
Stores Overview
Introduction to stores
Persistent stores
Persistent data
Persistent stores
Non-persistent stores
Embedded stores
Introduction to embedded stores
Constructing an embedded store
Dictionary stores
Introduction to dictionary stores
Dictionary write streams
Dictionary read streams
Memory stores
Transactions
Introduction to transactions
How to commit and revert
Space reclamation and compaction
Introduction to space reclamation and compaction
Reclamation and compaction, incrementally
Reclamation and compaction, as a single job
Store Streams
Store Streams Overview
Introduction to Store Streams
Introduction to store streams
Stream ID
How to create streams
How to commit streams
How to cleanup streams
Stream dictionaries
Storing and restoring
Stream networks
Storing and restoring
Storing and restoring protocol
How to store and restore a non-compound object
How to store a compound object
How to restore a compound object
Copying
Swizzled and deferred loading
Introduction to Swizzles and deferred loading
Externalizing a Swizzle
Internalizing a Swizzle
Store map
Introduction to store map
Store map as repository for Swizzles and associated stream IDs
Store map as externalizer for Swizzles
Store map cleanup support
Streaming
Streaming Overview
Introduction to streams
Externalising
The write stream interface
Internalising
The read stream interface
Templated stream operators
Externalising and internalising descriptors
How to externalise and internalise
How to use templated stream operators
How to externalise and internalise descriptors
How to externalise and internalise compound objects
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
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
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
How to listen for connections from remote devices
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
Comms Infrastructure Overview
CommDb Overview
NifMan Overview
Secure Sockets Overview
Sockets Client Overview
Socket Server Protocols Overview
Using CommDb
The communications database
How to access tables in the database