127 lines
3.6 KiB
C
127 lines
3.6 KiB
C
/*************************************************************************\
|
|
* Copyright (c) 2002 The University of Chicago, as Operator of Argonne
|
|
* National Laboratory.
|
|
* Copyright (c) 2002 The Regents of the University of California, as
|
|
* Operator of Los Alamos National Laboratory.
|
|
* SPDX-License-Identifier: EPICS
|
|
* EPICS Base is distributed subject to a Software License Agreement found
|
|
* in file LICENSE that is included with this distribution.
|
|
\*************************************************************************/
|
|
/* dbStaticPvt.h */
|
|
/*
|
|
* Author: Marty Kraimer
|
|
* Date: 06Jun95
|
|
*/
|
|
|
|
#ifndef INCdbStaticPvth
|
|
#define INCdbStaticPvth 1
|
|
|
|
#include "dbCoreAPI.h"
|
|
#include "dbStaticLib.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*Following are not intended for client code */
|
|
dbDeviceMenu *dbGetDeviceMenu(DBENTRY *pdbentry);
|
|
void dbFreeLinkContents(struct link *plink);
|
|
void dbFreePath(DBBASE *pdbbase);
|
|
int dbIsMacroOk(DBENTRY *pdbentry);
|
|
|
|
/*The following routines have different versions for run-time no-run-time*/
|
|
long dbAllocRecord(DBENTRY *pdbentry,const char *precordName);
|
|
long dbFreeRecord(DBENTRY *pdbentry);
|
|
|
|
long dbGetFieldAddress(DBENTRY *pdbentry);
|
|
char *dbRecordName(DBENTRY *pdbentry);
|
|
|
|
char *dbGetStringNum(DBENTRY *pdbentry);
|
|
long dbPutStringNum(DBENTRY *pdbentry,const char *pstring);
|
|
|
|
void dbMsgPrint(
|
|
DBENTRY *pdbentry, EPICS_PRINTF_FMT(const char *fmt), ...
|
|
) EPICS_PRINTF_STYLE(2,3);
|
|
|
|
void dbPutStringSuggest(DBENTRY *pdbentry, const char *pstring);
|
|
|
|
DBCORE_API
|
|
const char *dbOpenFile(DBBASE *pdbbase,const char *filename,FILE **fp);
|
|
|
|
struct jlink;
|
|
|
|
typedef struct dbLinkInfo {
|
|
short ltype;
|
|
|
|
/* full link string for CONSTANT and PV_LINK,
|
|
* parm string for HW links, JSON for JSON_LINK
|
|
*/
|
|
char *target;
|
|
|
|
/* for PV_LINK */
|
|
short modifiers;
|
|
|
|
/* for HW links */
|
|
char hwid[6]; /* one extra element for a nil */
|
|
int hwnums[5];
|
|
|
|
/* for JSON_LINK */
|
|
struct jlink *jlink;
|
|
} dbLinkInfo;
|
|
|
|
long dbInitRecordLinks(dbRecordType *rtyp, struct dbCommon *prec);
|
|
|
|
/* Parse link string. no record locks needed.
|
|
* on success caller must free pinfo->target
|
|
*/
|
|
DBCORE_API long dbParseLink(const char *str, short ftype, dbLinkInfo *pinfo);
|
|
/* Check if link type allow the parsed link value pinfo
|
|
* to be assigned to the given link.
|
|
* Record containing plink must be locked.
|
|
* Frees pinfo->target on failure.
|
|
*/
|
|
long dbCanSetLink(DBLINK *plink, dbLinkInfo *pinfo, devSup *devsup);
|
|
/* Set link field. source record must be locked (target record too
|
|
* when a DB_LINK is created)
|
|
* Unconditionally takes ownership of pinfo->target
|
|
*/
|
|
long dbSetLink(DBLINK *plink, dbLinkInfo *pinfo, devSup *dset);
|
|
/* Free dbLinkInfo storage */
|
|
DBCORE_API void dbFreeLinkInfo(dbLinkInfo *pinfo);
|
|
|
|
/* The following is for path */
|
|
typedef struct dbPathNode {
|
|
ELLNODE node;
|
|
char *directory;
|
|
} dbPathNode;
|
|
|
|
/* Element of the global gui group list */
|
|
typedef struct dbGuiGroup {
|
|
ELLNODE node;
|
|
short key;
|
|
char *name;
|
|
} dbGuiGroup;
|
|
|
|
/*The following are in dbPvdLib.c*/
|
|
/*directory*/
|
|
typedef struct{
|
|
ELLNODE node;
|
|
dbRecordType *precordType;
|
|
dbRecordNode *precnode;
|
|
}PVDENTRY;
|
|
DBCORE_API int dbPvdTableSize(int size);
|
|
extern int dbStaticDebug;
|
|
void dbPvdInitPvt(DBBASE *pdbbase);
|
|
PVDENTRY *dbPvdFind(DBBASE *pdbbase,const char *name,size_t lenname);
|
|
PVDENTRY *dbPvdAdd(DBBASE *pdbbase,dbRecordType *precordType,dbRecordNode *precnode);
|
|
void dbPvdDelete(DBBASE *pdbbase,dbRecordNode *precnode);
|
|
void dbPvdFreeMem(DBBASE *pdbbase);
|
|
|
|
DBCORE_API
|
|
char** dbCompleteRecord(const char *word);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /*INCdbStaticPvth*/
|