DEC Trellis Object System Type Library Reference Manual

*HyperReader

  CONTENTS

  Title Page

  Copyright Page

  Preface

  Caution

  Part I   Introduction

  1      Introduction to the Type Library

  1.1     Using Trellis Tools to Learn About the Type Library

  1.2     Overview of Type Library Categories

  1.3     Example of an Interface

  Part II   Library Types

  2      Mathematical Types

  2.1     Boolean
    2.1.1      String Form for Booleans

  2.2     Integer
    2.2.1      Performing Algebraic Operations on Integers
    2.2.2      Comparing Integers
    2.2.3      Determining Relationships Among Integers
    2.2.4      Iteration with Integers
    2.2.5      String Form for Integers

  2.3     Real Numbers
    2.3.1      Performing Algebraic Operations on Real Numbers
    2.3.2      Converting Real Numbers to Integers
    2.3.3      Comparing Real Numbers
    2.3.4      Determining Relationships Among Real Numbers
    2.3.5      String Form for Real Numbers

  2.4     Random Integer
    2.4.1      Creating Random Integers
    2.4.2      Accessing Random Integer Data

  2.5     Null
    2.5.1      String Form for Null

  3      String and Character Types

  3.1     String
    3.1.1      Accessing String Data
    3.1.2      Iteration with Strings
    3.1.3      Searching Strings
    3.1.4      Creating and Manipulating Strings
    3.1.5      Comparing Strings
    3.1.6      Determining Relationships Among Strings
    3.1.7      String Form for Strings

  3.2     Character
    3.2.1      Converting Characters to and from ASCII
    3.2.2      Identifying an Argument as Part of a Character Group
    3.2.3      Named Characters
    3.2.4      Iteration with Characters

  4      Temporal Types

  4.1     Time
    4.1.1      Accessing Time Data
    4.1.2      Performing Algebraic Operations on Time
    4.1.3      Comparing Times
    4.1.4      Determining Relationships Among Times
    4.1.5      String Form for Times

  4.2     Duration
    4.2.1      Accessing Duration Data
    4.2.2      Performing Algebraic Operations on Durations
    4.2.3      Comparing Durations
    4.2.4      Determining Relationships Among Durations
    4.2.5      Creating Durations
    4.2.6      String Form for Durations

  5      Auxiliary Types

  5.1     Printable
    5.1.1      Printing Operations
    5.1.2      Making a Type Printable

  5.2     Readable
    5.2.1      Reading Operations
    5.2.2      Making a Type Readable

  5.3     Hashed
    5.3.1      Hash Values
    5.3.2      Generating Hash Values for Constant Types
    5.3.3      Generating Hash Values for Mutable Types

  5.4     Enumeration
    5.4.1      Implementing Instances of Enumeration
    5.4.2      String Form for Enumeration

  6      Collection Types

  6.1     Constant, Mutable, and Abstract Collection Type Families

  6.2     The Not_flat Attribute

  6.3     Collection
    6.3.1      Determining the Contents of a Collection
    6.3.2      Converting Collections
    6.3.3      String Form for Collections

  7      Sequence Types

  7.1     Sequence
    7.1.1      Accessing the Contents of Sequences
    7.1.2      Accessing Subsequences Within a Sequence
    7.1.3      Modifying Sequences
    7.1.4      Searching Sequences
    7.1.5      Creating Instances of Sequences

  7.2     Fix_seq
    7.2.1      Fix_seq Operations and Components
    7.2.2      Creating Instances of Fix_seq

  7.3     Dyn_seq
    7.3.1      Accessing the Contents of Dyn_seq
    7.3.2      Converting and Modifying Dyn_seq
    7.3.3      Expanding and Contracting the Boundaries of Dyn_seq
    7.3.4      Expanding and Contracting from the Middle
    7.3.5      Creating Instances of Dyn_Seq

  8      Set Types

  8.1     Abstract_set
    8.1.1      Performing Algebraic Operations on Abstract_set
    8.1.2      Comparing Abstract_sets

  8.2     Sets
    8.2.1      Comparing Sets
    8.2.2      Modifying Sets
    8.2.3      Creating Sets

  9      Table Types

  9.1     Keyed_Collection

  9.2     Table
    9.2.1      Creating Tables
    9.2.2      Accessing the Contents of a Table
    9.2.3      Manipulating Elements in a Table
    9.2.4      Searching Tables

  10     Input/Output Types

  10.1    Stream

  10.2    In_stream
    10.2.1     Accessing Characters from an In_stream
    10.2.2     Accessing Strings from an In_stream
    10.2.3     Closing In_streams
    10.2.4     Getting Information About an In_stream
    10.2.5     Changing the Default In_stream

  10.3    In_file
    10.3.1     In_disk_file
    10.3.2     Creating In_files
    10.3.3     Manipulating Filenames

  10.4    In_buffer

  10.5    Out_stream
    10.5.1     Transferring Characters from an Out_stream
    10.5.2     Changing the Default Out_stream

  10.6    Out_file
    10.6.1     Out_disk_file

  10.7    Out_buffer
    10.7.1     Creating Out_Buffers
    10.7.2     Manipulating an Out_buffer

  11     System Types

  11.1    Object
    11.1.1     Learning about Objects
    11.1.2     Determining the Equivalence of Objects
    11.1.3     Copying Objects

  11.2    Type
    11.2.1     Specifying Objects to be of Type Type
    11.2.2     Building Union Types
    11.2.3     Comparing Types
    11.2.4     Declared_type
    11.2.5     String Form for Types

  11.3    File_system
    11.3.1     Requesting Information about a File
    11.3.2     Manipulating Files
    11.3.3     Manipulating File Names

  11.4    Command_line
    11.4.1     Accessing Command_line Data

  Part III   Facility Types

  12     Callout Facility

  12.1    Using the Callout Facility

  12.2    Preparing Called Routines on VMS

  12.3    Preparing Called Routines on ULTRIX

  12.4    Passing Arguments

  12.5    Defining Encode and Decode Operations

  12.6    Interfacing to Called Routines

  12.7    Example of a VMS User-Defined Type

  13     Callin Facility

  13.1    Calling Trellis Operations

  13.2    Creating and Manipulating Trellis Objects

  13.3    Maintaining Correct References to Trellis Objects
    13.3.1     Using Trellis Handles
    13.3.2     Disabling Garbage Collections

  13.4    Handling Exceptions

  13.5    Starting Trellis

  14     SQL Facility

  14.1    Using The SQL Facility
    14.1.1     Creating an SQL Object
    14.1.2     Defining SQL$DATABASE
    14.1.3     Retrieving Employees from Employee Table
    14.1.4     Passing Values to SQL Statements
    14.1.5     Using Insert, Delete and Update Operations

  14.2    Converting Data Types

  15     Multiple Activities

  15.1    Activity Type

  15.2    Starting Activities

  15.3    Terminating Activities

  15.4    Checking the Status of Activities

  15.5    Waiting for Activity Termination

  15.6    Monitoring the Completion of Activities in a Set

  15.7    Setting Priorities for Activities

  15.8    Storing Activity-Specific Information

  16     Concurrency Control

  16.1    Atomic Objects

  16.2    Strategies for Making Objects Atomic

  16.3    Mutual Exclusion Locks

  16.4    User-Defined Locks

  16.5    Wait Queues

  16.6    Additional Concurrency Control Mechanisms

  A   Callout-Related Types and Operations

  A.1     Callout_facility

  A.2     Callout_buffer

  A.3     Encode and Decode Operations for Primitive Types
    A.3.1      Boolean Callout Operations
    A.3.2      Bytevector Callout Operations
    A.3.3      Integer Callout Operations
    A.3.4      Real Callout Operations
    A.3.5      String Callout Operations

  B   The SQL-Related Types and Operations

  B.1     SQL

  B.2     RDB_SQL

  B.3     Dynamic_SQL

  C   Activity-Related Type Interfaces

  C.1     Activity

  C.2     Activity_status

  C.3     Activity_set

  C.4     Lock

  C.5     Abstract_wait_queue

  D   Installing the Callout Facility

  D.1     Installing Callout on VMS

  D.2     Installing Callout on ULTRIX

  E   Installing the SQL Facility

  EXAMPLES

  1-1        Example Interface for Hash Type Module

  16-1       Read_Write Lock Example PART I

  16-2       Read_Write Lock Example PART II

  16-3       Read_Write Lock Example PART III

  FIGURES

  1-1        Hierarchy Diagram for String

  3-1        Hierarchy Diagram for String

  5-1        Hierarchy Diagram for Hashed

  6-1        Hierarchy Diagram for Collection

  10-1       Hierarchy Diagram for I/O Types

  11-1       Example of State Equivalence Relationships

  TABLES

  2-1        Boolean Operations

  2-2        Integer Parity Operations

  2-3        Integer Algebraic Operations

  2-4        Integer Comparison Operations

  2-5        Integer Relationship Operations

  2-6        Integer Iteration Operations

  2-7        Real Algebraic Operations

  2-8        Real Unary Conversion Operation

  2-9        Random Integer Type Creation Operations

  2-10       Random Integer Get-Only Components

  3-1        String Components

  3-2        String Access Operations

  3-3        String Iteration Operations

  3-4        String Search Operations

  3-5        String Creation and Manipulation Operations

  3-6        Operations for Converting and Modifying Strings

  3-7        Character Conversion Functions

  3-8        Public Character Groups

  3-9        Return Value Operations

  3-10       Public Character Names

  3-11       Character Iteration Operations

  4-1        Fixed Names

  4-2        Time Components

  4-3        Time Get-Only Components

  4-4        Time Algebraic Operations

  4-5        Time Comparison Operations

  4-6        Time Relationship Operations

  4-7        Duration Components

  4-8        Duration Algebraic Operations

  4-9        Duration Type Creation Operations

  5-1        Printable Subtypes

  5-2        Printing Operations

  5-3        Reading Operations

  6-1        Collection Contents Operations and Components

  6-2        Collection Conversion Operations

  7-1        Sequence Components

  7-2        Subsequence Access Operations

  7-3        Operations for Converting and Modifying Sequences

  7-4        Sequence Creation Operations

  7-5        Differences in Component Implementation for Fix_seq

  7-6        Dyn_seq Get and Put Components

  7-7        Dyn_seq Boundary Expansion Operations

  7-8        Dyn_seq Middle Expansion Operations

  7-9        Dyn_seq Middle Contraction Operations

  8-1        Abstract_set Algebraic Operations

  8-2        Set Comparison Operations

  8-3        Set Modification Operations

  9-1        Table Creation Operations

  9-2        Non-Hash Table Create Operations

  9-3        Table Access Iterators

  9-4        Table Insertion Operations

  9-5        Table Remove Element Operations

  9-6        Table Reset and Convert Operations

  10-1       Stream Components and Operations

  10-2       In_stream Character Access Operations

  10-3       In_stream String Access Operations

  10-4       In_stream Information Operations

  10-5       In_file File Name Manipulation Operations

  10-6       Out_stream Output Operations

  10-7       Out_buffer Type Creation Operations

  10-8       Out_Buffer Manipulation Operations

  11-1       Object Information Operations

  11-2       Object Equivalence Operations

  11-3       Object Copy Operations

  11-4       Type Comparison Operations

  11-5       File_system Information Operations

  11-6       File_system File Manipulating Operations

  11-7       File_system File Name Manipulating Operations

  11-8       Command_line Components

  12-1       Other Callout Operations and Their Return Types

  12-2       Builtin Types and Their Operations

  13-1       Return Status Codes for Callin Operations

  13-2       Handle Manipulation Operations

  13-3       Operations for Disabling Garbage Collections

  13-4       Trellis_System_Start Operation Status Codes

  15-1       Activity Monitoring Operations and Components