Programmer Reference
Preface
Notices
Trademarks
About this book
What's new?
VAST Platform 2024 (version 13.0.0)
VAST Platform 2024 (version 13.0.1)
Who this book is for
Conventions used in this book
Tell us what you think
VAST Base overview
Base subsystems
Common Language Data Types
Common Language Implementation
Common Process Model
Common File System
Common Graphics
Common Widgets
Extended Widgets
Drag and Drop
Common Printing
Design intent
Architecture
Industry-standard support
ANSI Smalltalk Support
Platform support
Bitness support
Common Language Data Types
Object behavior
Basic dependents mechanism
Behavior testing
Class identity testing
Converting
Copying
Printing and storing
Performing
Error handling
Primitive accessing
Mutating
Testing object equality or identity
Boolean classes
Boolean messages
Collection classes
Collection protocols
Common collection protocols
Accessing
Adding
Byte accessing
Converting
Copying
Creating instances (class methods)
Creating dictionaries (class methods)
Dictionary accessing
Dictionary enumerating
Enumerating
Ordered enumerating
Ordered removing
Rehashing
Removing
String accessing and converting
Storing
Testing
Unique collection protocol
Array
Bag
Interval
Interval class
OrderedCollection
SortedCollection
SortedCollection class
String and DBString
Symbol
Magnitude classes
Magnitude comparing
Association
Accessing
Creating instances (Association class)
Creating instances (Object)
Character
Accessing
Converting
Creating instances (Character class)
Testing
Date
Accessing
Calculating
Creating Instances
Querying
Time
Accessing
Calculating
Creating instances
Querying
Number
Arithmetic
Converting
Testing
Enumerating
Generality
Math functions
Truncating and rounding
Integer
Manipulating bits
Enumerating
Testing
Printing
Integer math functions
Converting
Fraction
Accessing
Creating instances
Converting
Float
Accessing
Creating instances
Converting
ScaledDecimal
Converting
Accessing
Printing
Creating instances
Graphical classes
Point
Accessing
Arithmetic
Creating instances
Magnitude comparing
Point functions
Creating rectangles
Truncating and Rounding
Rectangle
Accessing
Geometric functions
Creating instances (rectangle class)
Truncating and rounding
Stream classes
Accessing
Copying
Enumerating
Positioning
Reading
Testing
Truncating
Writing
Creating instances
Support classes
UndefinedObject
Message and DirectedMessage
Block
Exception handling classes
ExceptionalEvent
Signal
Creating new exceptions
Example: creating an end of file exception
Example: creating a message not understood exception
Signaling an exception
Example: signaling end of file
Example: signaling message not understood
Handling of exceptions
ExceptionalEvent collections
Completion blocks
Default exception handler
System exceptions
Examples of exception handling
Example: printing an object
Example: trapping user break
Example: growing a stack
Example: propagating a different exception
Example: top-level loop
Example: close stream at end or on error
Common Language Implementation
Object messages
Primitive accessing
Behavior messages
Class queries
Compiling
Creating instances
Enumeration
Instance accessing
Instance structure testing
Method accessing
Method adding and deleting
Method queries
Class messages
Class variable accessing
Instance variable accessing
Shared pool accessing
Class accessing
Initializing and removing
Superclass accessing
Metaclass messages
Accessing
Creating new classes
Creating fixed classes
Creating variable classes
Creating variable byte classes
Extended classes
Multiple instance accessing
String converting
Compiling and evaluating code
Compiling
Evaluating
CompiledMethod
Accessing
Testing
EmSystemConfiguration
Common Process Model
Creating a process
Suspending, resuming, and ending a process
Setting and modifying process priorities
Synchronization using semaphore and delay
Block evaluation methods
Protocol synopsis
Block evaluation methods
Process-related block methods
Process methods
ProcessorScheduler methods
Delay class and instance methods
Semaphore class and instance methods
Common File System
Accessing the capabilities of the Common File System
Basic file protocols
Stream protocols
Portability protocols
Error handling protocols
CfsConstants pool dictionary
Basic classes
CfsVolumeInfo
CfsDirectoryDescriptor
CfsDirectoryEntry
CfsFileDescriptor
CfsStat
CfsError
Specifying file names and paths
Portable file names
File system roots
Path separators
Managing files and directories
Current working directory
Creating and removing directories
Deleting files
Renaming files
Copying files
Setting the timestamps of a file
Startup directory
Obtaining volume information
Volume name and type
File names and directory path case
File name length
Volumes with different file name lengths
Searching directories
Opening a directory for searching
Reading directory entries
Using readdir
Using readdir:
Using readdirName
Closing the directory descriptor
Using file streams
File stream classes
CfsReadFileStream
CfsWriteFileStream
CfsReadWriteFileStream
CfsFileStream
Opening and closing file streams
Reading and writing file streams
Characters versus bytes
Line delimiters
Using low-level file operations
Opening files
Closing file descriptors
Reading and writing data
Changing the file offset
Other low-level operations
Mixing streams and file descriptors
Using access modes and flags with file streams
Performing low-level file operations on streams
File locking and share modes
File locking
Determining supported lock types
Locking and unlocking regions
Share modes
Selecting valid share modes
Opening files using share modes
Handling errors
Suppressing system error dialogs
Testing existence and obtaining other file properties
Obtaining a CfsStat instance
Mixing platform-specific and Common File System operations
Performing a platform-specific call with a CfsFileDescriptor
Converting a platform file descriptor into a CfsFileDescriptor
Obtaining platform-specific error information
Common Graphics
X Window system graphics library compatibility
Core Common Graphics class hierarchy
Seldom-used and abstract classes
A simplified drawing process overview
Before drawing
During drawing
After drawing
A simple example of the drawing process
CgConstants pool dictionary
Using graphics contexts
Basic graphics context methods
Creating graphics contexts
Creating a graphics context with default values
Creating a graphics context using the CgGCValues object
Retrieving several values from a graphics context using the CgGCValues object
Configuring a graphics context using convenience methods
Copying graphics contexts
Changing graphics contexts
Freeing graphics contexts
Using graphics contexts with other drawables
Drawing operations
Drawing points
Drawing lines
Drawing rectangles
Drawing polygons
Drawing arcs and circles
Drawing pie slices and chords using filled arcs
Using fonts
A simplified view of the font process
Using fonts
Querying the system for fonts
Pattern matching
Loading fonts
Determining whether a font is scalable
Parsing a scalable font name
Loading a CgFont
Loading a CgFontStruct
More about CgFont and CgFontStruct
More about CgCharStruct
Assigning fonts for use in drawing operations
String drawing operations with fonts
Drawing a string
Drawing an image string
Drawing multifont strings using CgTextItem objects
Releasing CgFonts and CgFontStructs from memory
Obtaining the current font from a graphics context
Using cursors
The process for using cursors
Font cursors
Glyph cursors
Pixmap cursors
Changing the color of a cursor
Platform cursors
Using pixmaps
Creating a pixmap using createPixmap:
Freeing pixmaps
Creating a pixmap using createPixmapFromBitmapData:
Copying pixmaps to and from windows
Getting pixmap geometry
Creating a bitmap from bitmap data
Creating stipples using bitmaps
Writing bitmaps to files
Reading bitmaps from files
Displaying bitmaps
Common Graphics image support
Specifying colors
Specifying colors as RGB intensities
Specifying colors by name
Parsing a color-specification string
Using palettes
The default palette
Creating indexed palettes
From pixel values to colors and back
Selecting and drawing with palettes
Selecting a palette
Retrieving the selected palette
Drawing with palettes
Drawing in black and white
Drawing in pixmaps using palettes
Direct palettes
Device-independent images
Creating and manipulating images
Displaying images
Direct color images
Copying images from a drawable
Icons
Creating icons
Drawing icons
Loading icons from DLLs
Using operating system icons
Image and icon file formats
Loading images from files
Handling errors
Loading icons from files
Unloading images into files
Unloading icons into files
Unloading images and icons into ByteArrays
Loading images and icons from ByteArrays
Determining the format of a file
Extra file format information
GIF
JPEG
PCX
PM BMP
TIFF
Windows BMP
Example
Resource management summary
Common Widgets
OSF/Motif compatibility
Common Widgets class hierarchy
Common Widgets class hierarchy
Overview of Common Widgets user interface concepts
The parent-child widget tree
The widget lifecycle
1. Creating a widget
2. Managing a widget
3. Mapping a widget
4. Realizing a widget
5. Destroying a widget
Mapping and unmapping widgets
Managing and unmanaging widgets
Widget resources and functions
Resources
Function methods
CwConstants pool dictionary
Example code to create a widget tree
Widget event handling and callbacks
Example of using an event handler and a callback
Creating and using widgets
Widget creation convenience methods
Callbacks
Event handlers
Registering an Event
Running an Event
Example
Shell widgets
Top-level shell widgets
Scrolled-window widgets
Main-window widgets
Main windows and geometry management
Text widgets
Drawing area widgets
Adding an event handler to a drawing area
Layout widgets
Form widgets
Row-column widgets
Button and label widgets
Static label widgets
Push-button widgets
Toggle-button widgets
Radio-button groups
Check boxes
Icon and pixmap label and button widgets
Application-drawn buttons
Menus
Greying out buttons
Simple menus and menu bars
Creating a menu bar and pull-down menu using simple menu protocol
Creating a secondary menu using simple menu protocol
Creating a pop-up menu using simple menu protocol
Non-simple menus and menu bars
Non-simple menu example
List widgets
Single selection lists
Multiple selection lists
Scrolled lists
Combo-box widgets
Composite-box widgets
MessageBox widgets
SelectionBox widgets
Dialog convenience methods
Creating and using prompters
Message prompter
Text prompter
File selection prompter
Extended widgets
Writing an extended widget
Defining the extended widget class
Initialization
Resources
Callbacks
Widget-specific methods
Using an extended widget
Example: a primitive extended widget
Using the CewEntryField primitive extended widget
Example: a composite extended widget
Using the CewTitleFrame composite extended widget
Fonts
Using the system browser font
Colors
Clipboard operations
Examples for using the clipboard
Example 1: copying data to the clipboard
Example 2: retrieving data from the clipboard
Platform-integrated drag and drop
Target types
Transferring data
Drag and drop objects
Procs
Common Widgets drag and drop classes
Drag source widgets and the CwDragContext object
Starting the drag--CwDragContext
Drop site widgets and CwDropSite objects
Preparing to accept drops: CwDropSite
The drag proc
The drop proc
Data transfer and the CwDropTransfer object
Starting the data transfer--CwDropTransfer
The convert proc
The transfer proc
The user interface process model
The system view
The application programmer's view
Background user-interface requests
Work procs and timer procs
Examples of applications with long-running operations
Example 1: a simple text editor
Example 2: a program development environment
Example 3: a complex drawing editor
Windows Common Controls
CwDateTimePicker
Protocol
Value getters and setters
Look and Feel
Date and Time Format Strings
Callbacks and Events
Example
CwMonthCalendar
Protocol
Manipulating Value
Look and Feel
Callbacks and Events
Example
CwProgressBar
Protocol
Callbacks and Events
Example
CwRebar
Protocol
creation
rebar
Pertaining to bands in the rebar
Callbacks and Events
Example
CwStatusBar
Protocol
Callbacks and Events
Example
CwTabStrip
Protocol
creation
tab strip
tab
Callbacks and Events
Example
CwTrackBar
Protocol
Callbacks and Events
Example
CwTreeView
Protocol
Creation
Tree View
Nodes
Callbacks and Events
Example
CwToolBar
Protocol
creation
tool bar
Pertaining to the buttons in the tool bar
Callbacks and Events
Example
CwTable
TableConstants pool dictionary
Protocol
Resources
Column creation
Column customization
Row creation
Functions
Data formatting
Data Editing
Callbacks
Example
CwWebViewSupport
CwWebViewSupport
Description
Overview
CwWebView
CwWebView
Description
Responsibility
Examples
CwWebViewEnvironmentOptions
CwWebViewEnvironmentOptions
Description
Responsibility
Extended Widgets
Extended Widgets class hierarchy
EwConstants pool dictionary
Creation convenience methods
Extended list widgets
Common resources
Scrolled lists
Drawn list widget
Icon list widgets
Renderables
Direct editing of labels
Flowed icon list widget
Icon area widget
Table list widget
Table list resources
Table columns
Direct editing of cell values
Edit policies
Tree widgets
Icon trees
Table trees
Notebook widgets
Creating pages
Callbacks
PM notebook widget
WIN notebook widget
Progress bar widget
Slider widget
Spin button widget
Split window widget
Tool bar widget
Creating tools
Using tools
Using primitive tools
Using widget tools
Using groups
Drag and Drop
Drag and drop adapters
Sequence of events
Voting and cursors
Source vote and image changes
Leaving a target
Dropping
Canceling a drag
System configuration
Simple drag and drop
Widget limitations
Common Printing
Common Printing classes
Printing process overview
Selecting a printer
Configuring print job attributes
Creating a print job
Using the printer prompter
Print job attributes
Using a printer shell
Creating a shell
Adding callbacks
Starting a job
Producing a page
Ending a job
CwPrinterShell resources and convenience methods
Printing with Common Graphics
A complete example
Setting up printers and queues on UNIX platforms
Configuring printer setup options
Printer configuration information
Pragmas
Namespace pragmas
Namespaces
Scope rules
Namespace management
Declarations
Declaration methods
Declaration syntax
Working with declaration methods
Why use declaration methods?
Where to declare?
When several applications contribute to a pool
Placement of declarations
Platform-dependent declarations
Adding, deleting, and changing declarations
Finding declaration methods
Correcting declaration errors
Loading previous editions of applications that do not have declaration methods
File-out format
Annotation pragmas
Including an Annotation Pragma in a Method
Processing Annotation Pragmas
Collecting Annotation Pragmas
Performing Operations with Annotation Pragmas
Accessing Annotation Pragma Components
VAST Virtual Machine API
Who should read this chapter
Conventions
VAST C programming model
Defined types
Object types
Immediate objects
Pointer objects
Byte, word, and long objects
Read-only objects
Fixed objects
Macros versus functions
External language interface
Parameter types
Passed parameters
Calling a PlatformFunction
Error cases
Inline external function calls
PlatformFunction protocols
Instance methods: accessing
Instance methods: calling
Class methods: instance creation
PlatformLibrary protocols
Creating PlatformLibrary instances
Closing PlatformLibrary instances
Class methods: mapping logical names to physical names
Class methods: instance creation
Class methods: miscellaneous
Instance methods: accessing
Instance methods: library operations
Entry points
Parameter types and return types
Returned parameters
Calling an EsEntryPoint
Error cases
EsEntryPoint failure
EsEntryPoint protocols
Instance methods: accessing
Instance methods: miscellaneous
Class methods: instance creation
Asynchronous callouts
Calling a Platform Function asynchronously
Standard asynchronous calls
Resource future calls
Static future calls
Allocating resources for static futures
Locking resources for an asynchronous call
ACO errors and error cases
Walkbacks
ACO errors
Parameter types and return types
Parameters passed with asynchronous calls
Managing resources
Minimum required resources
ACO resource manager
Resource limitations
Maintaining a thread
Extensions to platform function protocols
Instance methods: standard asynchronous
Instance methods: resource future
Instance methods: static future
ACO resource manager protocols
Class methods: resource control protocols
Instance methods: static resource management protocols
Resource future protocols
Instance methods
Static future protocols
Instance methods
ACO error protocols
Instance methods
OSObjects
OSObject subclasses
OSImmediate
OSBaseType
OSStructure
OSUnion
OSVariableStructure
OSObjectPointer
OSObject protocols
Instance methods
Class methods: initialization
Class methods: instance creation
OSImmediate protocols
Instance methods
Class methods
OSBaseType, OSObjectPointer, and OSStructure protocols
Instance methods: pointer arithmetic
Instance methods: low-level storage access
Instance methods: freeing
Instance methods: testing
Class methods: instance creation
OSStructure protocols
Class methods: layout info
Class methods: query
Class methods: initialization
Protocol Usage Examples
Base Types
Arrays
Nested
Anonymous Structs
Anonymous Unions
Manual Padding
Packing
OSVariableStructure protocols
Class methods: initialization
Class methods: instance creation
OSBaseType protocols
ObjectPointer protocols
Class methods: initialization
Class methods: instance creation
Instance methods: accessing
Methods available in other classes
User primitives
User primitive tables
Functions available in user primitives
Object allocation
Sending messages
Testing objects
Testing for classes
Testing for types
Converting Smalltalk objects to C values
Converting C values to Smalltalk objects
Accessing objects
Protecting objects from garbage collection
Miscellaneous
Classes available in user primitives
Asynchronous messages (interrupts)
Using user primitive functions outside user primitives
Sample user primitives for VAST
Sample callback for Microsoft Windows
Example callback code
Smalltalk code that uses the primitive above
The primitive declaration
Sample use of the primitive
Platform requirements
Microsoft Windows
Required software
User primitives
PlatformFunction calling convention
UNIX platforms
Required software
User primitives
PlatformFunction calling convention
Primitive error codes
Cryptography
Introduction
Getting Started
Architectural Overview
OpenSSLCryptoInterfaceApp
Compatibility
Separation of Concerns
Performance
Safety
OpenSSLCryptoInterfaceExamplesApp
Modules
Core
Thread-Support
Low-Level OpenSSL Communication
Memory Management
Library Information
OSSslVersion
ASN1
ASN1 Types
OSSslAsn1Integer
OSSslAsn1String
OSSslAsn1Time
Extensions
DateAndTime
Integer
String
Symmetric Ciphers
Ciphers
OpenSSLCipherData
OpenSSLCipherAuthData
OpenSSLCipherAEAD
OSSslCipher
OSSslCipherCtx
BIO
OSSslCipherBIO
Extensions
Object
OSSslBIO
OSSslBIOMethod
Error Handling
Errors
OpenSSLError
Extensions
Object
OpenSSLCryptoLibraryDispatcher
I/O Abstraction
BIO
OSSslBIO
OSSslBase64BIO
OSSslBufferBIO
OSSslFileBIO
OSSslMemoryBIO
OSSslStaticMemoryBIO
OSSslNullBIO
Message Authentication Code (MAC)
MAC
OSSslMac
HMAC
OSSslHmacCtx
CMAC
OSSslCmacCtx
Extensions
OSSslCipher
OSSslDigest
Message Digests
Digests
OSSslDigest
OSSslDigestCtx
BIO
OSSslDigestBIO
Extensions
ByteArray
OSSslBIO
OSSslBIOMethod
Multiprecision Integer Arithmetics
Big Number
OSSslBigNumber
Extensions
Integer
Public/Private Key
PKey
OSSslPKey
OSSslDHKey
OSSslDSAKey
OSSslECKey
OSSslRSAKey
OpenSSLEnvelope
Extensions
OSSslCipher
OSSslCipherCtx
Random Number Generator
RNG
OSSslRandom
X509
X509
OSSslX509
OSSslX509Name
Extensions
String
UUID
Socket Communications Interface
Introduction
Application Programming Interface
Supported Socket and Database functions
SCI classes
SciAbstractSocket protocols
Instance methods
SciSocket protocols
Instance methods
Class methods: creation
SciLocalSocket protocols
Instance methods
Class methods: creation
SciSocketManager protocols
Instance methods
Class methods: creation
SciSocketAddress protocols
Instance methods
Class methods: creation
SciLocalSocketAddressProtocols
Instance Methods
Class methods: creation
SciReturn protocols
Instance methods
SciError protocols
Instance methods
SciErrorProxy protocols
Instance methods
SciHostEnt protocols
Instance methods
SciProtoEnt protocols
Instance methods
SciServEnt protocols
Instance methods
Error values
Secure Socket Layer (SSL)
Overview
SSL Example Workspaces Certificate and Private Key
Example Workspaces
SSL Server Workspace
SSL Client Workspace
Application Programming Interface
Supported SciSslSocket functions
SciSslSocket Protocols
Instance Methods
SciSslContext Protocols
Class methods: creation
Instance methods:
SciSslSocketConfiguration Protocols
Instance Methods
SciSslX509Certificate protocols
Class methods: creation
Instance methods
SciSslPrivateKey protocols
Class methods: creation
Instance methods
SciSslError protocols
Instance methods
SciSslBlockingDispatcher protocols
The SciSslOpenSSLInterface Subapplication
Licenses
Dynamic data exchange
Introduction
DDE concepts and definitions
DDE classes
DdeClient class
DdeServer class
DdeServerManager class
DdeCallbackData class
Building a DDE server
Building a DDE server that uses default processing
An example DDE server that uses default processing
Building a DDE server that does not use default processing
An example DDE server that does not use default processing
Creating a timer
Implementing server behavior
Handling links
Handling client requests
Ending
Discussion of the DdeServerManager
Default database
Initiate event
Warmlink and hotlink event
Coldlink event
Request event
Run and poke events
Termination event
Building a DDE client
An example DDE client
Discussion of the DdeClient
Queries
Requesting data
Hot- and warmlinking to items
Coldlinking items
Sending data to the server
Executing commands at the server
Formats of data transferred between DDE servers and clients
Callbacks for handling DDE events
Return values
DDE protocols
DdeServerManager public class methods
DdeServerManager public instance methods
DdeClass public instance methods
DdeServer public instance methods
DdeClient public instance methods
Protocols common to DdeServer and DdeClient
Timeouts
Disconnect
Free
Converting Smalltalk objects to a ByteArray and back
Examples
Spreadsheet
Spreadsheet window coordinates
Two windows exchanging data
Updating time and date
Updating time in the String format
Platform-specific support
National Language Support
Overview of National Language Support
NLS concepts and definitions
The POSIX locale model
Overview of internationalization
Overview of localized messages
Overview of message catalogs
Locating message catalogs
National Language Support classes
Support for double-byte characters
Characters
String classes
Obtaining Locale, LCCType, and LCCollate objects
Obtaining LCMessages, LCMonetary, LCNumeric, and LCTime objects
Multiple instances
New instances for the platform default locale
New instances for different locales
Example usage of locale-specific information
NLS-enabled classes
Character (CLDT)
LCCollate (NLS)
Date (CLDT)
String (CLDT)
Time (CLDT)
Locale-specific sorting
Number formatting
Currency symbol, spacing, and sign locations
Numeric groupings
Locale change notification and the image startup sequence
SubApplication class
Tools for developing international software
Externalization support and tools
Catalog File Editor
Open an NlsCatalogBrowser
Editing a catalog file
Operations on Locales
Adding a new Locale
Deleting a Locale
Renaming a Locale
Importing/Exporting a Locale
Adding the contents of a locale to a NLS pool in the image
Operation on the message
Adding a new message
Deleting a message
Finding all messages containing a particular text
Checking the Catalog
Browsing the references to a particular message
Checking for duplicate messages in a locale
Checking for empty messages in a locale
Checking for unused messages in a locale
Checking the arguments of the messages in a locale
Advanced Topics
Adding an object as contents of a message
Adding export options to the export submenu
Adding import options to the import submenu
NLS Enabler
Open an NLS Enabler
NLS Enablement Browser
Externalizing Strings for an Application
Typical Externalization Process
Setting the Pool and Catalog
Replacing Strings with Message References
Options and Methods Menu
Advanced Warning Topics
NlsWarning Overrides
EsParseNode Overrides
Non - Browser Settings
Using message templates
Referencing and initializing localized messages
Removing hard-coded strings
Overview of the message localization process
Step 1: Replace hard-coded strings with pool dictionary variables
Step 2: Respond appropriately to the localize message
Step 3: Ensure that messages are successfully localized
Using message catalogs
External message dictionaries
Indexed external messages
Obtaining instances of NlsMessageCatalog
Using external message dictionaries
Unloading external message dictionaries
Loading messages into a pool dictionary
Loading messages without initializing a pool dictionary
Declaring pool dictionary keys
Defining managed pool dictionaries
Deleting external message dictionaries
Using indexed external messages
Unloading indexed external messages
Loading indexed external messages
Deleting indexed external messages
Deleting locales from a message catalog file
Support for extended locales
Compatibilities
Storing and retrieving compatibilities
Compression
Limitations
Error detection and description
List of error codes
Support for packaging
Support for platform resource formats
RCConverter
Structure of the resource compiler input file
Creating resource compiler input files
Reading from platform resource files
RCConverter limitations
RCConverter error codes
Localization support API
NlsMessageCatalog class methods
NlsMessageCatalog instance methods
RCConverter class methods
RCConverter class methods instance methods
VAST locale names
Manual localization
LCCollate
LCMessages
LCMonetary
LCNumeric
LCTime
Locale
Locales and platform representation
OS/2 Presentation Manager
Use of the country control panel
Microsoft Windows
Use of the system control panel
AIX, HP-UX, and Solaris
UnicodeSupport
UnicodeSupport
Description
Description
Overview
Unicode String Model
UnicodeScalar
Grapheme
UnicodeString
Views
Constant Time Indexing
Optimizations
Copy-On-Write
ASCII-Optimization
Canonical Form
Autoconversion of String into UnicodeString
Caveats
Codepage
Hashing
Streams
Recommendations
EsUnicodeEncoding
Description
Responsibility
Examples
Class Methods
Instance Methods
EsUnicodeSlice
Description
Class Methods
Instance Methods
EsUnicodeStorage
Description
Class Methods
Instance Methods
Grapheme
Description
Class State
Creation
Properties
Views
Equality/Comparison
Conversion
Unicode Component
UTF Encoding
Case Mapping
Uppercase
Lowercase
Titlecase
Character Compatibility
Important Note
Class Methods
Instance Methods
GraphemeView
Description
Instance State
Examples
Class Methods
Instance Methods
UnicodeLimitedWriteStream
Description
Instance State
Class Methods
Instance Methods
UnicodeReadStream
Description
Instance State
CLDT-API
Modes
Class Methods
Instance Methods
UnicodeReadWriteStream
Description
Instance State
Class Methods
Instance Methods
UnicodeScalar
Description
Class State
Creation
Properties
Views
Equality/Comparison
Conversion
Unicode Component
UTF Encoding
Case Mapping
Lowercase
Uppercase
Titlecase
Character Compatibility
Important Note
Class Methods
Instance Methods
UnicodeScalarView
Description
Instance State
Examples
Class Methods
Instance Methods
UnicodeString
Description
Instance State
Creation
Accessing
Iteration
Normalization
FFI
Properties
Views
Equality/Comparison
Conversion
Single-Byte String
UTF Encoding
Case Mapping
Uppercase
Lowercase
Titlecase
String/Character Compatibility
Important Note
Class Methods
Instance Methods
Unicode Support
Class Methods
Instance Methods
UnicodeView
Description
Instance State
Bi-Directional
Copy-On-Write
Collection Conformance
Copying
Contents
Positions
Streaming
Class Methods
Instance Methods
UnicodeViewPosition
Description
Instance State
Class Methods
Instance Methods
UnicodeWriteStream
Description
Instance State
CLDT-API
Class Methods
Instance Methods
Utf16
Description
Class Methods
Instance Methods
Utf16BE
Description
Class Methods
Instance Methods
Utf16BigEndianView
Description
Examples
Class Methods
Instance Methods
Utf16LE
Description
Class Methods
Instance Methods
Utf16LittleEndianView
Description
Examples
Class Methods
Instance Methods
Utf16View
Description
Examples
Instance State
Class Methods
Instance Methods
Utf32
Description
Class Methods
Instance Methods
Utf32BE
Description
Class Methods
Instance Methods
Utf32BigEndianView
Description
Examples
Class Methods
Instance Methods
Utf32LE
Description
Class Methods
Instance Methods
Utf32LittleEndianView
Description
Examples
Class Methods
Instance Methods
Utf32View
Description
Examples
Class Methods
Instance Methods
Utf8
Description
Class Methods
Instance Methods
Utf8View
Description
Examples
Class Methods
Instance Methods
Asynchronous Programming
Description
Features
EsAsyncArgumentError
Description
Class Methods
Instance Methods
EsAsyncError
Description
Class Methods
Instance Methods
EsAsynchronousSupport
Description
Features
Class Methods
Instance Methods
EsAsyncPromise
Description
Examples
Class Methods
Instance Methods
EsAsyncScheduleTaskError
Description
Class Methods
Instance Methods
EsAsyncStackTrace
Description
Class Methods
Instance Methods
EsAsyncStateError
Description
Class Methods
Instance Methods
EsAsyncTaskProcessQueueScheduler
Description
Class Methods
Instance Methods
EsAsyncTaskScheduler
Description
CLASS STATE
Class Methods
Instance Methods
EsAsyncTimeoutException
Description
Class Methods
Instance Methods
EsAsyncUncaughtErrorHandler
Description
Instance State
Class Methods
Instance Methods
EsAsyncUncaughtErrorLayout
Description
Class Methods
Instance Methods
EsAsyncZone
Description
Instance State
Class Methods
Instance Methods
EsAsyncZoneSpec
Description
Instance State
Class Methods
Instance Methods
EsFuture
Description
Asynchronous programming
Class Methods
Instance Methods
EsFutureImpl
Description
Instance State
Class Methods
Instance Methods
EsFutureListener
Description
Instance State
Class Methods
Instance Methods
EsFuturePropagation
Description
Instance State
Class Methods
Instance Methods
EsPromise
Description
Instance State
Class Methods
Instance Methods
EsSyncPromise
Description
Examples
Class Methods
Instance Methods
EsAsynchronousStreams
Description
Class Methods
Instance Methods
EsEventSink
Description
Class Methods
Instance Methods
EsStream
Description
Single-Subscription Streams
Broadcast Streams
Class Methods
Instance Methods
EsStreamChannel
Description
Class Methods
Instance Methods
EsStreamIterator
Description
Class Methods
Instance Methods
EsStreamPromise
Description
Instance State
Class Methods
Instance Methods
EsStreamSink
Description
Class Methods
Instance Methods
EsStreamSinkPromise
Description
Instance State
Class Methods
Instance Methods
EsStreamSubscription
Description
Class Methods
Instance Methods
EsStreamTransformer
Description
Class Methods
Instance Methods
EsStreamView
Description
Instance State
Class Methods
Instance Methods
EsAsynchronousStreamChannels
EsAsynchronousStreamChannels
Description
Class Methods
Instance Methods
EsCloseGuaranteeChannel
Description
Instance State
Class Methods
Instance Methods
EsDefaultStreamChannelBehavior
Description
Class Methods
Instance Methods
EsGuaranteeChannel
Description
State
Class Methods
Instance Methods
EsMultiStreamChannel
Description
Instance State
Class Methods
Instance Methods
EsStreamChannelController
Description
Instance State
Class Methods
Instance Methods
EsStreamChannelImpl
Description
Instance State
Class Methods
Instance Methods
EsStreamChannelPromise
Description
Instance State
Class Methods
Instance Methods
EsStreamChannelTransformer
Description
Instance State
Class Methods
Instance Methods
EsVirtualStreamChannel
Description
Instance State
Class Methods
Instance Methods
EsAsynchronousStreamControllers
EsAddStreamState
Description
Instance State
Class Methods
Instance Methods
EsAsynchronousStreamControllers
Description
Class Methods
Instance Methods
EsAsyncStreamController
Description
Class Methods
Instance Methods
EsStreamController
Description
Class Methods
Instance Methods
EsStreamControllerAddStreamState
Description
Instance State
Class Methods
Instance Methods
EsStreamControllerImpl
Description
Instance State
Class Methods
Instance Methods
EsSyncStreamController
Description
Class Methods
Instance Methods
EsAsynchronousStreamImpl
EsAsynchronousStreamImpl
Description
Class Methods
Instance Methods
EsNullStreamSink
Description
Instance State
Class Methods
Instance Methods
EsPromiseSink
Description
Instance Stream
Class Methods
Instance Methods
EsAsynchronousStreamPipes
EsAsynchronousStreamPipes
Description
Class Methods
Instance Methods
EsAsynchronousStreamTransformers
EsAsynchronousStreamTransformers
Description
Class Methods
Instance Methods
EsSingleSubscriptionTransformer
Description
Class Methods
Instance Methods
EsAsynchronousStreamVAST
EsAsynchronousStreamVAST
Description
Class Methods
Instance Methods
EsByteStream
Description
Examples
Class Methods
Instance Methods
EsCLDTStreamIterator
Description
Instance state
Class Methods
Instance Methods
EsCollectionIterator
Description
Instance State
Class Methods
Instance Methods
EsSequenceableCollectionIterator
Description
Instance State
Class Methods
Instance Methods
Native Process Framework (OsProcess)
Description
Description
Features
OsNativeProcess
Description
Process Information
Native Process Relationships
Lifecycle Status and Notification
Command and Control
Class Methods
Instance Methods
OsNullReadPipeStream
Description
Class Methods
Instance Methods
OsNullWritePipeStream
Description
Class Methods
Instance Methods
OsPipeline
Description
Process Enumeration
Standard I/O
Lifecycle Status and Notification
Command and Control
Class Methods
Instance Methods
OsPipelineChain
Description
Components
Processes
Standard I/O
Lifecycle Status and Notification
Command and Control
Class Methods
Instance Methods
OsPipelineChainStarter
Description
Sequence Operator =>
AND Sequence Operator &&
OR Sequence Operator ||
Defining Success
Examples
Class Methods
Instance Methods
OsPipelineStarter
Description
Examples
Class Methods
Instance Methods
OsPipeStream
Description
Class Methods
Instance Methods
OsPipeStreamBuffer
Description
Class Methods
Instance Methods
OsProcessEnvironment
Description
Startup Environment
Current Environment
New Environment
Examples
Class Methods
Instance Methods
OsProcesses
Description
API
Examples
Class Methods
Instance Methods
OsProcessesApp
Description
Class Methods
Instance Methods
OsProcessException
Description
Class Methods
Instance Methods
OsProcessFileDescriptor
Description
Accessing
Class Methods
Instance Methods
OsProcessInfo
Description
Accessibility
Information
Class Methods
Instance Methods
OsProcessStarter
Description
Examples
Class Methods
Instance Methods
OsProcessStdioSpec
Description
Class Methods
Instance Methods
OsProcessStream
Description
Class Methods
Instance Methods
OsReadPipeStream
Description
Auto Fill
Blocking API
Non-Blocking API
Class Methods
Instance Methods
OsVastProcess
Description
Class Methods
Instance Methods
OsVastSubprocess
Description
Stdio Streams
Tracing
Class Methods
Instance Methods
OsWritePipeStream
Description
Auto Flush
Blocking API
Class Methods
Instance Methods
Object Linking and Embedding (OLE)
OLE concepts and definitions
OLE classes
OleMainWindow
OlePrimitive
OleClient
OleControl
OleAutomationObject
OleFile
Building an OLE document container
Creating an OLE main window
Creating OLE clients
Creating by name
Creating from a file
Creating from the Insert Object dialog
Creating from the Paste Special dialog
Enabling clipboard operations
Creating an object verb menu
Invoking the Links dialog
Saving and retrieving an OLE client
Saving an OLE client
Retrieving an OLE client
Saving and restoring data attributes
Using OLE automation
Creating OLE Automation Objects
Invoking methods of OLE automation objects
Getting and setting properties
Releasing an OLE automation object
Using OLE custom controls (OCXs)
Creating the OLE main window
Creating OCXs
Implementing an ambient-property handler
Using automation aspects of an OCX
Implementing event handlers
Wrapping OCXs with extended widgets
Using licensed OCXs
Log4s
The Players
Logging Events
Loggers
Appenders
Controllers of What Gets Logged
Level
Filter
Return Value
Predefined Filters
Controlling Acceptance of EsLoggingEvent
The Director: LogManager
Specifying the Log Entry
Conversion Specifiers
Formatting the Output
Date and Time Formatting
Date and Time Formatting Examples
Log4s Error Handling
Initializing the log4s Framework
Ini File Entries
Custom Loggers
createLogger
Debug Messages
debugEnabled
quietMode
What Gets Logged
globalLevel
Filters
classNameFilter
levelMatchFilter
levelRangeFilter
stringMatchFilter
Where Log Entries Go
transcriptAppender
consoleAppender
asyncConsoleAppender
fileAppender
asyncFileAppender
rollingFileAppender
asyncRollingFileAppender
dailyRollingFileAppender
asyncDailyRollingFileAppender
socketAppender
asyncSocketAppender
What appears in a log entry
timeZoneOverride
Programmatic Initialization
Creating Custom Loggers
Customizing Debug Message Settings
Customizing What Gets Logged
globalLevel
Filters
classNameFilter
levelMatchFilter
levelRangeFilter
stringMatchFilter
Redirecting Log Entries
transcriptAppender
consoleAppender
asyncConsoleAppender
fileAppender
asyncFileAppender
rollingFileAppender
asyncRollingFileAppender
dailyRollingFileAppender
asyncDailyRollingFileAppender
socketAppender
asyncSocketAppender
What appears in a log entry
timeZoneOverride
Programmatic Specification of Logging
EsLogManager API
Creating Logging Events
Adding Filters
EsLogger API
EsAppender API
EsAppender API Examples
Sample Application Example
Method 1
Method 2
More Examples
Time Zones
Examples:
Time Zone Database
Zoneinfo on Windows
Zoneinfo on UNIX
The DateAndTime class
Overriding default time zone
Time Zone Database
Zoneinfo on Windows
Zoneinfo on UNIX
Error Handling and Trouble Shooting
Updating Zoneinfo Data
Data Compression and Decompression
Compression Examples
Deflate Streams
Gzip Streams
Brotli Streams
LZ4 Streams
ZStandard Streams
Zip Archive Streams
LDAP
Overview
Setting up the Example
Example overview
Advanced Setup Topics
The LDAP Players
LDAP session
LDAP entry structure
LDAP search
Creation
Search Specification
Search execution
Search interrogation
LdapEntry Operations
Timed Wait
Examples
Delaying
Timed waiting
Conditional waiting
Simple Examples:
File Example:
Appendix A. Widget resources and callbacks
Table 61. CwArrowButton resource and callback methods
Table 62. CwBasicWidget resource and callback methods
Table 63. CwBulletinBoard resource and callback methods
Table 64. CwCascadeButton resource and callback methods
Table 65. CwComboBox resource and callback methods
Table 66. CwComposite resource and callback methods
Table 67. CwCompositeBox resource and callback methods
CwDateTimePicker resource and callback methods
Table 68. CwDialogShell resource and callback methods
Table 69. CwDrawingArea resource and callback methods
Table 70. CwDrawnButton resource and callback methods
Table 71. CwForm resource and callback methods
Table 72. CwFrame resource and callback methods
Table 73. CwLabel resource and callback methods
Table 74. CwList resource and callback methods
Table 75. CwMainWindow resource and callback methods
Table 76. CwMessageBox resource and callback methods
CwMonthCalendar resource and callback methods
Table 77. CwOverrideShell resource and callback methods
Table 78. CwPrimitive resource and callback methods
Table 79. CwPushButton resource and callback methods
Table 80. CwRowColumn resource and callback methods
Table 81. CwScale resource and callback methods
Table 82. CwScrollBar resource and callback methods
Table 83. CwScrolledWindow resource and callback methods
Table 84. CwSelectionBox resource and callback methods
Table 85. CwSeparator resource and callback methods
Table 86. CwShell resource and callback methods
CwTabStrip resource and callback methods
CwTable resource and callback methods
Table 87. CwText resource and callback methods
Table 88. CwToggleButton resource and callback methods
CwToolBar resource and callback methods
Table 89. CwTopLevelShell resource and callback methods
Table 90. CwTransientShell resource and callback methods
CwTreeView resource and callback methods
Table 91. CwWidget resource and callback methods
Table 92. CwWMShell resource and callback methods
Appendix B. Extended widgets resources and callbacks
Appendix C. Drag and drop resources and callbacks
Appendix D. Common graphics platform differences
Appendix E. Common widgets platform differences
Table 121. General constraints
Table 122. Constraints on arrow button widgets
Table 123. Constraints on button and label widgets
Table 124. Constraints on combo-box widgets
Table 125. Constraints on list widgets
Table 126. Constraints on main window widgets
Table 127. Constraints on menus and menu bar
Table 128. Constraints on menu bar
Table 129. Constraints on menu
Table 130. Constraints on scale widget
Table 131. Constraints on scrolled bar widget
Table 132. Constraints on scrolled window widget
Table 133. Constraints on text widget
Table 134. Constraints on top-level shell and dialog shell
References
Common Language Data Types, Common Language Implementation, and Common Process Model
Common File System
Common Graphics
Common Widgets
Common Printing
Dynamic Data Exchange
National Language Support
Index
Programmer Reference
Programmer Reference
Preface
Notices
Trademarks
About this book
What's new?
Who this book is for
Conventions used in this book
Tell us what you think
VAST Base overview
Base subsystems
Common Language Data Types
Common Language Implementation
Common Process Model
Common File System
Common Graphics
Common Widgets
Extended Widgets
Drag and Drop
Common Printing
Design intent
Architecture
Industry-standard support
Platform support
Bitness support
Common Language Data Types
Object behavior
Boolean classes
Collection classes
Collection protocols
Common collection protocols
Unique collection protocol
Magnitude classes
Magnitude comparing
Association
Character
Date
Time
Number
Integer
Fraction
Float
ScaledDecimal
Graphical classes
Point
Rectangle
Stream classes
Accessing
Copying
Enumerating
Positioning
Reading
Testing
Truncating
Writing
Creating instances
Support classes
UndefinedObject
Message and DirectedMessage
Block
Exception handling classes
ExceptionalEvent
Signal
Creating new exceptions
Signaling an exception
Handling of exceptions
ExceptionalEvent collections
Completion blocks
Default exception handler
System exceptions
Examples of exception handling
Common Language Implementation
Object messages
Behavior messages
Class messages
Metaclass messages
Creating new classes
Creating fixed classes
Creating variable classes
Creating variable byte classes
Extended classes
Multiple instance accessing
String converting
Compiling and evaluating code
Compiling
Evaluating
CompiledMethod
Accessing
Testing
EmSystemConfiguration
Common Process Model
Creating a process
Suspending, resuming, and ending a process
Setting and modifying process priorities
Synchronization using semaphore and delay
Block evaluation methods
Process-related block methods
Process methods
ProcessorScheduler methods
Delay class and instance methods
Semaphore class and instance methods
Common File System
Accessing the capabilities of the Common File System
Basic file protocols
Stream protocols
Portability protocols
Error handling protocols
CfsConstants pool dictionary
Basic classes
Specifying file names and paths
Portable file names
File system roots
Path separators
Managing files and directories
Current working directory
Creating and removing directories
Deleting files
Renaming files
Copying files
Setting the timestamps of a file
Startup directory
Obtaining volume information
Volume name and type
File names and directory path case
File name length
Volumes with different file name lengths
Searching directories
Opening a directory for searching
Reading directory entries
Closing the directory descriptor
Using file streams
File stream classes
Opening and closing file streams
Reading and writing file streams
Characters versus bytes
Line delimiters
Using low-level file operations
Opening files
Closing file descriptors
Reading and writing data
Changing the file offset
Other low-level operations
Mixing streams and file descriptors
Using access modes and flags with file streams
Performing low-level file operations on streams
File locking and share modes
File locking
Share modes
Handling errors
Suppressing system error dialogs
Testing existence and obtaining other file properties
Obtaining a CfsStat instance
Mixing platform-specific and Common File System operations
Performing a platform-specific call with a CfsFileDescriptor
Converting a platform file descriptor into a CfsFileDescriptor
Obtaining platform-specific error information
Common Graphics
X Window system graphics library compatibility
Core Common Graphics class hierarchy
Seldom-used and abstract classes
A simplified drawing process overview
Before drawing
During drawing
After drawing
A simple example of the drawing process
CgConstants pool dictionary
Using graphics contexts
Basic graphics context methods
Creating graphics contexts
Copying graphics contexts
Changing graphics contexts
Freeing graphics contexts
Using graphics contexts with other drawables
Drawing operations
Drawing points
Drawing lines
Drawing rectangles
Drawing polygons
Drawing arcs and circles
Drawing pie slices and chords using filled arcs
Using fonts
A simplified view of the font process
Querying the system for fonts
Loading fonts
Assigning fonts for use in drawing operations
String drawing operations with fonts
Releasing CgFonts and CgFontStructs from memory
Obtaining the current font from a graphics context
Using cursors
The process for using cursors
Font cursors
Glyph cursors
Pixmap cursors
Changing the color of a cursor
Platform cursors
Using pixmaps
Creating a pixmap using createPixmap:
Creating a pixmap using createPixmapFromBitmapData:
Copying pixmaps to and from windows
Getting pixmap geometry
Creating a bitmap from bitmap data
Creating stipples using bitmaps
Writing bitmaps to files
Reading bitmaps from files
Displaying bitmaps
Common Graphics image support
Specifying colors
Specifying colors as RGB intensities
Specifying colors by name
Parsing a color-specification string
Using palettes
The default palette
Creating indexed palettes
From pixel values to colors and back
Selecting and drawing with palettes
Direct palettes
Device-independent images
Creating and manipulating images
Displaying images
Direct color images
Copying images from a drawable
Icons
Creating icons
Drawing icons
Loading icons from DLLs
Using operating system icons
Image and icon file formats
Loading images from files
Handling errors
Loading icons from files
Unloading images into files
Unloading icons into files
Unloading images and icons into ByteArrays
Loading images and icons from ByteArrays
Determining the format of a file
Extra file format information
Resource management summary
Common Widgets
OSF/Motif compatibility
Common Widgets class hierarchy
Common Widgets class hierarchy
Overview of Common Widgets user interface concepts
The parent-child widget tree
The widget lifecycle
Mapping and unmapping widgets
Managing and unmanaging widgets
Widget resources and functions
CwConstants pool dictionary
Example code to create a widget tree
Widget event handling and callbacks
Example of using an event handler and a callback
Creating and using widgets
Widget creation convenience methods
Callbacks
Event handlers
Shell widgets
Top-level shell widgets
Scrolled-window widgets
Main-window widgets
Main windows and geometry management
Text widgets
Drawing area widgets
Adding an event handler to a drawing area
Layout widgets
Form widgets
Row-column widgets
Button and label widgets
Static label widgets
Push-button widgets
Toggle-button widgets
Radio-button groups
Check boxes
Icon and pixmap label and button widgets
Application-drawn buttons
Menus
Greying out buttons
Simple menus and menu bars
Creating a menu bar and pull-down menu using simple menu protocol
Creating a secondary menu using simple menu protocol
Creating a pop-up menu using simple menu protocol
Non-simple menus and menu bars
Non-simple menu example
List widgets
Single selection lists
Multiple selection lists
Scrolled lists
Combo-box widgets
Composite-box widgets
MessageBox widgets
SelectionBox widgets
Dialog convenience methods
Creating and using prompters
Message prompter
Text prompter
File selection prompter
Extended widgets
Writing an extended widget
Example: a primitive extended widget
Example: a composite extended widget
Fonts
Using the system browser font
Colors
Clipboard operations
Examples for using the clipboard
Platform-integrated drag and drop
Target types
Transferring data
Drag and drop objects
Procs
Common Widgets drag and drop classes
Drag source widgets and the CwDragContext object
Drop site widgets and CwDropSite objects
Data transfer and the CwDropTransfer object
The user interface process model
The system view
The application programmer's view
Examples of applications with long-running operations
Windows Common Controls
CwDateTimePicker
CwMonthCalendar
CwProgressBar
CwRebar
CwStatusBar
CwTabStrip
CwTrackBar
CwTreeView
CwToolBar
CwTable
Column customization
Row creation
Callbacks
CwWebViewSupport
CwWebViewSupport
CwWebView
CwWebViewEnvironmentOptions
Extended Widgets
Extended Widgets class hierarchy
EwConstants pool dictionary
Creation convenience methods
Extended list widgets
Common resources
Scrolled lists
Drawn list widget
Icon list widgets
Renderables
Direct editing of labels
Flowed icon list widget
Icon area widget
Table list widget
Table list resources
Table columns
Direct editing of cell values
Edit policies
Tree widgets
Icon trees
Table trees
Notebook widgets
Creating pages
Callbacks
PM notebook widget
WIN notebook widget
Progress bar widget
Slider widget
Spin button widget
Split window widget
Tool bar widget
Creating tools
Using tools
Drag and Drop
Drag and drop adapters
Sequence of events
Voting and cursors
Source vote and image changes
Leaving a target
Dropping
Canceling a drag
System configuration
Simple drag and drop
Widget limitations
Common Printing
Common Printing classes
Printing process overview
Selecting a printer
Configuring print job attributes
Creating a print job
Using the printer prompter
Print job attributes
Using a printer shell
Creating a shell
Adding callbacks
Starting a job
Producing a page
Ending a job
CwPrinterShell resources and convenience methods
Printing with Common Graphics
A complete example
Setting up printers and queues on UNIX platforms
Configuring printer setup options
Printer configuration information
Pragmas
Namespace pragmas
Namespaces
Scope rules
Namespace management
Declarations
Declaration methods
Declaration syntax
Working with declaration methods
Why use declaration methods?
Where to declare?
When several applications contribute to a pool
Placement of declarations
Platform-dependent declarations
Adding, deleting, and changing declarations
Finding declaration methods
Correcting declaration errors
Loading previous editions of applications that do not have declaration methods
File-out format
Annotation pragmas
Including an Annotation Pragma in a Method
Processing Annotation Pragmas
Collecting Annotation Pragmas
Performing Operations with Annotation Pragmas
Accessing Annotation Pragma Components
VAST Virtual Machine API
Who should read this chapter
Conventions
VAST C programming model
Defined types
Object types
Macros versus functions
External language interface
Parameter types
Calling a PlatformFunction
Inline external function calls
PlatformFunction protocols
PlatformLibrary protocols
Entry points
Parameter types and return types
Calling an EsEntryPoint
EsEntryPoint protocols
Asynchronous callouts
Calling a Platform Function asynchronously
Locking resources for an asynchronous call
ACO errors and error cases
Walkbacks
ACO errors
Parameter types and return types
Managing resources
Extensions to platform function protocols
ACO resource manager protocols
Resource future protocols
Static future protocols
ACO error protocols
OSObjects
OSObject subclasses
OSObject protocols
OSImmediate protocols
OSBaseType, OSObjectPointer, and OSStructure protocols
OSStructure protocols
OSVariableStructure protocols
OSBaseType protocols
ObjectPointer protocols
Methods available in other classes
User primitives
User primitive tables
Functions available in user primitives
Object allocation
Sending messages
Testing objects
Converting Smalltalk objects to C values
Converting C values to Smalltalk objects
Accessing objects
Protecting objects from garbage collection
Miscellaneous
Classes available in user primitives
Asynchronous messages (interrupts)
Using user primitive functions outside user primitives
Sample user primitives for VAST
Sample callback for Microsoft Windows
Example callback code
Smalltalk code that uses the primitive above
Platform requirements
Microsoft Windows
UNIX platforms
Primitive error codes
Cryptography
Introduction
Getting Started
Architectural Overview
Modules
Core
ASN1
Symmetric Ciphers
Error Handling
I/O Abstraction
Message Authentication Code (MAC)
Message Digests
Multiprecision Integer Arithmetics
Public/Private Key
Random Number Generator
X509
UUID
Socket Communications Interface
Introduction
Application Programming Interface
Supported Socket and Database functions
SCI classes
SciAbstractSocket protocols
Instance methods
SciSocket protocols
Instance methods
Class methods: creation
SciLocalSocket protocols
Instance methods
Class methods: creation
SciSocketManager protocols
Instance methods
Class methods: creation
SciSocketAddress protocols
Instance methods
Class methods: creation
SciLocalSocketAddressProtocols
Instance Methods
Class methods: creation
SciReturn protocols
Instance methods
SciError protocols
Instance methods
SciErrorProxy protocols
Instance methods
SciHostEnt protocols
Instance methods
SciProtoEnt protocols
Instance methods
SciServEnt protocols
Instance methods
Error values
Secure Socket Layer (SSL)
Overview
SSL Example Workspaces Certificate and Private Key
Example Workspaces
SSL Server Workspace
SSL Client Workspace
Application Programming Interface
Supported SciSslSocket functions
SciSslSocket Protocols
SciSslContext Protocols
SciSslSocketConfiguration Protocols
SciSslX509Certificate protocols
SciSslPrivateKey protocols
SciSslError protocols
SciSslBlockingDispatcher protocols
The SciSslOpenSSLInterface Subapplication
Licenses
Dynamic data exchange
Introduction
DDE concepts and definitions
DDE classes
DdeClient class
DdeServer class
DdeServerManager class
DdeCallbackData class
Building a DDE server
Building a DDE server that uses default processing
Building a DDE server that does not use default processing
Discussion of the DdeServerManager
Building a DDE client
An example DDE client
Discussion of the DdeClient
Formats of data transferred between DDE servers and clients
Callbacks for handling DDE events
Return values
DDE protocols
DdeServerManager public class methods
DdeServerManager public instance methods
DdeClass public instance methods
DdeServer public instance methods
DdeClient public instance methods
Protocols common to DdeServer and DdeClient
Converting Smalltalk objects to a ByteArray and back
Examples
Spreadsheet
Spreadsheet window coordinates
Two windows exchanging data
Updating time and date
Updating time in the String format
Platform-specific support
National Language Support
Overview of National Language Support
NLS concepts and definitions
The POSIX locale model
Overview of internationalization
Overview of localized messages
Overview of message catalogs
Locating message catalogs
National Language Support classes
Support for double-byte characters
Obtaining Locale, LCCType, and LCCollate objects
Obtaining LCMessages, LCMonetary, LCNumeric, and LCTime objects
NLS-enabled classes
Locale-specific sorting
Number formatting
Locale change notification and the image startup sequence
Tools for developing international software
Externalization support and tools
Catalog File Editor
NLS Enabler
Using message templates
Referencing and initializing localized messages
Overview of the message localization process
Using message catalogs
Using external message dictionaries
Using indexed external messages
Deleting locales from a message catalog file
Support for extended locales
Compatibilities
Compression
Limitations
Error detection and description
Support for platform resource formats
Localization support API
VAST locale names
Manual localization
LCCollate
LCMessages
LCMonetary
LCNumeric
LCTime
Locale
Locales and platform representation
OS/2 Presentation Manager
Microsoft Windows
AIX, HP-UX, and Solaris
UnicodeSupport
UnicodeSupport
Autoconversion of String into UnicodeString
EsUnicodeEncoding
EsUnicodeSlice
EsUnicodeStorage
Grapheme
GraphemeView
UnicodeLimitedWriteStream
UnicodeReadStream
UnicodeReadWriteStream
UnicodeScalar
UnicodeScalarView
UnicodeString
Unicode Support
UnicodeView
UnicodeViewPosition
UnicodeWriteStream
Utf16
Utf16BE
Utf16BigEndianView
Utf16LE
Utf16LittleEndianView
Utf16View
Utf32
Utf32BE
Utf32BigEndianView
Utf32LE
Utf32LittleEndianView
Utf32View
Utf8
Utf8View
Asynchronous Programming
Features
EsAsyncArgumentError
EsAsyncError
EsAsynchronousSupport
EsAsyncPromise
EsAsyncScheduleTaskError
EsAsyncStackTrace
EsAsyncStateError
EsAsyncTaskProcessQueueScheduler
EsAsyncTaskScheduler
EsAsyncTimeoutException
EsAsyncUncaughtErrorHandler
EsAsyncUncaughtErrorLayout
EsAsyncZone
EsAsyncZoneSpec
EsFuture
EsFutureImpl
EsFutureListener
EsFuturePropagation
EsPromise
EsSyncPromise
EsAsynchronousStreams
EsEventSink
EsStream
EsStreamChannel
EsStreamIterator
EsStreamPromise
EsStreamSink
EsStreamSinkPromise
EsStreamSubscription
EsStreamTransformer
EsStreamView
EsAsynchronousStreamChannels
EsAsynchronousStreamChannels
EsCloseGuaranteeChannel
EsDefaultStreamChannelBehavior
EsGuaranteeChannel
EsMultiStreamChannel
EsStreamChannelController
EsStreamChannelImpl
EsStreamChannelPromise
EsStreamChannelTransformer
EsVirtualStreamChannel
EsAsynchronousStreamControllers
EsAddStreamState
EsAsynchronousStreamControllers
EsAsyncStreamController
EsStreamController
EsStreamControllerAddStreamState
EsStreamControllerImpl
EsSyncStreamController
EsAsynchronousStreamImpl
EsAsynchronousStreamImpl
EsNullStreamSink
EsPromiseSink
EsAsynchronousStreamPipes
EsAsynchronousStreamPipes
EsAsynchronousStreamTransformers
EsAsynchronousStreamTransformers
EsSingleSubscriptionTransformer
EsAsynchronousStreamVAST
EsAsynchronousStreamVAST
EsByteStream
EsCLDTStreamIterator
EsCollectionIterator
EsSequenceableCollectionIterator
Native Process Framework (OsProcess)
OsNativeProcess
OsNullReadPipeStream
OsNullWritePipeStream
OsPipeline
OsPipelineChain
OsPipelineChainStarter
OsPipelineStarter
OsPipeStream
OsPipeStreamBuffer
OsProcessEnvironment
OsProcesses
OsProcessesApp
OsProcessException
OsProcessFileDescriptor
OsProcessInfo
OsProcessStarter
OsProcessStdioSpec
OsProcessStream
OsReadPipeStream
OsVastProcess
OsVastSubprocess
OsWritePipeStream
Object Linking and Embedding (OLE)
OLE concepts and definitions
OLE classes
OleMainWindow
OlePrimitive
OleClient
OleControl
OleAutomationObject
OleFile
Building an OLE document container
Creating an OLE main window
Creating OLE clients
Enabling clipboard operations
Creating an object verb menu
Invoking the Links dialog
Saving and retrieving an OLE client
Using OLE automation
Creating OLE Automation Objects
Invoking methods of OLE automation objects
Getting and setting properties
Releasing an OLE automation object
Using OLE custom controls (OCXs)
Creating the OLE main window
Creating OCXs
Implementing an ambient-property handler
Using automation aspects of an OCX
Implementing event handlers
Wrapping OCXs with extended widgets
Using licensed OCXs
Log4s
The Players
The Director: LogManager
Specifying the Log Entry
Log4s Error Handling
Initializing the log4s Framework
Ini File Entries
Custom Loggers
Debug Messages
What Gets Logged
Where Log Entries Go
What appears in a log entry
Programmatic Initialization
Creating Custom Loggers
Customizing Debug Message Settings
Customizing What Gets Logged
Redirecting Log Entries
What appears in a log entry
Programmatic Specification of Logging
Sample Application Example
Time Zones
Examples:
Time Zone Database
The DateAndTime class
Time Zone Database
Error Handling and Trouble Shooting
Updating Zoneinfo Data
Data Compression and Decompression
Compression Examples
LDAP
Overview
Setting up the Example
The LDAP Players
LDAP session
LDAP entry structure
LDAP search
Creation
Search Specification
Search execution
Search interrogation
LdapEntry Operations
Timed Wait
Examples
Appendix A. Widget resources and callbacks
Appendix B. Extended widgets resources and callbacks
Appendix C. Drag and drop resources and callbacks
Appendix D. Common graphics platform differences
Appendix E. Common widgets platform differences
References
Common Language Data Types, Common Language Implementation, and Common Process Model
Common File System
Common Graphics
Common Widgets
Common Printing
Dynamic Data Exchange
National Language Support
Index