com.gemstone.gbjgci

## Class GbjGciObject

- java.lang.Object
- - java.util.Observable
  - - com.gemstone.gbjgci.GbjGciReport
    - - com.gemstone.gbjgci.GbjGciObject

- All Implemented Interfaces:
    java.lang.Cloneable
  Direct Known Subclasses:
    GbjObject

      public class GbjGciObject
      extends GbjGciReport
      implements java.lang.Cloneable

  GbjGciObject is the primary class for representing GS Objects in the GbjGci package. It extends GbjGciReport, which provides the basic mechanism for communicating with the GemStone GCI layer, and provides additional functionality, including object canonicalization, automatic export set management, and object change synchronization.

  Object canonicalization: a weak hash dictionary is used to insure that there is only one copy of a given GS object with a particular oop.

  Export set management: using object canonicalization and the java finalize mechanism, we can automatically track GS objects when brought over to java (putting them into the export set), and recognize when java GC's them (removing them from the export set).

  Object change synchronization: using the Java Observable/Observer and the GCI dirty object tracking mechanisms, we can now track when a GS object changes and have java update the associated java GS object.

  Much of the core functionality of the GBJ class GbjObject has been moved to this class, providing sufficient functionality for a "GBJ lite".

  To support object canonicalization, constructors for GbjGciObject are different from the original GbjObject class.

  ### Object Change Synchronization

  GbjGciObject now provides 2 different mechanisms that allow a customer application to have the java-side GbjGciObject (or superclass) instances automatically updated when changes occur to the associated GS-server object, either due to GS Smalltalk code execution or committed transactions from other sessions.

  There is some overhead associated with these mechanisms, so by default they are turned off. To activate them for a given session, set the GbjSession field monitorChangedObjects to true.

  The first approach uses the method updateClient(). Customer applications should define their own versions of this method in superclasses of GbjGciObject to update local fields. Methods getBytes(), getNamedObjs(), getObjs(), and related methods will be useful here. Remember to also map your superclasses in the session using GbjGciSession.mapGsToJavaClass().

  The second approach uses the Java Observable/Observer API to notify customer application when the associated GS server object has changed. Define an application class that implements the java Observer Interface. This class should define the method update(Observable o, Object arg), to handle the changed object (returned as the Observable o) as appropriate for your application. The second argument arg is returned as nil.

  Next, for a GbjGciObject that you wish to monitor, call the method addObserver(observer), where observer is an instance of your application Observer class defined above.

  When a change to the object occurs, the application Observer method update(GbjObject obj, nil) will be called, indicating that the object has changed.

  Note that both updateClient() and Observer objects can be used together.

  Version:
    3.0

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `GbjGciObject(java.lang.Boolean b, GbjGciSession s)` Construct new GbjGciObject for a session based on a boolean.
    `GbjGciObject(byte b, GbjGciSession s)` Construct new GbjGciObject for a session based on a byte.
    `GbjGciObject(char c, GbjGciSession s)` Construct new GbjGciObject for a session based on a char.
    `GbjGciObject(java.util.Date d, GbjGciSession s)` Construct new GbjGciObject for a session based on a Date.
    `GbjGciObject(double d, GbjGciSession s)` Construct new GbjGciObject for a session based on a double This generates a GS Float object.
    `GbjGciObject(float f, GbjGciSession s)` Construct new GbjGciObject for a session based on a float This generates a GS SmallDouble object.
    `GbjGciObject(java.time.Instant i, GbjGciSession s)` Construct new GbjGciObject for a session based on a Instant.
    `GbjGciObject(int i, GbjGciSession s)` Construct new GbjGciObject for a session based on a int This generates a GS SmallInteger object.
    `GbjGciObject(java.time.LocalDate d, GbjGciSession s)` Construct new GbjGciObject for a session based on a LocalDate.
    `GbjGciObject(java.time.LocalDateTime ldt, GbjGciSession s)` Construct new GbjGciObject for a session based on a LocalDateTime.
    `GbjGciObject(java.time.LocalTime t, GbjGciSession s)` Construct new GbjGciObject for a session based on a LocalTime.
    `GbjGciObject(long i, GbjGciSession s)` Construct new GbjGciObject for a session based on a long This generates a GS SmallInteger object.
    `GbjGciObject(java.lang.Object o, GbjGciSession s)` Construct new GbjGciObject for a session based on an object.
    `GbjGciObject(java.time.OffsetDateTime odt, GbjGciSession s)` Construct new GbjGciObject for a session based on a OffsetDateTime.
    `GbjGciObject(short i, GbjGciSession s)` Construct new GbjGciObject for a session based on a short This generates a GS SmallInteger object.
    `GbjGciObject(java.lang.String str, GbjGciSession s)` Construct new GbjGciObject for a session based on a string This will generate either a GS String or DoubleByteString as appropriate.
    `GbjGciObject(java.time.ZonedDateTime zdt, GbjGciSession s)` Construct new GbjGciObject for a session based on a ZonedDateTime.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `BigDecimalFloat` | `bigDecimalFloatValue()` If this GS object is representable as a BigDecimalFloat, return that value.
    `java.math.BigDecimal` | `bigDecimalValue()` If this GS object is representable as a BigDecimal, return that value.
    `org.apache.commons.math3.fraction.BigFraction` | `bigFractionValue()` If this GS object is representable as a BigFraction, return that value.
    `java.math.BigInteger` | `bigIntegerValue()` If this GS object is representable as a BigInteger, return that value.
    `boolean` | `booleanValue()` If this GS object is representable as a boolean, return that value.
    `byte[]` | `bytesValue()` If this GS object is reprentable in bytes (other than Strings), return a byte array represention that value.
    `byte` | `byteValue()` If this GS object is representable as a byte, return that value.
    `char` | `charValue()` If this GS object is representable as a character, return that value.
    `java.util.Date` | `dateValue()` If this GS object is representable as a Date, return that value.
    `void` | `debugPrint(java.io.PrintStream out)` Write to printstream a detailed multi-line string describing internal structure of this GbjGciObject.
    `double` | `doubleValue()` If this GS object is representable as a double, return that value.
    `boolean` | `equals(java.lang.Object o)` Equals comparison against another java object
    `float` | `floatValue()` If this GS object is representable as a float, return that value.
    `byte` | `getByte(int index)` Retrieve the designated byte from this byte-based GS object.
    `byte[]` | `getBytes(int startIndex, int numBytes)` Retrieve the designated bytes from this byte-based GS object.
    `long` | `getIndexedSize()` Return the size of the indexed component of this oop-based GS object
    `GbjGciObject` | `getNamedObj(int index)` Retrieve the designated GS object from the named instvar for this GS object.
    `void` | `getNamedObjs(int startIndex, int numObjs, GbjGciObject[] objs)` Retrieve the designated GS objects from the named instvars for this GS object.
    `int` | `getNamedSize()` Return the size of named instance variables of this oop-based GS object
    `GbjGciObject` | `getObj(int index)` Retrieve the designated GS object from this indexable GS object
    `GbjGciObject[]` | `getObjs(int startIndex, int numObjs)` Retrieve the designated GS objects from this indexable GS object.
    `void` | `getObjs(int startIndex, int numObjs, GbjGciObject[] objs)` Retrieve the designated GS objects from this indexable GS object.
    `int` | `getObjType()` Returns an integer value representing the type of GS server object.
    `GbjGciSession` | `getSession()` Return the GbjGciSession object associated with this GS object
    `long` | `getTotalSize()` Return the total size (including both instance variables and indexed components) of this oop-based GS object
    `int` | `getValType()` Returns an integer value representing the type of java object cached on the client.
    `int` | `hashCode()` Return a hash code value for this object
    `java.time.Instant` | `instantValue()` If this GS object is representable as an Instant, return that value.
    `int` | `intValue()` If this GS object is representable as an int, return that value.
    `boolean` | `isString()` Return true if this GS object is a "string".
    `java.time.LocalDateTime` | `localDateTimeValue()` If this GS object is representable as a LocalDateTime, return that value.
    `java.time.LocalDate` | `localDateValue()` If this GS object is representable as an LocalDate, return that value.
    `java.time.LocalTime` | `localTimeValue()` If this GS object is representable as a LocalTime, return that value.
    `long` | `longValue()` If this GS object is representable as a long, return that value.
    `static GbjGciObject` | `named(java.lang.String name, GbjGciSession s)` Return the GS object with this name in the DB.
    `java.time.OffsetDateTime` | `offsetDateTimeValue()` If this GS object is representable as a OffsetDateTime, return that value.
    `void` | `putByte(int index, byte b)` Write the designated byte to this byte-based GS object.
    `void` | `putBytes(int startIndex, byte[] bytes)` Write the designated bytes to this byte-based GS object.
    `void` | `putBytes(int startIndex, int numBytes, byte[] bytes)` Write the designated bytes to this byte-based GS object.
    `void` | `putNamedObj(int index, GbjGciObject obj)` Write the designated GS object to the named instvars for this GS object.
    `void` | `putNamedObjs(int startIndex, GbjGciObject[] objs)` Write the designated GS objects to the named instvars for this GS object.
    `void` | `putNamedObjs(int startIndex, int numObjs, GbjGciObject[] objs)` Write the designated GS objects to the named instvars for this GS object.
    `void` | `putObj(int index, GbjGciObject obj)` Write the designated GS object to this indexable GS object.
    `void` | `putObjs(int startIndex, GbjGciObject[] objs)` Write the designated GS objects to this indexable GS object.
    `void` | `putObjs(int startIndex, int numObjs, GbjGciObject[] objs)` Write the designated GS objects to this indexable GS object.
    `short` | `shortValue()` If this GS object is representable as a short, return that value.
    `java.lang.String` | `stringValue_()` If this GS object is representable as a String, return that value.
    `java.lang.String` | `stringValue()` If this GS object is representable as a String, return that value.
    `java.lang.String` | `toString()` Return a short string representation of this GbjGciReport
    `static GbjGciObject` | `withOop(long oopValue, GbjGciSession s)` Return the GS object represented by this oop
    `java.time.ZonedDateTime` | `zonedDateTimeValue()` If this GS object is representable as a ZonedDateTime, return that value.

    - ### Methods inherited from class com.gemstone.gbjgci.GbjGciReport

      `clone, getOop, getValTypeString, isNil, isSpecial, javaClass, javaValue`

    - ### Methods inherited from class java.util.Observable

      `addObserver, countObservers, deleteObserver, deleteObservers, hasChanged, notifyObservers, notifyObservers`

    - ### Methods inherited from class java.lang.Object

      `getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### GbjGciObject

          public GbjGciObject(java.lang.Boolean b,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on a boolean. This generates a GS Boolean object.
      Parameters:
        `b` - Boolean
        `s` - GbjGciSession

    - #### GbjGciObject

          public GbjGciObject(char c,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on a char. This generates a GS Character object.
      Parameters:
        `c` - char
        `s` - GbjGciSession

    - #### GbjGciObject

          public GbjGciObject(byte b,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on a byte. This generates a GS SmallInteger object.
      Parameters:
        `b` - byte
        `s` - GbjGciSession

    - #### GbjGciObject

          public GbjGciObject(short i,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on a short This generates a GS SmallInteger object.
      Parameters:
        `i` - short
        `s` - GbjGciSession

    - #### GbjGciObject

          public GbjGciObject(int i,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on a int This generates a GS SmallInteger object.
      Parameters:
        `i` - int
        `s` - GbjGciSession

    - #### GbjGciObject

          public GbjGciObject(long i,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on a long This generates a GS SmallInteger object.
      Parameters:
        `i` - long
        `s` - GbjGciSession

    - #### GbjGciObject

          public GbjGciObject(float f,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on a float This generates a GS SmallDouble object.
      Parameters:
        `f` - float
        `s` - GbjGciSession

    - #### GbjGciObject

          public GbjGciObject(double d,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on a double This generates a GS Float object.
      Parameters:
        `d` - double
        `s` - GbjGciSession

    - #### GbjGciObject

          public GbjGciObject(java.lang.String str,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on a string This will generate either a GS String or DoubleByteString as appropriate.
      Parameters:
        `str` - String
        `s` - GbjGciSession

    - #### GbjGciObject

          public GbjGciObject(java.time.LocalDate d,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on a LocalDate. This generates a GS Date object.
      Parameters:
        `d` - LocalDate
        `s` - GbjGciSession

    - #### GbjGciObject

          public GbjGciObject(java.time.LocalTime t,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on a LocalTime. This generates a GS Time object.
      Parameters:
        `t` - LocalTime
        `s` - GbjGciSession

    - #### GbjGciObject

          public GbjGciObject(java.time.LocalDateTime ldt,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on a LocalDateTime. This generates a GS LocalDateTime object.
      Parameters:
        `ldt` - LocalDateTime
        `s` - GbjGciSession

    - #### GbjGciObject

          public GbjGciObject(java.time.ZonedDateTime zdt,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on a ZonedDateTime. This generates a GS DateTime object.
      Parameters:
        `zdt` - ZonedDateTime
        `s` - GbjGciSession

    - #### GbjGciObject

          public GbjGciObject(java.time.OffsetDateTime odt,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on a OffsetDateTime. This generates a GS DateAndTime object.
      Parameters:
        `odt` - LocalDateTime
        `s` - GbjGciSession

    - #### GbjGciObject

          public GbjGciObject(java.util.Date d,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on a Date. This generates a GS DateAndTime object.
      Parameters:
        `d` - Date
        `s` - GbjGciSession

    - #### GbjGciObject

          public GbjGciObject(java.time.Instant i,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on a Instant. This generates a GS DateAndTime object.
      Parameters:
        `i` - Instant
        `s` - GbjGciSession

    - #### GbjGciObject

          public GbjGciObject(java.lang.Object o,
                              GbjGciSession s)

      Construct new GbjGciObject for a session based on an object. The object must be an instance of a class recognized by other Constructor, otherwise a ClassCastException is generated.
      Parameters:
        `o` - Object
        `s` - GbjGciSession

  - ### Method Detail

    - #### getValType

          public int getValType()

      Returns an integer value representing the type of java object cached on the client. See GbjGciReport for details.
      Overrides:
        `getValType` in class `GbjGciReport`
      Returns:
        int result

    - #### getObjType

          public int getObjType()

      Returns an integer value representing the type of GS server object. See GbjGciReport for details.
      Overrides:
        `getObjType` in class `GbjGciReport`
      Returns:
        int result

    - #### getSession

          public GbjGciSession getSession()

      Return the GbjGciSession object associated with this GS object
      Returns:
        GbjGciSession result

    - #### getNamedSize

          public int getNamedSize()

      Return the size of named instance variables of this oop-based GS object
      Returns:
        int result

    - #### getIndexedSize

          public long getIndexedSize()

      Return the size of the indexed component of this oop-based GS object
      Returns:
        long result

    - #### getTotalSize

          public long getTotalSize()

      Return the total size (including both instance variables and indexed components) of this oop-based GS object
      Returns:
        long result

    - #### withOop

          public static GbjGciObject withOop(long oopValue,
                                             GbjGciSession s)

      Return the GS object represented by this oop
      Parameters:
        `oopValue` - oop
        `s` - GbjGciSession
      Returns:
        GbjGciObject result

    - #### hashCode

          public int hashCode()

      Return a hash code value for this object
      Overrides:
        `hashCode` in class `GbjGciReport`
      Returns:
        int result

    - #### equals

          public boolean equals(java.lang.Object o)

      Equals comparison against another java object
      Overrides:
        `equals` in class `GbjGciReport`
      Returns:
        boolean result

    - #### named

          public static GbjGciObject named(java.lang.String name,
                                           GbjGciSession s)

      Return the GS object with this name in the DB. On the server, looks through the symbol list for this session looking for entry with this name, scanning symbol dictionaries in the order listed in the symbol list.
      Parameters:
        `name` - Name to use
        `s` - GbjGciSession
      Returns:
        GbjGciObject result

    - #### toString

          public java.lang.String toString()

      Return a short string representation of this GbjGciReport
      Overrides:
        `toString` in class `GbjGciReport`
      Returns:
        String result

    - #### debugPrint

          public void debugPrint(java.io.PrintStream out)

      Write to printstream a detailed multi-line string describing internal structure of this GbjGciObject. Intended for diagnostic purposes.
      Overrides:
        `debugPrint` in class `GbjGciReport`
      Parameters:
        `out` - PrintStream to write to

    - #### isString

          public boolean isString()

      Return true if this GS object is a "string". Strings include any instance of a subclass of GS class CharacterCollection.
      Returns:
        boolean result

    - #### booleanValue

          public boolean booleanValue()

      If this GS object is representable as a boolean, return that value.
      Returns:
        boolean result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a boolean

    - #### charValue

          public char charValue()

      If this GS object is representable as a character, return that value.
      Returns:
        char result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a character

    - #### byteValue

          public byte byteValue()

      If this GS object is representable as a byte, return that value.
      Returns:
        byte result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a byte

    - #### shortValue

          public short shortValue()

      If this GS object is representable as a short, return that value.
      Returns:
        short result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a short

    - #### intValue

          public int intValue()

      If this GS object is representable as an int, return that value.
      Returns:
        int result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a int

    - #### longValue

          public long longValue()

      If this GS object is representable as a long, return that value. If the value is too large, raises an ArithmeticException. (use bigIntegerValue( ) in that case).
      Returns:
        long result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a long

    - #### bigIntegerValue

          public java.math.BigInteger bigIntegerValue()

      If this GS object is representable as a BigInteger, return that value.
      Returns:
        BigInteger result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a BigInteger

    - #### floatValue

          public float floatValue()

      If this GS object is representable as a float, return that value.
      Returns:
        float result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a float

    - #### doubleValue

          public double doubleValue()

      If this GS object is representable as a double, return that value.
      Returns:
        double result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a double

    - #### bigDecimalValue

          public java.math.BigDecimal bigDecimalValue()

      If this GS object is representable as a BigDecimal, return that value.
      Returns:
        BigDecimal result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a BigDecimal

    - #### bigDecimalFloatValue

          public BigDecimalFloat bigDecimalFloatValue()

      If this GS object is representable as a BigDecimalFloat, return that value.
      Returns:
        BigDecimalFloat result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a BigDecimalFlat

    - #### bigFractionValue

          public org.apache.commons.math3.fraction.BigFraction bigFractionValue()

      If this GS object is representable as a BigFraction, return that value.
      Returns:
        BigFraction result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a BigFraction

    - #### localDateValue

          public java.time.LocalDate localDateValue()

      If this GS object is representable as an LocalDate, return that value.
      Returns:
        LocalDate result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a (Local)Date

    - #### localTimeValue

          public java.time.LocalTime localTimeValue()

      If this GS object is representable as a LocalTime, return that value.
      Returns:
        LocalTime result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a LocalTime

    - #### localDateTimeValue

          public java.time.LocalDateTime localDateTimeValue()

      If this GS object is representable as a LocalDateTime, return that value.
      Returns:
        LocalDateTime result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a LocalDateTime

    - #### zonedDateTimeValue

          public java.time.ZonedDateTime zonedDateTimeValue()

      If this GS object is representable as a ZonedDateTime, return that value.
      Returns:
        ZonedDateTime result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a ZonedDateTime

    - #### offsetDateTimeValue

          public java.time.OffsetDateTime offsetDateTimeValue()

      If this GS object is representable as a OffsetDateTime, return that value.
      Returns:
        OffsetDateTime result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a OffsetDateTime

    - #### dateValue

          public java.util.Date dateValue()

      If this GS object is representable as a Date, return that value.
      Returns:
        Date result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a Date

    - #### instantValue

          public java.time.Instant instantValue()

      If this GS object is representable as an Instant, return that value.
      Returns:
        Instant result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not a Instant

    - #### bytesValue

          public byte[] bytesValue()

      If this GS object is reprentable in bytes (other than Strings), return a byte array represention that value.

      WARNING: only the cached portion of this value is returned, limited by the GbjGciInterface.initialize preloadSize. To insure getting the complete object, use the method getBytes().

      Returns:
        byte array result
      Throws:
        `java.lang.ClassCastException` - thrown if GS object not bytes

    - #### stringValue

          public java.lang.String stringValue()

      If this GS object is representable as a String, return that value. If server object is neither a String, MultiByteString, Utf8 , nor Utf16 , returns result of sending asString to the server object.
      Returns:
        String result
      Throws:
        `java.lang.ClassCastException` - thrown if session is not logged in

    - #### stringValue_

          public java.lang.String stringValue_()

      If this GS object is representable as a String, return that value.
      Returns:
        String result
      Throws:
        `java.lang.ClassCastException` - thrown if server object is neither a String, MultiByteString, Utf8 , nor Utf16 .

    - #### getBytes

          public byte[] getBytes(int startIndex,
                                 int numBytes)

      Retrieve the designated bytes from this byte-based GS object.
      Parameters:
        `startIndex` - The starting index (1-based)
        `numBytes` - The number of bytes to retrieve
      Returns:
        the retrieved bytes
      Throws:
        `GbjGciException` - thrown on any errors

    - #### getByte

          public byte getByte(int index)

      Retrieve the designated byte from this byte-based GS object.
      Parameters:
        `index` - The index of the byte to retrieve (1-based)
      Returns:
        the retrieved byte
      Throws:
        `GbjGciException` - thrown on any errors

    - #### getObjs

          public void getObjs(int startIndex,
                              int numObjs,
                              GbjGciObject[] objs)

      Retrieve the designated GS objects from this indexable GS object.
      Parameters:
        `startIndex` - The starting index (1-based)
        `numObjs` - The number of objects to retrieve
        `objs` - An array of GS objects to hold the results
      Throws:
        `GbjGciException` - thrown on any errors

    - #### getObjs

          public GbjGciObject[] getObjs(int startIndex,
                                        int numObjs)

      Retrieve the designated GS objects from this indexable GS object.
      Parameters:
        `startIndex` - The starting index (1-based)
        `numObjs` - The number of objects to retrieve
      Returns:
        An array of GS objects to hold the results
      Throws:
        `GbjGciException` - thrown on any errors

    - #### getObj

          public GbjGciObject getObj(int index)

      Retrieve the designated GS object from this indexable GS object
      Parameters:
        `index` - The starting index (1-based)
      Returns:
        The GS object at the designated index
      Throws:
        `GbjGciException` - thrown on any errors

    - #### getNamedObjs

          public void getNamedObjs(int startIndex,
                                   int numObjs,
                                   GbjGciObject[] objs)

      Retrieve the designated GS objects from the named instvars for this GS object.
      Parameters:
        `startIndex` - The starting index (1-based)
        `numObjs` - The number of objects to retrieve
        `objs` - An array of GS objects to hold the results
      Throws:
        `GbjGciException` - thrown on any errors

    - #### getNamedObj

          public GbjGciObject getNamedObj(int index)

      Retrieve the designated GS object from the named instvar for this GS object.
      Parameters:
        `index` - The index of the desired instvar (1-based)
      Returns:
        The GS object from the designated instvar
      Throws:
        `GbjGciException` - thrown on any errors

    - #### putBytes

          public void putBytes(int startIndex,
                               int numBytes,
                               byte[] bytes)

      Write the designated bytes to this byte-based GS object.
      Parameters:
        `startIndex` - The starting index (1-based)
        `numBytes` - The number of bytes to write
        `bytes` - The bytes to write out
      Throws:
        `GbjGciException` - thrown on any errors

    - #### putBytes

          public void putBytes(int startIndex,
                               byte[] bytes)

      Write the designated bytes to this byte-based GS object.
      Parameters:
        `startIndex` - The starting index (1-based)
        `bytes` - The bytes to write out
      Throws:
        `GbjGciException` - thrown on any errors

    - #### putByte

          public void putByte(int index,
                              byte b)

      Write the designated byte to this byte-based GS object.
      Parameters:
        `index` - The index (1-based)
        `b` - The byte to write out
      Throws:
        `GbjGciException` - thrown on any errors

    - #### putObjs

          public void putObjs(int startIndex,
                              int numObjs,
                              GbjGciObject[] objs)

      Write the designated GS objects to this indexable GS object.
      Parameters:
        `startIndex` - The starting index (1-based)
        `numObjs` - The number of objects to write
        `objs` - An array of GS objects to write out
      Throws:
        `GbjGciException` - thrown on any errors

    - #### putObjs

          public void putObjs(int startIndex,
                              GbjGciObject[] objs)

      Write the designated GS objects to this indexable GS object.
      Parameters:
        `startIndex` - The starting index (1-based)
        `objs` - An array of GS objects to write out
      Throws:
        `GbjGciException` - thrown on any errors

    - #### putObj

          public void putObj(int index,
                             GbjGciObject obj)

      Write the designated GS object to this indexable GS object.
      Parameters:
        `index` - The index of the instvar to write out (1-based)
        `obj` - The GS object to write out
      Throws:
        `GbjGciException` - thrown on any errors

    - #### putNamedObjs

          public void putNamedObjs(int startIndex,
                                   int numObjs,
                                   GbjGciObject[] objs)

      Write the designated GS objects to the named instvars for this GS object.
      Parameters:
        `startIndex` - The starting index (1-based)
        `numObjs` - The number of objects to write
        `objs` - An array of GS objects to write out
      Throws:
        `GbjGciException` - thrown on any errors

    - #### putNamedObjs

          public void putNamedObjs(int startIndex,
                                   GbjGciObject[] objs)

      Write the designated GS objects to the named instvars for this GS object.
      Parameters:
        `startIndex` - The starting index (1-based)
        `objs` - An array of GS objects to write out
      Throws:
        `GbjGciException` - thrown on any errors

    - #### putNamedObj

          public void putNamedObj(int index,
                                  GbjGciObject obj)

      Write the designated GS object to the named instvars for this GS object.
      Parameters:
        `index` - The index of the instvar to write out (1-based)
        `obj` - The GS object to write out
      Throws:
        `GbjGciException` - thrown on any errors