My Project
Toggle main menu visibility
Loading...
Searching...
No Matches
Singular
links
silink.h
Go to the documentation of this file.
1
#ifndef SILINK_H
2
#define SILINK_H
3
/****************************************
4
* Computer Algebra System SINGULAR *
5
****************************************/
6
/*
7
* ABSTRACT: general interface to links
8
*/
9
10
#include "singularconfig.h"
11
#include "
omalloc/omalloc.h
"
12
#include "
kernel/structs.h
"
13
14
#include "
Singular/links/sing_dbm.h
"
15
#include "
Singular/lists.h
"
16
#include "
Singular/attrib.h
"
17
18
struct
sip_link
;
19
typedef
struct
sip_link
ip_link;
20
typedef
ip_link *
si_link
;
21
22
23
// extension links:
24
typedef
BOOLEAN
(*
slOpenProc
)(
si_link
l
,
short
flag,
leftv
h
);
25
typedef
BOOLEAN
(*
slWriteProc
)(
si_link
l
,
leftv
lv);
26
typedef
BOOLEAN
(*
slCloseProc
)(
si_link
l
);
27
typedef
BOOLEAN
(*
slPrepCloseProc
)(
si_link
l
);
28
typedef
BOOLEAN
(*
slKillProc
)(
si_link
l
);
29
typedef
leftv
(*
slReadProc
)(
si_link
l
);
30
typedef
leftv
(*
slRead2Proc
)(
si_link
l
,
leftv
a);
31
typedef
BOOLEAN
(*
slDumpProc
)(
si_link
l
);
32
typedef
BOOLEAN
(*
slGetDumpProc
)(
si_link
l
);
33
typedef
const
char
* (*slStatusProc)(
si_link
l
,
const
char
*request);
34
typedef
BOOLEAN
(*
slSetRingProc
)(
si_link
l
, ring r,
BOOLEAN
send);
35
36
struct
s_si_link_extension
37
{
38
si_link_extension
next
;
39
slOpenProc
Open
;
40
slCloseProc
Close
;
41
slPrepCloseProc
PrepClose
;
42
slKillProc
Kill
;
43
slReadProc
Read
;
44
slRead2Proc
Read2
;
45
slWriteProc
Write
;
46
slDumpProc
Dump
;
47
slGetDumpProc
GetDump
;
48
slStatusProc
Status
;
49
slSetRingProc
SetRing
;
50
const
char
*
type
;
51
};
52
53
struct
sip_link
54
{
55
si_link_extension
m
;
// methods
56
char
*
mode
;
57
char
*
name
;
// used for filename and/or further specs
58
void
*
data
;
// the link itself
59
BITSET
flags
;
// 0=close open = 1: read = 2: write = 3
60
short
ref
;
// reference counter
61
};
62
63
// flags:
64
#define SI_LINK_CLOSE 0
65
#define SI_LINK_OPEN 1
66
#define SI_LINK_READ 2
67
#define SI_LINK_WRITE 4
68
69
// tests:
70
#define SI_LINK_CLOSE_P(l) (!(l)->flags)
71
#define SI_LINK_OPEN_P(l) ((l)->flags & SI_LINK_OPEN)
72
#define SI_LINK_W_OPEN_P(l) ((l)->flags & SI_LINK_WRITE)
73
#define SI_LINK_R_OPEN_P(l) ((l)->flags & SI_LINK_READ)
74
#define SI_LINK_RW_OPEN_P(l) (SI_LINK_W_OPEN_P(l) && SI_LINK_R_OPEN_P(l))
75
76
#define SI_LINK_SET_CLOSE_P(l) ((l)->flags = SI_LINK_CLOSE)
77
#define SI_LINK_SET_OPEN_P(l, flag) ((l)->flags |= SI_LINK_OPEN |flag)
78
#define SI_LINK_SET_W_OPEN_P(l) ((l)->flags |= (SI_LINK_OPEN | SI_LINK_WRITE))
79
#define SI_LINK_SET_R_OPEN_P(l) ((l)->flags |= (SI_LINK_OPEN | SI_LINK_READ))
80
#define SI_LINK_SET_RW_OPEN_P(l) ((l)->flags |= (SI_LINK_OPEN | SI_LINK_READ | SI_LINK_WRITE))
81
82
BOOLEAN
slOpen
(
si_link
l
,
short
flag,
leftv
h
);
83
BOOLEAN
slClose
(
si_link
l
);
84
BOOLEAN
slPrepClose
(
si_link
l
);
85
leftv
slRead
(
si_link
l
,
leftv
a=
NULL
);
86
BOOLEAN
slWrite
(
si_link
l
,
leftv
v
);
87
BOOLEAN
slDump
(
si_link
l
);
88
BOOLEAN
slGetDump
(
si_link
l
);
89
const
char
*
slStatus
(
si_link
l
,
const
char
*request);
90
BOOLEAN
slInit
(
si_link
l
,
char
*str);
91
void
slKill
(
si_link
l
);
92
void
slCleanUp
(
si_link
l
);
93
void
slStandardInit
();
94
static
inline
si_link
slCopy
(
si_link
l
)
95
{
96
l
->ref++;
97
return
l
;
98
}
99
100
101
static
inline
char
*
slString
(
si_link
l
)
102
{
103
if
(
l
->name !=
NULL
)
104
{
105
return
omStrDup
(
l
->name);
106
}
107
else
108
{
109
return
omStrDup
(
""
);
110
}
111
}
112
113
EXTERN_VAR
omBin
s_si_link_extension_bin
;
114
EXTERN_VAR
omBin
sip_link_bin
;
115
EXTERN_VAR
omBin
ip_link_bin
;
116
117
int
slStatusSsiL
(
lists
L,
int
timeout,
BOOLEAN
* ignore=
NULL
);
118
int
ssiBatch
(
const
char
*host,
const
char
* port);
119
120
121
typedef
struct
122
{
123
leftv
u
;
124
si_link
l
;
125
void
*
next
;
126
}
link_struct
;
127
128
typedef
link_struct
*
link_list
;
129
130
EXTERN_VAR
link_list
ssiToBeClosed
;
131
EXTERN_VAR
volatile
BOOLEAN
ssiToBeClosed_inactive
;
132
BOOLEAN
ssiWrite2
(
si_link
l
,
leftv
res
,
leftv
v
);
133
#endif
// SILINK_H
attrib.h
BITSET
#define BITSET
Definition
auxiliary.h:85
BOOLEAN
int BOOLEAN
Definition
auxiliary.h:88
l
int l
Definition
cfEzgcd.cc:100
res
CanonicalForm res
Definition
facAbsFact.cc:60
v
const Variable & v
< [in] a sqrfree bivariate poly
Definition
facBivar.h:39
EXTERN_VAR
#define EXTERN_VAR
Definition
globaldefs.h:6
h
STATIC_VAR Poly * h
Definition
janet.cc:971
lists.h
lists
slists * lists
Definition
mpr_numeric.h:146
omStrDup
#define omStrDup(s)
Definition
omAllocDecl.h:263
NULL
#define NULL
Definition
omList.c:12
omBin
omBin_t * omBin
Definition
omStructs.h:12
omalloc.h
sip_link_bin
VAR omBin sip_link_bin
Definition
silink.cc:40
s_si_link_extension_bin
VAR omBin s_si_link_extension_bin
Definition
silink.cc:39
ip_link_bin
VAR omBin ip_link_bin
Definition
silink.cc:41
slWrite
BOOLEAN slWrite(si_link l, leftv v)
Definition
silink.cc:307
s_si_link_extension::Close
slCloseProc Close
Definition
silink.h:40
s_si_link_extension::next
si_link_extension next
Definition
silink.h:38
sip_link::m
si_link_extension m
Definition
silink.h:55
ssiToBeClosed_inactive
EXTERN_VAR volatile BOOLEAN ssiToBeClosed_inactive
Definition
silink.h:131
s_si_link_extension::Status
slStatusProc Status
Definition
silink.h:48
slPrepClose
BOOLEAN slPrepClose(si_link l)
Definition
silink.cc:223
s_si_link_extension::Write
slWriteProc Write
Definition
silink.h:45
link_list
link_struct * link_list
Definition
silink.h:128
slCopy
static si_link slCopy(si_link l)
Definition
silink.h:94
sip_link::name
char * name
Definition
silink.h:57
slKill
void slKill(si_link l)
Definition
silink.cc:146
slString
static char * slString(si_link l)
Definition
silink.h:101
slDump
BOOLEAN slDump(si_link l)
Definition
silink.cc:344
slRead2Proc
leftv(* slRead2Proc)(si_link l, leftv a)
Definition
silink.h:30
slGetDump
BOOLEAN slGetDump(si_link l)
Definition
silink.cc:374
s_si_link_extension::Read
slReadProc Read
Definition
silink.h:43
slWriteProc
BOOLEAN(* slWriteProc)(si_link l, leftv lv)
Definition
silink.h:25
s_si_link_extension::SetRing
slSetRingProc SetRing
Definition
silink.h:49
s_si_link_extension::GetDump
slGetDumpProc GetDump
Definition
silink.h:47
si_link
ip_link * si_link
Definition
silink.h:20
s_si_link_extension::Read2
slRead2Proc Read2
Definition
silink.h:44
link_struct::next
void * next
Definition
silink.h:125
sip_link::flags
BITSET flags
Definition
silink.h:59
sip_link::data
void * data
Definition
silink.h:58
slStatusSsiL
int slStatusSsiL(lists L, int timeout, BOOLEAN *ignore=NULL)
Definition
ssiLink.cc:2919
slKillProc
BOOLEAN(* slKillProc)(si_link l)
Definition
silink.h:28
slStatus
const char * slStatus(si_link l, const char *request)
Definition
silink.cc:156
sip_link::mode
char * mode
Definition
silink.h:56
slClose
BOOLEAN slClose(si_link l)
Definition
silink.cc:240
slReadProc
leftv(* slReadProc)(si_link l)
Definition
silink.h:29
link_struct::u
leftv u
Definition
silink.h:123
slRead
leftv slRead(si_link l, leftv a=NULL)
Definition
silink.cc:261
s_si_link_extension::Dump
slDumpProc Dump
Definition
silink.h:46
link_struct::l
si_link l
Definition
silink.h:124
s_si_link_extension::Kill
slKillProc Kill
Definition
silink.h:42
ssiWrite2
BOOLEAN ssiWrite2(si_link l, leftv res, leftv v)
Definition
ssiLink.cc:3475
s_si_link_extension::Open
slOpenProc Open
Definition
silink.h:39
slGetDumpProc
BOOLEAN(* slGetDumpProc)(si_link l)
Definition
silink.h:32
s_si_link_extension::type
const char * type
Definition
silink.h:50
slPrepCloseProc
BOOLEAN(* slPrepCloseProc)(si_link l)
Definition
silink.h:27
ssiBatch
int ssiBatch(const char *host, const char *port)
Definition
ssiLink.cc:3123
slCleanUp
void slCleanUp(si_link l)
Definition
silink.cc:127
slStandardInit
void slStandardInit()
Definition
asciiLink.cc:633
slStatusProc
const char *(* slStatusProc)(si_link l, const char *request)
Definition
silink.h:33
slOpenProc
BOOLEAN(* slOpenProc)(si_link l, short flag, leftv h)
Definition
silink.h:24
ssiToBeClosed
EXTERN_VAR link_list ssiToBeClosed
Definition
silink.h:130
slInit
BOOLEAN slInit(si_link l, char *str)
Definition
silink.cc:48
sip_link::ref
short ref
Definition
silink.h:60
slSetRingProc
BOOLEAN(* slSetRingProc)(si_link l, ring r, BOOLEAN send)
Definition
silink.h:34
slCloseProc
BOOLEAN(* slCloseProc)(si_link l)
Definition
silink.h:26
s_si_link_extension::PrepClose
slPrepCloseProc PrepClose
Definition
silink.h:41
slDumpProc
BOOLEAN(* slDumpProc)(si_link l)
Definition
silink.h:31
slOpen
BOOLEAN slOpen(si_link l, short flag, leftv h)
Definition
silink.cc:194
link_struct
Definition
silink.h:122
s_si_link_extension
Definition
silink.h:37
sip_link
Definition
silink.h:54
sing_dbm.h
structs.h
leftv
sleftv * leftv
Definition
structs.h:53
Generated on
for My Project by
doxygen 1.17.0
for
Singular