1.1 GemBuilder Application Overview
1.2 Deciding Where to Do the Work
Representing GemStone Objects in C
Smalltalk Access to Objects
Environments
1.3 Objects in GemStone and C data
1.4 Garbage Collection
In-memory garbage collection
Tracked Objects
Unreferenced persistent object garbage collection
Releasing Objects
2.1 Session Control
Prepare for Login
Logging In and Out
Transaction Management
Committing a Transaction
Aborting a Transaction
Controlling Transactions Manually
2.2 Representing Objects in C
GemStone-Defined Object Macros
GemStone Object Implementation Types
Special
Byte
Pointer
NSC
GemStone Data Types
Integers
Floating Points
Other Numeric Types
Character
Boolean
Nil/null
Strings
Object Creation
2.3 Performing work in GemStone
Executing Smalltalk Code in GemStone
Sending Messages to GemStone Objects
Interrupting GemStone Execution
2.4 Structural Access to Objects
Direct Access to Metadata
Byte Objects
Pointer Objects
Nonsequenceable Collections (NSC Objects)
Efficient Fetching and Storing with Object Traversal
How Object Traversal Works
The Object Traversal Functions
Efficient Fetching And Storing with Path Access
2.5 Nonblocking Functions
2.6 Operating System Considerations for C Applications
Signal Handling in Your GemBuilder Application
Executing Host File Access Methods
Writing Portable Code
2.7 Error Handling and Recovery
Polling for Errors
Error Jump Buffers
The Call Stack
GemStone System Errors
3.1 Environment
3.2 RPC and Linked applications
RPC for Debugging
Linked for Performance
The GemBuilder for C Shared Libraries
3.3 GemBuilder Applications that load Shared Libraries
Building the Application
Searching for the Library
How UNIX Matches Search Names with Shared Library Files
3.4 Building Statically Linked Applications
4.1 Shared User Action Libraries
4.2 How User Actions Work
4.3 Developing User Actions
1. Write the User Action Functions
2. Create a User Action Library
The gciua.hf Header File
The Initialization and Shutdown Functions
Defining the Initialization Function
Defining the Shutdown Function
Compiling and Linking Shared Libraries
Using Existing User Actions in a User Action Library
Using Third-party C Code with a User Action Library
3. Loading User Actions
Loading User Action Libraries At Run Time
Application User Actions
Session User Actions
Specifying the User Action Library
Creating User Actions in Your C Application
Verify That Required User Actions Have Been Installed
4. Write the Code That Calls Your User Actions
Limit on Circular Calls Among User Actions and Smalltalk
5. Debug the User Action
4.4 Executing User Actions
Choosing Between Session and Application User Actions
Remote Application and Gem Processes
Applications With Multiple Gems
Running User Actions with Applications
With an RPC Application
With a Linked Application
Running User Actions with Gems
5.1 Development Environment and Standard Libraries
5.2 Compiling and Linking C Source Code for GemStone
Compiling
The C++ Compiler
Compilation Options
Linking
Link options
Risk of Database Corruption
5.3 Platform Specific versions and example options
Linux Compile and Link Information
Complier version
Listing the Compiler Version
Debugger version
Compiling a user action or GCI application
Linking a user action library
Linking a GCI application
Solaris on x86 Compile and Link Information
AIX Compile and Link Information
DARWIN Compile and Link Information
Windows Compile and Link Information
Complier/Debugger version
Compiling a GCI application
6.1 GemBuilder for C Include Files
6.2 Reserved Oops
6.3 GemBuilder Data Types
Date/Time Structure- GciDateTimeSType
Error Report Structure - GciErrSType
Object Information Structure - GciObjInfoSType
Object Report Structure - GciObjRepSType
Object Report Header - GciObjRepHdrSType
Store Traversal Arguments - GciStoreTravDoArgsSType
Clamped Traversal Arguments - GciClampedTravArgsSType
Traversal Buffer - GciTravBufType
Functions
User Action Information Structure - GciUserActionSType
7.1 Function Summary Tables
7.2 Executing the examples
GciAbort
GciAddOopToNsc
GciAddOopsToNsc
GCI_ALIGN
GciAll7Bit
GciAllocTravBuf
GciAlteredObjs
GciAppendBytes
GciAppendChars
GciAppendOops
GciBegin
GCI_BOOL_TO_OOP
GciByteArrayToPointer
GciCallInProgress
GciCheckAuth
GCI_CHR_TO_OOP
GciClampedTrav
GciClassMethodForClass
GciClassNamedSize
GciClassRemoveAllMethods
GciClearStack
GciCommit
GciCompileMethod
GciCompress
GciContinue
GciContinueWith
GciCreateByteObj
GciCreateOopObj
GciCTimeToDateTime
GciDateTimeToCTime
GciDbgEstablish
GciDbgEstablishToFile
GciDbgLogString
GciDeclareAction
GciDecodeOopArray
GciDecSharedCounter
GciDirtyExportedObjs
GciDirtyObjsInit
GciDirtySaveObjs
GciDirtyTrackedObjs
Gci_doubleToSmallDouble
GciEnableFreeOopEncoding
GciEnableFullCompression
GciEnableSignaledErrors
GciEncodeOopArray
GciEncrypt
GciErr
GciExecute
GciExecuteFromContext
GciExecuteStr
GciExecuteStrFetchBytes
GciExecuteStrFromContext
GciExecuteStrTrav
GciFetchByte
GciFetchBytes_
GciFetchChars_
GciFetchClass
GciFetchDateTime
GciFetchDynamicIv
GciFetchDynamicIvs
GciFetchNamedOop
GciFetchNamedOops
GciFetchNamedSize
GciFetchNameOfClass
GciFetchNumEncodedOops
GciFetchNumSharedCounters
GciFetchObjectInfo
GciFetchObjImpl
GciFetchOop
GciFetchOops
GciFetchPaths
GciFetchSharedCounterValuesNoLock
GciFetchSize_
GciFetchUtf8Bytes_
GciFetchVaryingOop
GciFetchVaryingOops
GciFetchVaryingSize_
GciFindObjRep
GciFloatKind
GciFltToOop
GciGetFreeOop
GciGetFreeOops
GciGetFreeOopsEncoded
GciGetSessionId
GciHardBreak
GciHiddenSetIncludesOop
GciI32ToOop
GCI_I64_IS_SMALL_INT
GciI64ToOop
GciIncSharedCounter
GciInit
GciInitAppName
GciInstallUserAction
GciInstMethodForClass
GciInUserAction
GciIsKindOf
GciIsKindOfClass
GciIsRemote
GciIsSubclassOf
GciIsSubclassOfClass
GciIvNameToIdx
GciLoadUserActionLibrary
GciLogin
GciLoginEx
GciLogout
GciLongJmp
GciMoreTraversal
GciNbAbort
GciNbBegin
GciNbClampedTrav
GciNbCommit
GciNbContinue
GciNbContinueWith
GciNbEnd
GciNbEndPoll
GciNbExecute
GciNbExecuteStr
GciNbExecuteStrFetchBytes
GciNbExecuteStrFromContext
GciNbExecuteStrTrav
GciNbLoginEx
GciNbMoreTraversal
GciNbPerform
GciNbPerformFetchBytes
GciNbPerformNoDebug
GciNbPerformTrav
GciNbStoreTrav
GciNbStoreTravDo_
GciNbStoreTravDoTrav_
GciNbStoreTravDoTravRefs_
GciNbTraverseObjs
GciNewByteObj
GciNewCharObj
GciNewDateTime
GciNewOop
GciNewOops
GciNewOopUsingObjRep
GciNewString
GciNewSymbol
GciNewUtf8String
GciNscIncludesOop
GciObjExists
GciObjInCollection
GciObjIsCommitted
GciObjRepSize_
GCI_OOP_IS_BOOL
GCI_OOP_IS_CHAR
GCI_OOP_IS_SMALL_FRACTION
GCI_OOP_IS_SMALL_INT
GCI_OOP_IS_SPECIAL
GciOopToBool
GCI_OOP_TO_BOOL
GciOopToChar16
GciOopToChar32
GciOopToChr
GCI_OOP_TO_CHR
GciOopToFlt
GciOopToI32
GciOopToI64
GciPerform
GciPerformFetchBytes
GciPerformNoDebug
GciPerformSymDbg
GciPerformTrav
GciPerformTraverse
GciPointerToByteArray
GciPollForSignal
GciPollSocketForRead
GciPopErrJump
GciProcessDeferredUpdates_
GciProduct
GciPushErrJump
GciRaiseException
GciReadSharedCounter
GciReadSharedCounterNoLock
GciReleaseAllGlobalOops
GciReleaseAllOops
GciReleaseAllTrackedOops
GciReleaseGlobalOops
GciReleaseOops
GciReleaseTrackedOops
GciRemoveOopFromNsc
GciRemoveOopsFromNsc
GciReplaceOops
GciReplaceVaryingOops
GciResolveSymbol
GciResolveSymbolObj
GciRtlIsLoaded
GciRtlLoad
GciRtlUnload
GciSaveAndTrackObjs
GciSaveGlobalObjs
GciSaveObjs
GciServerIsBigEndian
GciSessionIsRemote
GciSetCacheName_
GciSetErrJump
GciSetHaltOnError
Gci_SETJMP
GciSetNet
GciSetNetEx
GciSetSessionId
GciSetSharedCounter
GciSetTraversalBufSwizzling
GciSetVaryingSize
GciShutdown
GciSoftBreak
GciStep
GciStoreByte
GciStoreBytes
GciStoreBytesInstanceOf
GciStoreChars
GciStoreDynamicIv
GciStoreIdxOop
GciStoreIdxOops
GciStoreNamedOop
GciStoreNamedOops
GciStoreOop
GciStoreOops
GciStorePaths
GciStoreTrav
GciStoreTravDo_
GciStoreTravDoTrav_
GciStoreTravDoTravRefs_
GciStringToInteger
GciStrKeyValueDictAt
GciStrKeyValueDictAtObj
GciStrKeyValueDictAtObjPut
GciStrKeyValueDictAtPut
GciSymDictAt
GciSymDictAtObj
GciSymDictAtObjPut
GciSymDictAtPut
GciTrackedObjsFetchAllDirty
GciTrackedObjsInit
GciTraverseObjs
GciUncompress
GciUserActionInit
GciUserActionShutdown
GciUtf8To8Bit
GciVersion
A.1 Developing a GCSI Application
Required Header Files
The GCSI Shared Library
Compiling and Linking
Connecting to the Shared Page Cache
The Sample Program
A.2 GCSI Data Types
The Structure for Representing the GCSI Function Result
GcsiAllStatsForMask
GcsiAttachSharedCache
GcsiAttachSharedCacheForStone
GcsiDetachSharedCache
GcsiFetchMaxProcessesInCache
GcsiInit
GcsiStatsForGemSessionId
GcsiStatsForGemSessionWithName
GcsiStatsForPgsvrSessionId
GcsiStatsForProcessId
GcsiStatsForShrPcMon
GcsiStatsForStone
GCSI Errors