| Cac documentation | Contained in the Cac distribution. |
Cac - Integration of Intersystems Cache Database into Perl
use Cac qw(:lowlevel :highlevel); _CacEval '$ZV'; print _CacConvert();
This module and all modules in the Cac::-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 CacEval and CacExecute.
o use Cac::ObjectScript - for embedded ObjectScript support o use Cac::Global - for high-performance global access (bulk support) o use Cac::Routine - for calling routines and functions o use Cac::Bind - for bidirectional binding of COS Variables to Perl variables o use Cac::Util - for utility functions and helpers
* 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.
Evaluates a ObjectScript expression and returns its result Exception: yes Note: This function is slow because it has to preserve terminal settings
Executes a ObjectScript command and returns nothing. Exception: yes Note: This function is slow because it has to preserve terminal settings
The high-level functions can be imported by: use Cache ':highlevel';
See Cache specification. Exception: Yes Note: Don't use it.
See Cache specification. Exception: No
See Cache specification. Exception: Yes Note: This function calls CacConvert(CACHE_ASTRING, ...)
This routine uses CacType() to ask for the type of TOS and tries to get the value the fastest way possible. Exception: Yes
See Cache specification Exception: Yes
See Cache specification Exception: Yes
See Cache specification Exception: Yes
See Cache specification Exception: Yes Note: You should NEVER EVER call this! even POSIX::_exit(1); is prefered.
See Cache specification Exception: Yes (if a double fault happens) Note: No need to call this because every error is reported by croak.
See Cache specification Exception: No (if the call to CacheErrxlate fails, undef is returned)
See Cache specification Exception: Yes
See Cache specification Exception: Yes
See Cache specification Exception: Yes Note: Experts call this functions only by accident. :)
See Cache specification Exception: Yes Note: Think and you will find out that you don't want it in most cases.
See Cache specification Exception: Yes Note: Don't call it. It's already done. Say simply thanks :)
See Cache specification Exception: No (ahm, check the return value for errors)
The low-level functions can be imported by: use Cac ':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 :)
See Cache specification Exception: Yes
See Cache specification Exception: Yes, please.
See Cache specification Exception: Oui
See Cache specification Exception: Da
See Cache specification Exception: Yes, sir.
See Cache specification Exception: yup
See Cache specification Exception: yup, on weekends only.
See Cache specification Exception: ja
See Cache specification Exception: si
Not implemented Exception: yes
See Cache specification Exception: yes
See Cache specification Exception: yes
Currently not implemented Exception: yes
See Cache specification Exception: yes
See Cache specification Exception: yes
Not Implemented Exception: yes
See Cache specification Exception: /bin/true Note: flag defaults to 0
See Cache specification Exception: yes
See Cache specification Exception: yes
See Cache specification Exception: yes
See Cache specification Exception: yes
See Cache specification Exception: yes
See Cache specification Exception: yes
See Cache specification Exception: yes
See Cache specification Exception: yes Note: $flag defaults to 0
See Cache specification Exception: yes
See Cache specification Exception: yes
See Cache specification Exception: yes
See Cache specification Exception: yes
See Cache specification Exception: yes
See Cache specification Exception: yes
See Cache specification Exception: yes
See Cache specification Exception: yes
Stefan Traby <stefan@hello-penguin.com> http://hello-penguin.com
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>
This module is licenced under LGPL (GNU LESSER GENERAL PUBLIC LICENSE) see the LICENSE-file in the toplevel directory of this distribution.
| Cac documentation | Contained in the Cac distribution. |
package Cac; use 5.007; use strict; use warnings; our $xs_loaded = 0; BEGIN { } use XSLoader; eval { XSLoader::load Cac unless $Cac::xs_loaded++; # this is in cacperl.xs :) }; die "\n\nCan't load Cac-XS.\nThis happen when you use a plain Perl that is not embedded in Cache\n" ."Use the cperl script provided in the Cache-Perl distribution, loading Cache-Perl without\n" ."that will fail in any case\n\n$@" if $@; require Exporter; use AutoLoader qw(AUTOLOAD); our @ISA = qw(Exporter); # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. # This allows declaration use Cac ':all'; # If you do not need this, moving things directly into @EXPORT or @EXPORT_OK # will save memory. our @EXPORT = qw( &CacEval &CacExecute &CacHome ); our %EXPORT_TAGS = ( 'all' => [ @EXPORT ], 'highlevel' => [ qw( _CacAbort _CacContext _CacConvert _CacConvert2 _CacCtrl _CacCvtIn _CacCvt_Out _CacEnd _CacError _CacErrxlate _CacEval _CacExecute _CacPrompt _CacSignal _CacStart _CacType ) ], 'lowlevel' => [ qw( _CacCloseOref _CacDoFun _CacDoRtn _CacExtFun _CacGetProperty _CacGlobalGet _CacGlobalSet _CacIncrementCountOref _CacInvokeClassMethod _CacPop _Cac_PopDbl _CacPopInt _CacPopList _CacPopOref _CacPopStr _CacPopPtr _CacPushDbl _CacPushFunc _CacPushFuncX _CacPushGlobal _CacPushGlobalX _CacPushInt _CacPushList _CacPushMethod _CacPushOref _CacPushProperty _CacPushPtr _CacPushRtn _CacPushRtnX _CacPushStr _CacSetProperty _CacUnPop )], ); our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} }, @{ $EXPORT_TAGS{'highlevel'} }, @{ $EXPORT_TAGS{'lowlevel'} }); our $VERSION = 1.83;
sub _CacPop($) { die "_CacPop not implemented."; }
sub _CacPopList() { die "_CacPopList is currently not implemented - sorry."; }
sub _CacPopPtr() { die "_CacPopPtr is currently not implemented"; }
1; __END__