EPICS Base  7.0.6.1
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
dbStaticLib.h
1 /*************************************************************************\
2 * Copyright (c) 2009 UChicago Argonne LLC, 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 * SPDX-License-Identifier: EPICS
7 * EPICS BASE is distributed subject to a Software License Agreement found
8 * in file LICENSE that is included with this distribution.
9 \*************************************************************************/
10 /*
11  * Author: Marty Kraimer
12  * Date: 06-08-93
13  */
14 
15 #ifndef INCdbStaticLibh
16 #define INCdbStaticLibh 1
17 
18 #include <stddef.h>
19 #include <stdio.h>
20 
21 #include "dbCoreAPI.h"
22 #include "dbFldTypes.h"
23 #include "dbBase.h"
24 #include "link.h"
25 #include "errMdef.h"
26 #include "cantProceed.h"
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 typedef dbBase DBBASE;
33 
34 typedef struct dbEntry {
35  DBBASE *pdbbase;
36  dbRecordType *precordType;
37  dbFldDes *pflddes;
38  dbRecordNode *precnode;
39  dbInfoNode *pinfonode;
40  void *pfield;
41  char *message;
42  short indfield;
43 } DBENTRY;
44 
45 /* Static database access routines*/
46 DBCORE_API DBBASE * dbAllocBase(void);
47 DBCORE_API void dbFreeBase(DBBASE *pdbbase);
48 DBCORE_API DBENTRY * dbAllocEntry(DBBASE *pdbbase);
49 DBCORE_API void dbFreeEntry(DBENTRY *pdbentry);
50 DBCORE_API void dbInitEntry(DBBASE *pdbbase,
51  DBENTRY *pdbentry);
52 
53 DBCORE_API void dbFinishEntry(DBENTRY *pdbentry);
54 DBCORE_API DBENTRY * dbCopyEntry(DBENTRY *pdbentry);
55 DBCORE_API void dbCopyEntryContents(DBENTRY *pfrom,
56  DBENTRY *pto);
57 
58 DBCORE_API extern int dbBptNotMonotonic;
59 
60 DBCORE_API long dbReadDatabase(DBBASE **ppdbbase,
61  const char *filename, const char *path, const char *substitutions);
62 DBCORE_API long dbReadDatabaseFP(DBBASE **ppdbbase,
63  FILE *fp, const char *path, const char *substitutions);
64 DBCORE_API long dbPath(DBBASE *pdbbase, const char *path);
65 DBCORE_API long dbAddPath(DBBASE *pdbbase, const char *path);
66 DBCORE_API char * dbGetPromptGroupNameFromKey(DBBASE *pdbbase,
67  const short key);
68 DBCORE_API short dbGetPromptGroupKeyFromName(DBBASE *pdbbase,
69  const char *name);
70 DBCORE_API long dbWriteRecord(DBBASE *ppdbbase,
71  const char *filename, const char *precordTypename, int level);
72 DBCORE_API long dbWriteRecordFP(DBBASE *ppdbbase,
73  FILE *fp, const char *precordTypename, int level);
74 DBCORE_API long dbWriteMenu(DBBASE *pdbbase,
75  const char *filename, const char *menuName);
76 DBCORE_API long dbWriteMenuFP(DBBASE *pdbbase,
77  FILE *fp, const char *menuName);
78 DBCORE_API long dbWriteRecordType(DBBASE *pdbbase,
79  const char *filename, const char *recordTypeName);
80 DBCORE_API long dbWriteRecordTypeFP(DBBASE *pdbbase,
81  FILE *fp, const char *recordTypeName);
82 DBCORE_API long dbWriteDevice(DBBASE *pdbbase,
83  const char *filename);
84 DBCORE_API long dbWriteDeviceFP(DBBASE *pdbbase, FILE *fp);
85 DBCORE_API long dbWriteDriver(DBBASE *pdbbase,
86  const char *filename);
87 DBCORE_API long dbWriteDriverFP(DBBASE *pdbbase, FILE *fp);
88 DBCORE_API long dbWriteLinkFP(DBBASE *pdbbase, FILE *fp);
89 DBCORE_API long dbWriteRegistrarFP(DBBASE *pdbbase, FILE *fp);
90 DBCORE_API long dbWriteFunctionFP(DBBASE *pdbbase, FILE *fp);
91 DBCORE_API long dbWriteVariableFP(DBBASE *pdbbase, FILE *fp);
92 DBCORE_API long dbWriteBreaktable(DBBASE *pdbbase,
93  const char *filename);
94 DBCORE_API long dbWriteBreaktableFP(DBBASE *pdbbase,
95  FILE *fp);
96 
97 DBCORE_API long dbFindRecordType(DBENTRY *pdbentry,
98  const char *recordTypename);
99 DBCORE_API long dbFirstRecordType(DBENTRY *pdbentry);
100 DBCORE_API long dbNextRecordType(DBENTRY *pdbentry);
101 DBCORE_API char * dbGetRecordTypeName(DBENTRY *pdbentry);
102 DBCORE_API int dbGetNRecordTypes(DBENTRY *pdbentry);
103 DBCORE_API long dbPutRecordAttribute(DBENTRY *pdbentry,
104  const char *name, const char*value);
105 DBCORE_API long dbGetRecordAttribute(DBENTRY *pdbentry,
106  const char *name);
107 DBCORE_API long dbGetAttributePart(DBENTRY *pdbentry,
108  const char **ppname);
109 
110 DBCORE_API long dbFirstField(DBENTRY *pdbentry, int dctonly);
111 DBCORE_API long dbNextField(DBENTRY *pdbentry, int dctonly);
112 DBCORE_API int dbGetNFields(DBENTRY *pdbentry, int dctonly);
113 DBCORE_API char * dbGetFieldName(DBENTRY *pdbentry);
114 DBCORE_API int dbGetFieldDbfType(DBENTRY *pdbentry);
115 DBCORE_API char * dbGetDefault(DBENTRY *pdbentry);
116 DBCORE_API char * dbGetPrompt(DBENTRY *pdbentry);
117 DBCORE_API int dbGetPromptGroup(DBENTRY *pdbentry);
118 
119 DBCORE_API long dbCreateRecord(DBENTRY *pdbentry,
120  const char *pname);
121 DBCORE_API long dbDeleteRecord(DBENTRY *pdbentry);
122 DBCORE_API long dbFreeRecords(DBBASE *pdbbase);
123 DBCORE_API long dbFindRecordPart(DBENTRY *pdbentry,
124  const char **ppname);
125 DBCORE_API long dbFindRecord(DBENTRY *pdbentry,
126  const char *pname);
127 
128 DBCORE_API long dbFirstRecord(DBENTRY *pdbentry);
129 DBCORE_API long dbNextRecord(DBENTRY *pdbentry);
130 DBCORE_API int dbGetNRecords(DBENTRY *pdbentry);
131 DBCORE_API int dbGetNAliases(DBENTRY *pdbentry);
132 DBCORE_API char * dbGetRecordName(DBENTRY *pdbentry);
133 DBCORE_API long dbCopyRecord(DBENTRY *pdbentry,
134  const char *newRecordName, int overWriteOK);
135 
136 DBCORE_API long dbVisibleRecord(DBENTRY *pdbentry);
137 DBCORE_API long dbInvisibleRecord(DBENTRY *pdbentry);
138 DBCORE_API int dbIsVisibleRecord(DBENTRY *pdbentry);
139 
140 DBCORE_API long dbCreateAlias(DBENTRY *pdbentry,
141  const char *paliasName);
142 DBCORE_API int dbIsAlias(DBENTRY *pdbentry);
143 /* Follow alias to actual record */
144 DBCORE_API int dbFollowAlias(DBENTRY *pdbentry);
145 DBCORE_API long dbDeleteAliases(DBENTRY *pdbentry);
146 
147 DBCORE_API long dbFindFieldPart(DBENTRY *pdbentry,
148  const char **ppname);
149 DBCORE_API long dbFindField(DBENTRY *pdbentry,
150  const char *pfieldName);
151 DBCORE_API int dbFoundField(DBENTRY *pdbentry);
152 DBCORE_API char * dbGetString(DBENTRY *pdbentry);
153 DBCORE_API long dbPutString(DBENTRY *pdbentry,
154  const char *pstring);
155 DBCORE_API char * dbVerify(DBENTRY *pdbentry,
156  const char *pstring);
157 DBCORE_API int dbIsDefaultValue(DBENTRY *pdbentry);
158 
159 DBCORE_API long dbFirstInfo(DBENTRY *pdbentry);
160 DBCORE_API long dbNextInfo(DBENTRY *pdbentry);
161 DBCORE_API long dbFindInfo(DBENTRY *pdbentry,
162  const char *name);
163 DBCORE_API long dbNextMatchingInfo(DBENTRY *pdbentry,
164  const char *pattern);
165 DBCORE_API long dbDeleteInfo(DBENTRY *pdbentry);
166 DBCORE_API const char * dbGetInfoName(DBENTRY *pdbentry);
167 DBCORE_API const char * dbGetInfoString(DBENTRY *pdbentry);
168 DBCORE_API long dbPutInfoString(DBENTRY *pdbentry,
169  const char *string);
170 DBCORE_API long dbPutInfoPointer(DBENTRY *pdbentry,
171  void *pointer);
172 DBCORE_API void * dbGetInfoPointer(DBENTRY *pdbentry);
173 DBCORE_API const char * dbGetInfo(DBENTRY *pdbentry,
174  const char *name);
175 DBCORE_API long dbPutInfo(DBENTRY *pdbentry,
176  const char *name, const char *string);
177 
178 DBCORE_API brkTable * dbFindBrkTable(DBBASE *pdbbase,
179  const char *name);
180 
181 DBCORE_API const char * dbGetFieldTypeString(int dbfType);
182 DBCORE_API int dbFindFieldType(const char *type);
183 
184 DBCORE_API dbMenu * dbFindMenu(DBBASE *pdbbase,
185  const char *name);
186 DBCORE_API char ** dbGetMenuChoices(DBENTRY *pdbentry);
187 DBCORE_API int dbGetMenuIndex(DBENTRY *pdbentry);
188 DBCORE_API long dbPutMenuIndex(DBENTRY *pdbentry, int index);
189 DBCORE_API int dbGetNMenuChoices(DBENTRY *pdbentry);
190 DBCORE_API char * dbGetMenuStringFromIndex(DBENTRY *pdbentry,
191  int index);
192 DBCORE_API int dbGetMenuIndexFromString(DBENTRY *pdbentry,
193  const char *choice);
194 
195 DBCORE_API drvSup * dbFindDriver(dbBase *pdbbase,
196  const char *name);
197 DBCORE_API char * dbGetRelatedField(DBENTRY *pdbentry);
198 
199 DBCORE_API linkSup * dbFindLinkSup(dbBase *pdbbase,
200  const char *name);
201 
202 DBCORE_API int dbGetNLinks(DBENTRY *pdbentry);
203 DBCORE_API long dbGetLinkField(DBENTRY *pdbentry, int index);
204 
205 /* Dump routines */
206 DBCORE_API void dbDumpPath(DBBASE *pdbbase);
207 DBCORE_API void dbDumpRecord(DBBASE *pdbbase,
208  const char *precordTypename, int level);
209 DBCORE_API void dbDumpMenu(DBBASE *pdbbase,
210  const char *menuName);
211 DBCORE_API void dbDumpRecordType(DBBASE *pdbbase,
212  const char *recordTypeName);
213 DBCORE_API void dbDumpField(DBBASE *pdbbase,
214  const char *recordTypeName, const char *fname);
215 DBCORE_API void dbDumpDevice(DBBASE *pdbbase,
216  const char *recordTypeName);
217 DBCORE_API void dbDumpDriver(DBBASE *pdbbase);
218 DBCORE_API void dbDumpLink(DBBASE *pdbbase);
219 DBCORE_API void dbDumpRegistrar(DBBASE *pdbbase);
220 DBCORE_API void dbDumpFunction(DBBASE *pdbbase);
221 DBCORE_API void dbDumpVariable(DBBASE *pdbbase);
222 DBCORE_API void dbDumpBreaktable(DBBASE *pdbbase,
223  const char *name);
224 DBCORE_API void dbPvdDump(DBBASE *pdbbase, int verbose);
225 DBCORE_API void dbReportDeviceConfig(DBBASE *pdbbase,
226  FILE *report);
227 
228 /* Misc useful routines*/
229 #define dbCalloc(nobj,size) callocMustSucceed(nobj,size,"dbCalloc")
230 #define dbMalloc(size) mallocMustSucceed(size,"dbMalloc")
231 DBCORE_API void dbCatString(char **string, int *stringLength,
232  char *pnew, char *separator);
233 
234 extern int dbStaticDebug;
235 extern int dbConvertStrict;
236 
237 #define S_dbLib_recordTypeNotFound (M_dbLib|1) /* Record Type does not exist */
238 #define S_dbLib_recExists (M_dbLib|3) /* Record Already exists */
239 #define S_dbLib_recNotFound (M_dbLib|5) /* Record Not Found */
240 #define S_dbLib_flddesNotFound (M_dbLib|7) /* Field Description Not Found */
241 #define S_dbLib_fieldNotFound (M_dbLib|9) /* Field Not Found */
242 #define S_dbLib_badField (M_dbLib|11) /* Bad Field value */
243 #define S_dbLib_menuNotFound (M_dbLib|13) /* Menu not found */
244 #define S_dbLib_badLink (M_dbLib|15) /* Bad Link Field */
245 #define S_dbLib_nameLength (M_dbLib|17) /* Record Name is too long */
246 #define S_dbLib_noRecSup (M_dbLib|19) /* Record support not found */
247 #define S_dbLib_strLen (M_dbLib|21) /* String is too long */
248 #define S_dbLib_noSizeOffset (M_dbLib|23) /* Missing SizeOffset Routine - No record support? */
249 #define S_dbLib_outMem (M_dbLib|27) /* Out of memory */
250 #define S_dbLib_infoNotFound (M_dbLib|29) /* Info item Not Found */
251 
252 #ifdef __cplusplus
253 }
254 #endif
255 
256 #endif /*INCdbStaticLibh*/
Definition: link.h:175
Definition: dbBase.h:25
Routines for code that can&#39;t continue or return after an error.
Definition: dbBase.h:33
Definition: dbBase.h:171