1 |
/* |
2 |
openisis - an open implementation of the CDS/ISIS database |
3 |
Version 0.8.x (patchlevel see file Version) |
4 |
Copyright (C) 2001-2003 by Erik Grziwotz, erik@openisis.org |
5 |
|
6 |
This library is free software; you can redistribute it and/or |
7 |
modify it under the terms of the GNU Lesser General Public |
8 |
License as published by the Free Software Foundation; either |
9 |
version 2.1 of the License, or (at your option) any later version. |
10 |
|
11 |
This library is distributed in the hope that it will be useful, |
12 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 |
Lesser General Public License for more details. |
15 |
|
16 |
You should have received a copy of the GNU Lesser General Public |
17 |
License along with this library; if not, write to the Free Software |
18 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
19 |
|
20 |
see README for more information |
21 |
EOH */ |
22 |
|
23 |
/* |
24 |
$Id: openisistcl.h,v 1.12 2003/06/06 12:38:39 mawag Exp $ |
25 |
tcl/tk binding |
26 |
*/ |
27 |
|
28 |
#ifndef OPENISISTCL |
29 |
#define OPENISISTCL |
30 |
|
31 |
#include <tcl.h> |
32 |
|
33 |
EXTERN int openIsisTclInit _ANSI_ARGS_ ( ( Tcl_Interp *interp ) ); |
34 |
|
35 |
/** @return session id on success, -1 on error |
36 |
*/ |
37 |
EXTERN int openIsisTclNewSession _ANSI_ARGS_ ( ( Tcl_Interp *ip ) ); |
38 |
|
39 |
/** @return boolean ok |
40 |
*/ |
41 |
EXTERN int openIsisTclGetSession _ANSI_ARGS_ ( (int sessid, Tcl_Interp **ip ) ); |
42 |
|
43 |
/* |
44 |
interface needed by "main-threaded" server: |
45 |
- create commands for records "req", "res", "ses" |
46 |
- bind Recs to those commands and set "the" session. |
47 |
all recs are dynamic and can be assumed to belong to "the" session. |
48 |
should be discarded by "the" session when extended. |
49 |
the "req" record must not be modified |
50 |
(since it's real owner session might be working in parallel). |
51 |
modification would require "copy-on-write". |
52 |
- retrieve Recs |
53 |
future extension: |
54 |
the same game with multiple openIsisTclSessions, |
55 |
each with one interp (constant) |
56 |
*/ |
57 |
/** |
58 |
create record command slot |
59 |
on a clean session, ids are guaranteed to increment 0,1 ... |
60 |
@param fdt optional name of fdt rec cmd |
61 |
return slot id >=0 or err <0 |
62 |
*/ |
63 |
EXTERN int openIsisTclCreateRecCmd ( |
64 |
int sid, const char *nam, const char *fdt, int flg ); |
65 |
/** |
66 |
set/get cnt records to/from slots specified by ids |
67 |
return cnt or err <0 |
68 |
EXTERN int openIsisTclSetRecs ( int oitses, int cnt, |
69 |
const int *ids, OpenIsisRec **recs ); |
70 |
EXTERN int openIsisTclGetRecs ( int oitses, int cnt, |
71 |
const int *ids, OpenIsisRec **recs ); |
72 |
*/ |
73 |
/** |
74 |
set session to ses and eval command in oitses' interp |
75 |
if recs is not 0, set cnt recs as specified by ids |
76 |
(as created by openIsisTclCreateRecCmd) |
77 |
*/ |
78 |
EXTERN int openIsisTclEval ( int sid, |
79 |
int cnt, const int *ids, OpenIsisRec **recs, char *script ); |
80 |
|
81 |
|
82 |
#endif /* OPENISISTCL */ |