Programmer Reference
Preface
Notices
Trademarks
About this book
What's new?
VAST Platform 2021 (version 10.0.0)
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
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
UNIX inter-process communication
UNIX environment
Method specification
UNIXEnvironment class methods
UNIXEnvironment methods
Usage example
UNIX process
Method specification
UNIXProcess class methods
UNIXProcess methods
Usage example
UNIX pipe stream
UNIX read pipe stream method specification
UNIXReadPipeStream class methods
UNIXReadPipeStream methods
UNIX write pipe stream method specification
UNIXWritePipeStream class methods
UNIXWritePipeStream methods
Asynchronous Programming
EsAsyncError
Class Methods
Instance Methods
EsAsynchronousSupport
Class Methods
Instance Methods
EsAsyncPromise
Class Methods
Instance Methods
EsAsyncScheduleTaskError
Class Methods
Instance Methods
EsAsyncStackTrace
Class Methods
Instance Methods
EsAsyncStateError
Class Methods
Instance Methods
EsAsyncTaskProcessQueueScheduler
Class Methods
Instance Methods
EsAsyncTaskScheduler
Class Methods
Instance Methods
EsAsyncTimeoutException
Class Methods
Instance Methods
EsAsyncUncaughtErrorHandler
Class Methods
Instance Methods
EsAsyncUncaughtErrorLayout
Class Methods
Instance Methods
EsFuture
Class Methods
Instance Methods
EsFutureImpl
Class Methods
Instance Methods
EsFutureListener
Class Methods
Instance Methods
EsFuturePropagation
Class Methods
Instance Methods
EsPromise
Class Methods
Instance Methods
EsSyncPromise
Class Methods
Instance Methods
Native Process Framework (OsProcess)
OsNativeProcess
Class Methods
Instance Methods
OsNullReadPipeStream
Class Methods
Instance Methods
OsNullWritePipeStream
Class Methods
Instance Methods
OsPipeline
Class Methods
Instance Methods
OsPipelineChain
Class Methods
Instance Methods
OsPipelineChainStarter
Class Methods
Instance Methods
OsPipelineStarter
Class Methods
Instance Methods
OsPipeStream
Class Methods
Instance Methods
OsPipeStreamBuffer
Class Methods
Instance Methods
OsProcessEnvironment
Class Methods
Instance Methods
OsProcesses
Class Methods
Instance Methods
OsProcessesApp
Class Methods
Instance Methods
OsProcessException
Class Methods
Instance Methods
OsProcessFileDescriptor
Class Methods
Instance Methods
OsProcessInfo
Class Methods
Instance Methods
OsProcessStarter
Class Methods
Instance Methods
OsProcessStdioSpec
Class Methods
Instance Methods
OsProcessStream
Class Methods
Instance Methods
OsReadPipeStream
Class Methods
Instance Methods
OsVastProcess
Class Methods
Instance Methods
OsVastSubprocess
Class Methods
Instance Methods
OsWritePipeStream
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
Advanced 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
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
Index