The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Cache - Integration of Intersystems Cache Database into Perl

SYNOPSIS

  use Cache qw(:lowlevel :highlevel);
  _CacheEval '$ZV'; print _CacheConvert();
  

This module and all modules in the Cache::-Domain require a perl that has Cache fully embedded. (such a binary is a dual-binary that is a Perl and a Cache binary at the same time. Usually there is a softlink (ln -s cache cperl) so you don't need to use cache --perl anymore, it works the following way:

use:

  o cache --perl [perl options ]    and you start perl with embedded cache
  o cperl [ perl options ]          and you get perl with embedded cache
  o cache [ cache options ]         and you get cache with embedded perl

For backward compatibility with older versions of Cache-Perl

  o cache -perl [ perl options ]
  

is still supported but this feature is deprecated. Use "--perl" instead of "-perl".

Note: Most of this stuff is the low-level Interface, you normally don't need it, except maybe CacheEval and CacheExecute.

  o use Cache::ObjectScript     - for embedded ObjectScript support
  o use Cache::Global           - for high-performance global access (bulk support)
  o use Cache::Routine          - for calling routines and functions
  o use Cache::Bind             - for bidirectional binding of COS Variables to Perl variables
  o use Cache::Util             - for utility functions and helpers

DESCRIPTION

 * This module provides full access to most Cache call-in functions.
 * You should not use the call-in function without exactly knowing what you are doing
 * These function are not exported by default and prepended by a underscore (that means internal).
 * All functions are perlified - you pass a single string if Cache expects a counted string
 * You don't need to check for errors. Most functions raise exceptions on error: use eval { }; to catch them
 * Only "A" functions are supported, no "W". "W" is NOT Unicode anyway, Intersystems simply lies to you.

User Interface for Cache Functions

CacheEval $expr
 Evaluates a ObjectScript expression and returns its result
 Exception: yes
 Note: This function is slow because it has to preserve terminal settings
CacheExecute $stmt
 Executes a ObjectScript command and returns nothing.
 Exception: yes
 Note: This function is slow because it has to preserve terminal settings
 

Cache Call-In High-Level Functions

The high-level functions can be imported by: use Cache ':highlevel';

_CacheAbort [ CACHE_CTRLC | CACHE_RESJOB ]
 See Cache specification.
 Exception: Yes
 Note: Don't use it.
$ctx = _CacheContext()
 See Cache specification.
 Exception: No
$value = _CacheConvert()
 See Cache specification.
 Exception: Yes
 Note: This function calls CacheConvert(CACHE_ASTRING, ...)
$value = _CacheConvert2()
 This routine uses CacheType() to ask for the type of TOS and
 tries to get the value the fastest way possible.

 Exception: Yes
_CacheCtrl($bitmap)
 See Cache specification
 Exception: Yes
$converted = _CacheCvtIn($string, $table)
 See Cache specification
 Exception: Yes
$converted = _CacheCvtOut($string, $table)
 See Cache specification
 Exception: Yes
_CacheEnd()
 See Cache specification
 Exception: Yes
 Note: You should NEVER EVER call this! even POSIX::_exit(1); is prefered.
$error = _CacheError()
 See Cache specification
 Exception: Yes (if a double fault happens)
 Note: No need to call this because every error is reported by croak.
$errorstring = _CacheErrxlate($errornum)
 See Cache specification
 Exception: No (if the call to CacheErrxlate fails, undef is returned)
_CacheEval $string
 See Cache specification
 Exception: Yes
_CacheExecute $string
 See Cache specification
 Exception: Yes
$prompt = _CachePrompt()
 See Cache specification
 Exception: Yes
 Note: Experts call this functions only by accident. :)
_CacheSignal $number
 See Cache specification
 Exception: Yes
 Note: Think and you will find out that you don't want it in most cases.
_CacheStart($flags, $timeout, $princin, $princout)
 See Cache specification
 Exception: Yes
 Note: Don't call it. It's already done. Say simply thanks :)
$type = _CacheType()
 See Cache specification
 Exception: No (ahm, check the return value for errors)

Cache Low-Level Call-In Functions

 The low-level functions can be imported by:
 use Cache ':lowlevel';

Use it only IF:

  * you know how to use gdb
  * you want to corrupt the database
  * you never use a condom anyway :)
  * you know what gmngen/checksum/mdate is made for :)
_CacheCloseOref $oref
 See Cache specification
 Exception: Yes
_CacheDoFun $rflags, $numargs
 See Cache specification
 Exception: Yes, please.
_CacheDoRtn $rflags, $numargs
 See Cache specification
 Exception: Oui
_CacheExtFun $rflags, $numargs
 See Cache specification
 Exception: Da
_CacheGetProperty()
 See Cache specification
 Exception: Yes, sir.
_CacheGlobalGet $numsubscipt, $die_or_empty
 See Cache specification
 Exception: yup
_CacheGlobalSet $numsubscript
 See Cache specification
 Exception: yup, on weekends only.
_CacheIncrementCountOref $oref
 See Cache specification
 Exception: ja
_CacheInvokeClassMethod $numarg
 See Cache specification
 Exception: si
_CachePop $arg
 Not implemented
 Exception: yes
$val = _CachePopDbl()
 See Cache specification
 Exception: yes
$val = _CachePopInt()
 See Cache specification
 Exception: yes
$string = _CachePopList()
 Currently not implemented
 Exception: yes
$oref = _CachePopOref()
 See Cache specification
 Exception: yes
$str = _CachePopStr()
 See Cache specification
 Exception: yes
$ptr = CachePopPtr()
 Not Implemented
 Exception: yes
_CachePushClassMethod $classname, $methodname, [$flag]/
 See Cache specification
 Exception: /bin/true
 Note: flag defaults to 0
_CachePushDbl $double
 See Cache specification
 Exception: yes
$rflags = _CachePushFunc $tag, $routine;
 See Cache specification
 Exception: yes
$rflags = _CachePushFuncX $tag, $offset, $env, $routine;
 See Cache specification
 Exception: yes
_CachePushGlobal $global
 See Cache specification
 Exception: yes
_CachePushGlobalX $global, $env
 See Cache specification
 Exception: yes
_CachePushInt $i
 See Cache specification
 Exception: yes
_CachePushList $string
 See Cache specification
 Exception: yes
_CachePushMethod $oref, $methodname, [$flag]
 See Cache specification
 Exception: yes
 Note: $flag defaults to 0
_CachePushOref $oref
 See Cache specification
 Exception: yes
_CachePushProperty $oref, $property
 See Cache specification
 Exception: yes
_CachePushPtr $value
 See Cache specification
 Exception: yes
$rflags = _CachePushRtn $tag, $routine
 See Cache specification
 Exception: yes
$rflags = _CachePushRtnX $tag, $offset, $env, $routine
 See Cache specification
 Exception: yes
_CachePushStr $string
 See Cache specification
 Exception: yes
_CacheSetProperty()
 See Cache specification
 Exception: yes
_CacheUnPop()
 See Cache specification
 Exception: yes

SEE ALSO

Cache::ObjectScript, Cache::Global, Cache::Routine, Cache::Util, Cache::Bind.

AUTHOR

 Stefan Traby <stefan@hello-penguin.com>
 http://hello-penguin.com

COPYRIGHT

 Copyright 2001,2003,2004 by KW-Computer Ges.m.b.H Graz, Austria
 Copyright 2001,2002,2003,2004 by Stefan Traby <stefan@hello-penguin.com>

LICENSE

 This module is licenced under LGPL
 (GNU LESSER GENERAL PUBLIC LICENSE)
 see the LICENSE-file in the toplevel directory of this distribution.