Contents

Chapter 1: 
 
  • 1.1 Caché Objects Architecture
  • 1.2 Class Definitions and the Class Dictionary
  • 1.2.1 Creating Class Definitions
  • 1.2.2 The Class Dictionary
  • 1.3 The Caché Class Library
  • 1.4 Development Tools
  • 1.4.1 Caché Studio
  • 1.4.2 Caché RoseLink
  • 1.4.3 SQL-based Development
  • 1.4.4 XML-based Development
  • 1.5 Client Interoperability
  • 1.5.1 Java
  • 1.5.2 ActiveX and the ActiveX Gateway
  • 1.5.3 Caché Server Pages
  • 1.5.4 C++
  • 1.5.5 XML
  • 1.5.6 The Caché SQL Gateway
  • Chapter 2: 
     
  • 2.1 Classes and Objects
  • 2.2 Abstraction and Modeling
  • 2.3 Inheritance and Polymorphism
  • 2.4 Encapsulation
  • 2.5 Extensibility
  • 2.6 Object Persistence
  • 2.7 Object Binding
  • Chapter 3: 
     
  • 3.1 Referring to an Object — OREF, OID, and ID
  • 3.1.1 OID and ID Values
  • 3.1.2 OREFs and Reference Counting
  • 3.2 Types of Classes
  • 3.2.1 Transient Object Classes
  • 3.2.2 Persistent Object Classes
  • 3.2.3 Serial Object Classes
  • 3.2.4 Data Type Classes
  • 3.3 Inheritance
  • 3.3.1 Multiple Inheritance
  • 3.4 Class Compilation
  • Chapter 4: 
     
  • 4.1 Naming Conventions
  • 4.1.1 General Identifier Rules
  • 4.1.2 Class Names
  • 4.1.3 Class Member Names
  • 4.2 Class Keywords
  • 4.3 Class Parameters
  • Chapter 5: 
     
  • 5.1 Overview of Packages
  • 5.2 Package Names
  • 5.3 Defining Packages
  • 5.4 Using Packages
  • 5.4.1 The IMPORT Directive
  • 5.5 Package Mapping
  • 5.6 Packages and SQL
  • 5.7 Built-in Packages
  • Chapter 6: 
     
  • 6.1 Method Arguments
  • 6.1.1 Specifying Default Values
  • 6.1.2 Calling by Reference
  • 6.1.3 Variable Numbers of Arguments
  • 6.2 Method Return Values
  • 6.3 Method Visibility
  • 6.4 Method Inheritance
  • 6.5 Method Language
  • 6.6 Method Keywords
  • 6.7 Instance and Class Methods
  • 6.8 Kinds of Methods
  • 6.8.1 Code Methods
  • 6.8.2 Expression Methods
  • 6.8.3 Call Methods
  • 6.8.4 Method Generators
  • Chapter 7: 
     
  • 7.1 Property Keywords
  • 7.2 Property Visibility
  • 7.3 Property Behavior
  • 7.4 Property Accessors
  • 7.5 Attribute Properties
  • 7.5.1 Data Type Properties
  • 7.5.2 Object-Valued Properties
  • 7.5.3 Collection Properties
  • 7.5.4 Stream Properties
  • 7.5.5 Multidimensional Properties
  • Chapter 8: 
     
  • 8.1 Query Basics
  • 8.1.1 The Structure of a Class Query
  • 8.1.2 Query Keywords
  • 8.1.3 Creating a Class Query Specification
  • 8.2 User-written Class Queries
  • 8.2.1 The querynameExecute Method
  • 8.2.2 The querynameFetch Method
  • 8.2.3 The querynameClose Method
  • Chapter 9: 
     
  • 9.1 Index Keywords
  • 9.2 Index Collation
  • Chapter 10: 
     
  • 10.1 Executing Methods
  • 10.1.1 About Return Values
  • 10.1.2 Executing Instance Methods
  • 10.1.3 Executing Class Methods
  • 10.1.4 Error Conditions
  • 10.2 Creating New Objects
  • 10.3 Opening Objects
  • 10.4 Modifying Objects
  • 10.4.1 Modifying Reference Properties
  • 10.4.2 Modifying Embedded Object Properties
  • 10.4.3 Modifying List Properties
  • 10.4.4 Modifying Array Properties
  • 10.4.5 Modifying Stream Properties
  • 10.5 Saving Objects
  • 10.6 Deleting Objects
  • 10.6.1 Deleting a Single Object
  • 10.6.2 Deleting All Objects in an Extent
  • 10.7 Executing Queries
  • 10.7.1 Query Metadata Methods
  • 10.7.2 Preparing Queries for Execution
  • 10.7.3 Executing Queries
  • 10.7.4 Processing Query Results
  • 10.7.5 Closing Queries
  • 10.7.6 Example of Using a Class Query
  • Chapter 11: 
     
  • 11.1 Available Types
  • 11.2 Operation
  • 11.2.1 Using Data Types in Classes
  • 11.2.2 Parameters
  • 11.2.3 Keywords
  • 11.2.4 Data Formats and Translation Methods
  • 11.3 Enumerated Properties
  • Chapter 12: 
     
  • 12.1 The %Persistent Class
  • 12.2 The Persistence Interface
  • 12.2.1 Saving Objects
  • 12.2.2 Opening Objects
  • 12.2.3 Deleting Objects
  • 12.2.4 Testing if Objects Exist
  • 12.3 Object Extents
  • 12.3.1 The Extent Query
  • 12.4 Storage Definitions and Storage Classes
  • 12.4.1 The %CacheStorage Storage Class
  • 12.4.2 The %CacheSQLStorage Storage Class
  • 12.5 Schema Evolution
  • 12.5.1 Resetting the Storage Definition
  • Chapter 13: 
     
  • 13.1 The Object-SQL Projection for Classes Themselves
  • 13.1.1 Inheritance and SQL
  • 13.2 The Object-SQL Projection for Class Members
  • 13.2.1 Identity (OIDs Projected to SQL)
  • 13.2.2 Properties
  • 13.2.3 Methods
  • 13.2.4 SQL Triggers
  • 13.2.5 Relationships
  • 13.3 Using Row-level Security
  • 13.3.1 Setting Up Row-level Security
  • 13.3.2 Adding Row-level Security to a Table with Existing Data
  • 13.3.3 Performance Tips and Information
  • 13.3.4 Security Tips and Information
  • Chapter 14: 
     
  • 14.1 Relationship Basics
  • 14.1.1 Relationship Keywords
  • 14.1.2 Defining a Relationship
  • 14.2 Dependent Relationships
  • 14.3 In-Memory Behavior of Relationships
  • 14.4 Persistent Behavior of Relationships
  • 14.4.1 Referential Integrity
  • 14.4.2 Persistent Behavior of Dependent Relationships
  • Chapter 15: 
     
  • 15.1 Declaring Stream Properties
  • 15.1.1 Projecting Streams to ODBC
  • 15.2 Using the Stream Interface
  • 15.2.1 Reading and Writing Stream Data
  • 15.2.2 Copying Data between Streams
  • 15.2.3 Inserting Stream Data
  • 15.2.4 Using Streams in Object Applications
  • 15.3 Using Streams with SQL
  • 15.3.1 Reading a Stream via Embedded SQL
  • 15.3.2 Writing a Stream via Embedded SQL
  • 15.4 Streams and Visual Basic
  • Chapter 16: 
     
  • 16.1 Projection Definitions
  • 16.1.1 Adding a Projection to a Class
  • 16.2 Projection Classes
  • 16.2.1 The Projection Interface
  • 16.2.2 The Standard Projection Classes
  • 16.2.3 Creating a New Projection Class
  • Chapter 17: 
     
  • 17.1 About Updates
  • 17.1.1 The GUID
  • 17.1.2 How Updates Work
  • 17.1.3 The SyncSet and SyncTime Objects
  • 17.2 Running an Update
  • 17.2.1 Preparing for the Update
  • 17.2.2 The Update Itself
  • 17.3 Other Topics
  • 17.3.1 Translating Between GUIDs and OIDs
  • 17.3.2 Manually Updating a SyncTime Table
  • Chapter 18: 
     
  • 18.1 Defining a Method Generator
  • 18.2 How Method Generators Work
  • 18.3 Method Generator Context
  • 18.4 Implementing Method Generators
  • 18.4.1 Method Generators for Other Languages
  • 18.4.2 Specifying CodeMode within a Method Generator
  • Chapter 19: 
     
  • 19.1 Data Population Basics
  • 19.1.1 Changes to the Class Definition
  • 19.1.2 Populating Objects
  • 19.2 The POPSPEC Parameter
  • 19.2.1 Populating Embedded Objects
  • 19.2.2 Populating Atomic Properties
  • 19.2.3 Populating Collections
  • 19.2.4 Custom Populate Actions
  • 19.3 Details
  • Chapter 20: 
     
  • 20.1 %OnAddToSaveSet
  • 20.2 %OnAfterSave
  • 20.3 %OnBeforeSave
  • 20.4 %OnClose
  • 20.5 %OnConstructClone
  • 20.6 %OnDelete
  • 20.7 %OnDetermineClass
  • 20.8 %OnNew
  • 20.9 %OnOpen
  • 20.10 %OnRollBack
  • 20.11 %OnValidateObject
  • 20.12 OnPopulate
  • Chapter 21: 
     
  • 21.1 .. Syntax
  • 21.2 ##Class Syntax
  • 21.2.1 Invoking a Class Method
  • 21.2.2 Casting a Method
  • 21.3 ##this Syntax
  • 21.4 ##super Syntax
  • 21.5 i%<PropertyName> Syntax
  • 21.6 ..#<Parameter> Syntax
  • Chapter 22: 
     
  • 22.1 How Dynamic Dispatch Happens
  • 22.2 Content of Methods Implementing Dynamic Dispatch
  • 22.2.1 Return Values
  • 22.3 The Dynamic Dispatch Methods
  • 22.3.1 %DispatchMethod
  • 22.3.2 %DispatchClassMethod
  • 22.3.3 %DispatchGetProperty
  • 22.3.4 %DispatchSetProperty
  • 22.3.5 %DispatchSetMultidimProperty
  • 22.3.6 %DispatchGetModified
  • 22.3.7 %DispatchSetModified
  • Chapter 23: 
     
  • 23.1 Browsing Class Definitions
  • 23.2 Altering Class Definitions
  • Chapter 24: 
     
  • 24.1 Email
  • 24.1.1 Mail Messages
  • 24.1.2 Sending Email
  • 24.1.3 Receiving Email
  • 24.2 FTP
  • 24.3 HTTP
  • 24.4 URL Parsing
  •  
    Appendix A: 
     
  • A.1 Object Concurrency Options
  • A.2 Version Checking