/usr/include/singular/singular/Singular/links/silink.h is in libsingular4-dev-common 1:4.0.3-p3+ds-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | #ifndef SILINK_H
#define SILINK_H
/****************************************
* Computer Algebra System SINGULAR *
****************************************/
/*
* ABSTRACT: general interface to links
*/
#include <singularconfig.h>
#include <kernel/structs.h>
#include <Singular/links/sing_dbm.h>
#include <Singular/lists.h>
#include <Singular/attrib.h>
struct sip_link;
typedef struct sip_link ip_link;
typedef ip_link * si_link;
// extension links:
typedef BOOLEAN (*slOpenProc)(si_link l, short flag, leftv h);
typedef BOOLEAN (*slWriteProc)(si_link l, leftv lv);
typedef BOOLEAN (*slCloseProc)(si_link l);
typedef BOOLEAN (*slPrepCloseProc)(si_link l);
typedef BOOLEAN (*slKillProc)(si_link l);
typedef leftv (*slReadProc)(si_link l);
typedef leftv (*slRead2Proc)(si_link l, leftv a);
typedef BOOLEAN (*slDumpProc)(si_link l);
typedef BOOLEAN (*slGetDumpProc)(si_link l);
typedef const char* (*slStatusProc)(si_link l, const char *request);
typedef BOOLEAN (*slSetRingProc)(si_link l, ring r, BOOLEAN send);
struct s_si_link_extension
{
si_link_extension next;
slOpenProc Open;
slCloseProc Close;
slPrepCloseProc PrepClose;
slKillProc Kill;
slReadProc Read;
slRead2Proc Read2;
slWriteProc Write;
slDumpProc Dump;
slGetDumpProc GetDump;
slStatusProc Status;
slSetRingProc SetRing;
const char *type;
};
struct sip_link
{
si_link_extension m; // methods
char *mode;
char *name; // used for filename and/or further specs
void *data; // the link itself
BITSET flags; // 0=close open = 1: read = 2: write = 3
short ref; // reference counter
};
// flags:
#define SI_LINK_CLOSE 0
#define SI_LINK_OPEN 1
#define SI_LINK_READ 2
#define SI_LINK_WRITE 4
// tests:
#define SI_LINK_CLOSE_P(l) (!(l)->flags)
#define SI_LINK_OPEN_P(l) ((l)->flags & SI_LINK_OPEN)
#define SI_LINK_W_OPEN_P(l) ((l)->flags & SI_LINK_WRITE)
#define SI_LINK_R_OPEN_P(l) ((l)->flags & SI_LINK_READ)
#define SI_LINK_RW_OPEN_P(l) (SI_LINK_W_OPEN_P(l) && SI_LINK_R_OPEN_P(l))
#define SI_LINK_SET_CLOSE_P(l) ((l)->flags = SI_LINK_CLOSE)
#define SI_LINK_SET_OPEN_P(l, flag) ((l)->flags |= SI_LINK_OPEN |flag)
#define SI_LINK_SET_W_OPEN_P(l) ((l)->flags |= (SI_LINK_OPEN | SI_LINK_WRITE))
#define SI_LINK_SET_R_OPEN_P(l) ((l)->flags |= (SI_LINK_OPEN | SI_LINK_READ))
#define SI_LINK_SET_RW_OPEN_P(l) ((l)->flags |= (SI_LINK_OPEN | SI_LINK_READ | SI_LINK_WRITE))
BOOLEAN slOpen(si_link l, short flag, leftv h);
BOOLEAN slClose(si_link l);
BOOLEAN slPrepClose(si_link l);
leftv slRead(si_link l,leftv a=NULL);
BOOLEAN slWrite(si_link l, leftv v);
BOOLEAN slDump(si_link l);
BOOLEAN slGetDump(si_link l);
const char* slStatus(si_link l, const char *request);
BOOLEAN slInit(si_link l, char *str);
void slKill(si_link l);
void slCleanUp(si_link l);
void slStandardInit();
inline si_link slCopy(si_link l)
{
l->ref++;
return l;
}
#include <omalloc/omalloc.h>
inline char* slString(si_link l)
{
if (l->name != NULL)
{
return omStrDup(l->name);
}
else
{
return omStrDup("");
}
}
extern omBin s_si_link_extension_bin;
extern omBin sip_link_bin;
extern omBin ip_link_bin;
int slStatusSsiL(lists L, int timeout);
int ssiBatch(const char *host, const char * port);
typedef struct
{
leftv u;
si_link l;
void * next;
} link_struct;
typedef link_struct* link_list;
extern link_list ssiToBeClosed;
extern volatile BOOLEAN ssiToBeClosed_inactive;
#endif // SILINK_H
|