/* <COPYRIGHT>
* Copyright 2002 Joachim Schrod Network and Publication Consultance GmbH,
* Gerd Stolpmann
*
* <GPL>
* This file is part of WDialog.
*
* WDialog is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* WDialog is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with WDialog; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* </>
*/
/* $Id: perlvalues.idl,v 3.2 2002-02-14 16:24:13 stolpmann Exp $
* ----------------------------------------------------------------------
*
*/
/* CAMLIDL definition */
/* See "perldoc perlguts" for a description of the functions */
/* ---------------------------------------------------------------------- */
/* | SCALAR VALUES | */
/* ---------------------------------------------------------------------- */
typedef [abstract,
ml2c(ml2c_perlvalues_scalar_value),
c2ml(c2ml_perlvalues_scalar_value),
errorcheck(ec_perlvalues_scalar_value)
]
void scalar_value;
typedef [string] char cstring[];
scalar_value newSViv ([in] int x);
scalar_value newSVnv ([in] double x);
scalar_value newSVpvn([in] cstring s, [in] int length);
scalar_value newSVsv ([in] scalar_value s);
void sv_setiv ([in] scalar_value sv, [in] int x);
void sv_setnv ([in] scalar_value sv, [in] double x);
void sv_setpvn([in] scalar_value sv, [in] cstring str, [in] int length);
void sv_setsv ([in] scalar_value sv1, [in] scalar_value sv2);
int x_sviv ([in] scalar_value sv);
double x_svnv ([in] scalar_value sv);
void x_svpv ([in] scalar_value x, [out] cstring *s, [out] int *l);
/* TODO: Null characters in s are interpreted as end-of-string.
* This should be fixed.
*/
boolean x_svtrue([in] scalar_value sv);
boolean x_sviok ([in] scalar_value sv);
boolean x_svnok ([in] scalar_value sv);
boolean x_svpok ([in] scalar_value sv);
boolean x_svok ([in] scalar_value sv);
scalar_value x_sv_undef(void);
scalar_value x_sv_true(void);
scalar_value x_sv_false(void);
scalar_value perl_get_sv([in] cstring s, [in] int m);
/* ---------------------------------------------------------------------- */
/* | ARRAY VALUES | */
/* ---------------------------------------------------------------------- */
typedef [abstract,
ml2c(ml2c_perlvalues_array_value),
c2ml(c2ml_perlvalues_array_value),
errorcheck(ec_perlvalues_array_value)
]
void array_value;
array_value newAV();
array_value av_make([in] int num, [in] scalar_value ptr[]);
void av_push([in] array_value av, [in] scalar_value sv);
scalar_value av_pop([in] array_value av);
scalar_value av_shift([in] array_value av);
void av_unshift([in] array_value av, [in] int num);
int av_len([in] array_value av);
scalar_value *av_fetch([in] array_value av, [in] int key, [in] int lval);
scalar_value *av_store([in] array_value av, [in] int key, [in] scalar_value v);
void av_clear([in] array_value av);
void av_undef([in] array_value av);
void av_extend([in] array_value av, [in] int key);
array_value perl_get_av([in] cstring s, [in] int m);
/* ---------------------------------------------------------------------- */
/* | HASH VALUES | */
/* ---------------------------------------------------------------------- */
typedef [abstract,
ml2c(ml2c_perlvalues_hash_value),
c2ml(c2ml_perlvalues_hash_value),
errorcheck(ec_perlvalues_hash_value)
]
void hash_value;
typedef [abstract,
ml2c(ml2c_perlvalues_hash_entry),
c2ml(c2ml_perlvalues_hash_entry),
errorcheck(ec_perlvalues_hash_entry)
]
void hash_entry;
hash_value newHV(void);
scalar_value *hv_store([in] hash_value hv,
[in] cstring key,
[in] int klen,
[in] scalar_value val,
[in] int hash);
scalar_value *hv_fetch([in] hash_value hv,
[in] cstring key,
[in] int klen,
[in] int lval);
boolean hv_exists([in] hash_value hv,
[in] cstring key,
[in] int klen);
scalar_value hv_delete([in] hash_value hv,
[in] cstring key,
[in] int klen,
[in] int flags);
void hv_clear([in] hash_value hv);
void hv_undef([in] hash_value hv);
int hv_iterinit([in] hash_value hv);
hash_entry hv_iternext([in] hash_value hv);
cstring hv_iterkey([in] hash_entry entry, [out] int *retlen);
/* retlen: on some architectures Perl uses "int", on other architectures "long".
* It is always a 32 bit int. Here, int seems to be the best choice, as it
* is 32 bits on both 32 and 64 bit architectures.
* The C compile may output a warning.
*/
scalar_value hv_iterval([in] hash_value hv, [in] hash_entry entry);
scalar_value hv_iternextsv([in] hash_value hv,
[out] cstring *key,
[out] int *retlen);
/* retlen: See hv_iterkey. */
hash_value perl_get_hv([in] cstring s, [in] int m);
/* ---------------------------------------------------------------------- */
/* | REFERENCES | */
/* ---------------------------------------------------------------------- */
scalar_value newRV_inc_from_sv([in] scalar_value sv);
scalar_value newRV_inc_from_av([in] array_value av);
scalar_value newRV_inc_from_hv([in] hash_value hv);
scalar_value newRV_noinc_from_sv([in] scalar_value sv);
scalar_value newRV_noinc_from_av([in] array_value av);
scalar_value newRV_noinc_from_hv([in] hash_value hv);
scalar_value x_SvRV([in] scalar_value sv);
array_value x_AvRV([in] scalar_value av);
hash_value x_HvRV([in] scalar_value hv);
int x_svrok([in] scalar_value x);
int reftype([in] scalar_value x);
int SvREFCNT([in] scalar_value sv);
scalar_value SvREFCNT_inc([in] scalar_value sv);
void SvREFCNT_dec([in] scalar_value sv);
/* ---------------------------------------------------------------------- */
/* | CALLBACKS | */
/* ---------------------------------------------------------------------- */
/* Only limited support yet: */
void pl_callback_noarg_noresult(scalar_value closure);
scalar_value pl_callback_noarg_scalar(scalar_value closure);
void pl_callback_1arg_noresult(scalar_value closure,
scalar_value arg);
scalar_value pl_callback_1arg_scalar(scalar_value closure,
scalar_value arg);
/* ---------------------------------------------------------------------- */
/* | OBJECTS | */
/* ---------------------------------------------------------------------- */
/* not yet supported */
/* ======================================================================
* History:
*
* $Log: perlvalues.idl,v $
* Revision 3.2 2002-02-14 16:24:13 stolpmann
* Added copyright notice
*
* Revision 3.1 2002/02/12 20:41:38 stolpmann
* Initial revision at sourceforge
*
* Revision 1.1 2000/02/19 15:04:17 gerd
* Initial revision.
*
*
*/