This is Unofficial EPICS BASE Doxygen Site
dbStaticPvt.h
Go to the documentation of this file.
1 /*************************************************************************\
2 * Copyright (c) 2002 The University of Chicago, as Operator of Argonne
3 * National Laboratory.
4 * Copyright (c) 2002 The Regents of the University of California, as
5 * Operator of Los Alamos National Laboratory.
6 * EPICS BASE Versions 3.13.7
7 * and higher are distributed subject to a Software License Agreement found
8 * in file LICENSE that is included with this distribution.
9 \*************************************************************************/
10 /* dbStaticPvt.h */
11 /*
12  * Author: Marty Kraimer
13  * Date: 06Jun95
14  */
15 
16 #ifndef INCdbStaticPvth
17 #define INCdbStaticPvth 1
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 /*Following are not intended for client code */
25 void dbFreeLinkContents(struct link *plink);
26 void dbFreePath(DBBASE *pdbbase);
27 int dbIsMacroOk(DBENTRY *pdbentry);
28 
29 /*The following routines have different versions for run-time no-run-time*/
30 long dbAllocRecord(DBENTRY *pdbentry,const char *precordName);
31 long dbFreeRecord(DBENTRY *pdbentry);
32 
33 long dbGetFieldAddress(DBENTRY *pdbentry);
34 char *dbRecordName(DBENTRY *pdbentry);
35 
36 char *dbGetStringNum(DBENTRY *pdbentry);
37 long dbPutStringNum(DBENTRY *pdbentry,const char *pstring);
38 
39 struct jlink;
40 
41 typedef struct dbLinkInfo {
42  short ltype;
43 
44  /* full link string for CONSTANT and PV_LINK,
45  * parm string for HW links, JSON for JSON_LINK
46  */
47  char *target;
48 
49  /* for PV_LINK */
50  short modifiers;
51 
52  /* for HW links */
53  char hwid[6]; /* one extra element for a nil */
54  int hwnums[5];
55 
56  /* for JSON_LINK */
57  struct jlink *jlink;
58 } dbLinkInfo;
59 
60 long dbInitRecordLinks(dbRecordType *rtyp, struct dbCommon *prec);
61 
62 /* Parse link string. no record locks needed.
63  * on success caller must free pinfo->target
64  */
65 epicsShareFunc long dbParseLink(const char *str, short ftype, dbLinkInfo *pinfo);
66 /* Check if link type allow the parsed link value pinfo
67  * to be assigned to the given link.
68  * Record containing plink must be locked.
69  * Frees pinfo->target on failure.
70  */
71 long dbCanSetLink(DBLINK *plink, dbLinkInfo *pinfo, devSup *devsup);
72 /* Set link field. source record must be locked (target record too
73  * when a DB_LINK is created)
74  * Unconditionally takes ownership of pinfo->target
75  */
76 long dbSetLink(DBLINK *plink, dbLinkInfo *pinfo, devSup *dset);
77 /* Free dbLinkInfo storage */
79 
80 /* The following is for path */
81 typedef struct dbPathNode {
83  char *directory;
84 } dbPathNode;
85 
86 /* Element of the global gui group list */
87 typedef struct dbGuiGroup {
89  short key;
90  char *name;
91 } dbGuiGroup;
92 
93 /*The following are in dbPvdLib.c*/
94 /*directory*/
95 typedef struct{
99 }PVDENTRY;
100 epicsShareFunc int dbPvdTableSize(int size);
101 extern int dbStaticDebug;
102 void dbPvdInitPvt(DBBASE *pdbbase);
103 PVDENTRY *dbPvdFind(DBBASE *pdbbase,const char *name,size_t lenname);
104 PVDENTRY *dbPvdAdd(DBBASE *pdbbase,dbRecordType *precordType,dbRecordNode *precnode);
105 void dbPvdDelete(DBBASE *pdbbase,dbRecordNode *precnode);
106 void dbPvdFreeMem(DBBASE *pdbbase);
107 
108 #ifdef __cplusplus
109 }
110 #endif
111 #endif /*INCdbStaticPvth*/
ELLNODE node
Definition: dbStaticPvt.h:82
epicsShareFunc int dbPvdTableSize(int size)
Definition: dbPvdLib.c:46
void dbFreeLinkContents(struct link *plink)
Definition: dbStaticLib.c:109
epicsShareFunc long dbParseLink(const char *str, short ftype, dbLinkInfo *pinfo)
Definition: dbStaticLib.c:2226
epicsShareFunc void dbFreeLinkInfo(dbLinkInfo *pinfo)
Definition: dbStaticLib.c:2216
struct jlink * jlink
Definition: dbStaticPvt.h:57
short key
Definition: dbStaticPvt.h:89
void dbPvdFreeMem(DBBASE *pdbbase)
Definition: dbPvdLib.c:166
#define epicsShareFunc
Definition: shareLib.h:209
ELLNODE node
Definition: dbStaticPvt.h:88
#define str(v)
long dbSetLink(DBLINK *plink, dbLinkInfo *pinfo, devSup *dset)
Definition: dbStaticLib.c:2507
struct dbGuiGroup dbGuiGroup
char * dbRecordName(DBENTRY *pdbentry)
Definition: dbStaticRun.c:201
void dbPvdDelete(DBBASE *pdbbase, dbRecordNode *precnode)
Definition: dbPvdLib.c:140
Definition: devSup.h:140
ELLNODE node
Definition: dbStaticPvt.h:96
int dbStaticDebug
Definition: dbStaticLib.c:49
short modifiers
Definition: dbStaticPvt.h:50
long dbInitRecordLinks(dbRecordType *rtyp, struct dbCommon *prec)
Definition: dbStaticLib.c:2151
void dbPvdInitPvt(DBBASE *pdbbase)
Definition: dbPvdLib.c:63
char * directory
Definition: dbStaticPvt.h:83
PVDENTRY * dbPvdFind(DBBASE *pdbbase, const char *name, size_t lenname)
Definition: dbPvdLib.c:82
Definition: dbBase.h:38
long dbPutStringNum(DBENTRY *pdbentry, const char *pstring)
Definition: dbStaticRun.c:383
void dbFreePath(DBBASE *pdbbase)
Definition: dbStaticLib.c:140
char * name
Definition: dbStaticPvt.h:90
List node type.
Definition: ellLib.h:45
struct dbPathNode dbPathNode
long dbFreeRecord(DBENTRY *pdbentry)
Definition: dbStaticRun.c:174
dbRecordNode * precnode
Definition: dbStaticPvt.h:98
int hwnums[5]
Definition: dbStaticPvt.h:54
long dbAllocRecord(DBENTRY *pdbentry, const char *precordName)
Definition: dbStaticRun.c:69
struct dbLinkInfo dbLinkInfo
short ltype
Definition: dbStaticPvt.h:42
char * dbGetStringNum(DBENTRY *pdbentry)
Definition: dbStaticLib.c:2040
long dbGetFieldAddress(DBENTRY *pdbentry)
Definition: dbStaticRun.c:187
Definition: dbBase.h:170
dbRecordType * precordType
Definition: dbStaticPvt.h:97
PVDENTRY * dbPvdAdd(DBBASE *pdbbase, dbRecordType *precordType, dbRecordNode *precnode)
Definition: dbPvdLib.c:105
int dbIsMacroOk(DBENTRY *pdbentry)
Definition: dbStaticRun.c:217
char * target
Definition: dbStaticPvt.h:47
int prec
Definition: reader.c:29
long dbCanSetLink(DBLINK *plink, dbLinkInfo *pinfo, devSup *devsup)
Definition: dbStaticLib.c:2375
dbDeviceMenu * dbGetDeviceMenu(DBENTRY *pdbentry)
Definition: dbStaticLib.c:336
char hwid[6]
Definition: dbStaticPvt.h:53