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 | * This file is distributed subject to a Software License Agreement found |
---|
7 | * in the file LICENSE that is included with this distribution. |
---|
8 | \*************************************************************************/ |
---|
9 | |
---|
10 | /* file: SDDS.h |
---|
11 | * purpose: define structures and prototypes for use with SDDS |
---|
12 | * format |
---|
13 | * |
---|
14 | * Michael Borland, 1993 |
---|
15 | $Log: not supported by cvs2svn $ |
---|
16 | Revision 1.85 2009/06/02 18:17:15 soliday |
---|
17 | Updated so that the MPI functions will be visable from shared libraries. |
---|
18 | |
---|
19 | Revision 1.84 2009/06/01 20:57:55 soliday |
---|
20 | Updated to work with SDDS_MPI_IO=0 |
---|
21 | |
---|
22 | Revision 1.83 2009/05/08 16:05:18 shang |
---|
23 | added MPI non native writing routines |
---|
24 | |
---|
25 | Revision 1.82 2008/11/11 21:05:18 soliday |
---|
26 | Updated to fix an issue on vxWorks. |
---|
27 | |
---|
28 | Revision 1.81 2008/09/18 20:15:07 soliday |
---|
29 | Added SDDS_SetColumnFromFloats and SDDS_GetColumnInFloats |
---|
30 | |
---|
31 | Revision 1.80 2008/08/04 14:04:57 shang |
---|
32 | added collective_io to MPI_DATASET structure |
---|
33 | |
---|
34 | Revision 1.79 2008/07/21 14:45:28 shang |
---|
35 | |
---|
36 | redefined SDDS_MPI_TotalRowsCount |
---|
37 | |
---|
38 | Revision 1.78 2008/04/14 18:36:57 shang |
---|
39 | now includes the definition of parallel SDDS. |
---|
40 | |
---|
41 | Revision 1.77 2007/10/12 18:03:44 shang |
---|
42 | added titleBuffer member to SDDS_DATASET |
---|
43 | |
---|
44 | Revision 1.76 2007/09/27 14:25:53 shang |
---|
45 | added SDDS_Parallel_InitializeOutput |
---|
46 | |
---|
47 | Revision 1.75 2006/12/07 16:40:54 soliday |
---|
48 | Added SDDS_GetToken2 and SDDS_ScanData2 which are now used when reading |
---|
49 | ascii array data. |
---|
50 | |
---|
51 | Revision 1.74 2006/09/15 18:15:48 borland |
---|
52 | Added prototype for SDDS_CheckEndOfFile. |
---|
53 | |
---|
54 | Revision 1.73 2006/08/31 15:06:55 soliday |
---|
55 | Updated to work with SDDS2 |
---|
56 | |
---|
57 | Revision 1.72 2006/05/25 21:23:55 shang |
---|
58 | added SDDS_GetColumnInShort |
---|
59 | |
---|
60 | Revision 1.71 2006/03/16 18:50:02 soliday |
---|
61 | Added the SDDS_BreakIntoLockedFile function. |
---|
62 | |
---|
63 | Revision 1.70 2005/11/04 22:46:59 soliday |
---|
64 | Updated code to be compiled by a 64 bit processor. |
---|
65 | |
---|
66 | Revision 1.69 2005/01/13 16:52:51 shang |
---|
67 | added is_string argument to is_memory() function to get the memory data type. |
---|
68 | |
---|
69 | Revision 1.68 2004/11/15 16:59:19 soliday |
---|
70 | Moved and renamed the procedures to write non native binary data from |
---|
71 | sddsendian to SDDSlib. |
---|
72 | |
---|
73 | Revision 1.67 2004/05/13 18:16:08 soliday |
---|
74 | Added SDDS_AppendToArrayVararg |
---|
75 | |
---|
76 | Revision 1.66 2004/02/27 21:57:57 soliday |
---|
77 | Modified SDDS_SetRowsOfInterest |
---|
78 | |
---|
79 | Revision 1.65 2004/02/27 21:14:08 soliday |
---|
80 | Modified SDDS_RegisterProgramName |
---|
81 | |
---|
82 | Revision 1.64 2004/02/05 22:56:15 soliday |
---|
83 | Added missing declaration for SDDS_CheckTabularData |
---|
84 | |
---|
85 | Revision 1.63 2003/10/17 16:11:29 soliday |
---|
86 | Added SDDS_VerifyColumnExists, SDDS_VerifyParameterExists, |
---|
87 | and SDDS_VerifyArrayExists |
---|
88 | |
---|
89 | Revision 1.62 2003/09/23 21:49:23 soliday |
---|
90 | Added the SDDS_MATCH_EXCLUDE_STRING definition. |
---|
91 | |
---|
92 | Revision 1.61 2003/09/11 22:31:35 soliday |
---|
93 | Added SDDS_GetParameterAsLong and SDDS_ConvertToLong |
---|
94 | |
---|
95 | Revision 1.60 2003/07/22 20:01:16 soliday |
---|
96 | Added support for Kylix. |
---|
97 | |
---|
98 | Revision 1.59 2003/02/15 22:54:16 borland |
---|
99 | Added prototype for SDDS_DoFSync(). |
---|
100 | |
---|
101 | Revision 1.58 2002/08/14 15:40:12 soliday |
---|
102 | Added Open License |
---|
103 | |
---|
104 | Revision 1.57 2002/07/25 00:10:37 borland |
---|
105 | Added definition of SDDS_PRINT_BUFLEN. |
---|
106 | |
---|
107 | Revision 1.56 2002/07/24 20:23:13 shang |
---|
108 | added SDDS_InitializeInputFromSearchPath() |
---|
109 | |
---|
110 | Revision 1.55 2002/06/15 02:28:00 borland |
---|
111 | Added SDDS_ForceActive(). |
---|
112 | |
---|
113 | Revision 1.54 2002/06/05 16:20:41 shang |
---|
114 | added SDDS_GetParameterAsString() |
---|
115 | |
---|
116 | Revision 1.53 2002/05/26 02:07:12 borland |
---|
117 | Added autoRecovered variable to SDDS_DATASET to allow recording fact that |
---|
118 | auto-read-recovery has occurred. |
---|
119 | |
---|
120 | Revision 1.52 2002/02/18 19:27:47 soliday |
---|
121 | Added the ability to enable or disable fsync. |
---|
122 | |
---|
123 | Revision 1.51 2002/01/15 22:46:05 soliday |
---|
124 | Added SetRowCountMode, UpdateRowCount, SetAutoReadRecovery |
---|
125 | |
---|
126 | Revision 1.50 2002/01/11 17:08:19 soliday |
---|
127 | Added SDDS_SyncDataSet |
---|
128 | |
---|
129 | Revision 1.49 2002/01/07 21:33:16 borland |
---|
130 | Added prototypes for SDDS_GetRowLimit() and SDDS_SetRowLimit(). |
---|
131 | |
---|
132 | Revision 1.48 2002/01/07 19:31:23 soliday |
---|
133 | Fixed declaration for SDDS_SetNoRowCounts. |
---|
134 | |
---|
135 | Revision 1.47 2001/12/22 21:21:32 soliday |
---|
136 | Fixed RW_ASSOCIATES typo. |
---|
137 | |
---|
138 | Revision 1.46 2001/12/21 03:29:39 soliday |
---|
139 | Fixed some declarations. |
---|
140 | |
---|
141 | Revision 1.45 2001/11/30 15:35:13 borland |
---|
142 | Changes by H. Shang: addition of SDDS_GotoPage() and changes required to |
---|
143 | support this. |
---|
144 | |
---|
145 | Revision 1.44 2001/02/19 18:01:25 borland |
---|
146 | Added prototype for SDDS_GetParameterByIndex(). |
---|
147 | |
---|
148 | Revision 1.43 2000/11/27 17:15:24 borland |
---|
149 | Fixed typo in previous change. |
---|
150 | |
---|
151 | Revision 1.42 2000/11/27 17:06:27 borland |
---|
152 | Added prototype for SDDS_FreeStringData(). |
---|
153 | |
---|
154 | Revision 1.41 2000/10/31 21:24:53 soliday |
---|
155 | Fixed the declarations of some new functions so that they work with WIN32. |
---|
156 | |
---|
157 | Revision 1.40 2000/10/24 01:16:45 borland |
---|
158 | Added prototype for SDDS_GetArrayInDoubles(). |
---|
159 | |
---|
160 | Revision 1.39 2000/09/19 20:14:11 borland |
---|
161 | Added function prototypes and changed some structures (SDDS_DATASET and |
---|
162 | SDDS_LAYOUT) to support reading of little/big endian files. |
---|
163 | |
---|
164 | Revision 1.38 2000/06/20 18:02:42 borland |
---|
165 | Added prototype for SDDS_SetDefaultIOBufferSize. |
---|
166 | |
---|
167 | Revision 1.37 2000/06/20 14:28:37 soliday |
---|
168 | Moved some definitions from SDDS_internal.h to SDDS.h so that sddsendian |
---|
169 | can access them. |
---|
170 | |
---|
171 | Revision 1.36 2000/04/14 16:36:12 soliday |
---|
172 | gzFile now is defined even when we are not using the zLib library. |
---|
173 | |
---|
174 | Revision 1.35 2000/04/13 17:04:58 soliday |
---|
175 | Fixed prototype for SDDS_NumberOfErrors and SDDS_ClearErrors |
---|
176 | |
---|
177 | Revision 1.34 2000/03/30 19:58:35 borland |
---|
178 | Added SDDS_DisconnectFile() and SDDS_ReconnectFile(), plus disconnected member |
---|
179 | to SDDS_LAYOUT structure. |
---|
180 | |
---|
181 | Revision 1.33 2000/03/30 17:26:57 soliday |
---|
182 | Added SDDS_InitializeAppendToPage |
---|
183 | |
---|
184 | Revision 1.32 2000/03/27 20:25:47 borland |
---|
185 | Added prototype for SDDS_ShortenTable(). |
---|
186 | |
---|
187 | Revision 1.31 2000/02/25 23:15:12 evans |
---|
188 | Added SDDS_Free. Memory allocated with SDDS_Malloc and others should |
---|
189 | be freed with SDDS_Free. It is necessary for WIN32 when degugging |
---|
190 | SDDS applications using the release version of the SDDS library |
---|
191 | because the memory allocation models for debug and release are |
---|
192 | inconsistent. |
---|
193 | |
---|
194 | Revision 1.30 2000/01/18 20:06:46 soliday |
---|
195 | Added support for ZLIB. |
---|
196 | |
---|
197 | Revision 1.29 1999/11/03 22:42:47 soliday |
---|
198 | Added WriteBinaryString declaration |
---|
199 | |
---|
200 | Revision 1.28 1999/09/16 22:03:15 soliday |
---|
201 | Modified the way global variables are exported and imported to a WIN32 dll |
---|
202 | |
---|
203 | Revision 1.27 1999/09/14 18:03:28 soliday |
---|
204 | Added export commands for WIN32 dll files. |
---|
205 | |
---|
206 | Revision 1.26 1999/06/01 19:17:05 borland |
---|
207 | Added SDDS_Calloc. |
---|
208 | |
---|
209 | Revision 1.25 1999/04/14 13:58:47 borland |
---|
210 | Fixed some function types and returns. |
---|
211 | |
---|
212 | Revision 1.24 1999/02/04 21:13:19 soliday |
---|
213 | Added prototype for SDDS_GetColumnsInLong |
---|
214 | |
---|
215 | Revision 1.23 1998/12/16 21:20:35 borland |
---|
216 | Modified prototypes for SDDS_TransferAll* functions and added required |
---|
217 | macros. |
---|
218 | |
---|
219 | Revision 1.22 1998/08/25 01:45:47 borland |
---|
220 | Moved SDDS_FILEBUFFER_SIZE definition here from SDDS_binary.c |
---|
221 | |
---|
222 | Revision 1.21 1998/06/30 21:30:48 borland |
---|
223 | Added prototype for SDDS_FreeStringArray(). |
---|
224 | |
---|
225 | Revision 1.20 1997/12/19 16:55:45 borland |
---|
226 | Fixed SDDS_RowCount macro (more parentheses). Added prototype for |
---|
227 | SDDS_Malloc. Added new "type": SDDS_ANY_FLOATING_TYPE. |
---|
228 | |
---|
229 | Revision 1.19 1997/07/08 14:41:17 borland |
---|
230 | Added SDDS_RowCount macro. |
---|
231 | |
---|
232 | * Revision 1.18 1996/07/05 16:36:02 borland |
---|
233 | * Modified prototypes for SDDS_PrintTypedValue and SDDS_SprintTypedValue |
---|
234 | * to include new mode argument. |
---|
235 | * |
---|
236 | * Revision 1.17 1996/03/27 17:51:08 borland |
---|
237 | * Added prototype and macros for SDDS_GetErrorMessages(). |
---|
238 | * |
---|
239 | * Revision 1.16 1996/03/21 20:07:32 borland |
---|
240 | * Added mode argument to prototype for SDDS_ReadPageSparse(). |
---|
241 | * |
---|
242 | * Revision 1.15 1996/03/21 16:39:50 borland |
---|
243 | * Added definitions for major revision of SDDS library. Added file buffer |
---|
244 | * structure to SDDS_DATASET. Added prototype for SDDS_ReadPageSparse(). |
---|
245 | * |
---|
246 | * Revision 1.14 1996/02/12 17:18:55 borland |
---|
247 | * Added prototype for SDDS_SetAutoCheckMode() and mode flags to go with it. |
---|
248 | * |
---|
249 | * Revision 1.13 1996/01/20 05:38:03 borland |
---|
250 | * Added prototypes for SDDS_AppendLayout(). |
---|
251 | * |
---|
252 | * Revision 1.12 1996/01/19 00:18:09 borland |
---|
253 | * SDDS.h: Added popenUsed to SDDS_LAYOUT structure. |
---|
254 | * scan.h: Added prototypes for unpacking functions. |
---|
255 | * |
---|
256 | * Revision 1.11 1996/01/18 04:31:56 borland |
---|
257 | * Added prototype for SDDS_GetInternalColumn() |
---|
258 | * |
---|
259 | * Revision 1.10 1996/01/14 01:56:27 borland |
---|
260 | * Added prototype and flag definitions for SDDS_FilterByNumScan(). |
---|
261 | * |
---|
262 | * Revision 1.9 1996/01/10 17:23:57 borland |
---|
263 | * Added prototype for SDDS_LockFile(). |
---|
264 | * |
---|
265 | * Revision 1.8 1996/01/09 23:22:58 borland |
---|
266 | * Added prototypes for SDDS_TransferAll*Definitions routines. |
---|
267 | * |
---|
268 | * Revision 1.7 1995/12/12 10:02:28 borland |
---|
269 | * Added prototype for SDDS_SetNoRowCounts(). |
---|
270 | * |
---|
271 | * Revision 1.6 1995/12/12 04:30:38 borland |
---|
272 | * Added layout_written field to SDDS_LAYOUT struct; added file_had_data |
---|
273 | * field to SDDS_DATASET struct; both in support of write/append to |
---|
274 | * files with no_row_counts=1. |
---|
275 | * |
---|
276 | * Revision 1.5 1995/11/13 16:08:13 borland |
---|
277 | * Added first_row_in_mem and writing_page entries to SDDS_DATASET structure |
---|
278 | * to support partially flushed tabular data. |
---|
279 | * |
---|
280 | * Revision 1.4 1995/11/08 04:25:53 borland |
---|
281 | * Added prototypes for new routines FreeArray, DefineParameterLikeArray, |
---|
282 | * and DefineColumnLikeArray. |
---|
283 | * |
---|
284 | * Revision 1.3 1995/09/12 03:18:41 borland |
---|
285 | * Added flag bit #define's for name validity control. |
---|
286 | * Added SDDS_CI_* #defines for SDDS_SetRowsOfInterest case-insensitive |
---|
287 | * mode. |
---|
288 | * Added SDDS_NOCASE_COMPARE for SDDS_MatchRowsOfInterest case-insenstive |
---|
289 | * mode. |
---|
290 | * |
---|
291 | * Revision 1.2 1995/09/05 21:14:46 saunders |
---|
292 | * First test release of the SDDS1.5 package. |
---|
293 | * |
---|
294 | */ |
---|
295 | |
---|
296 | #if !defined(_SDDS_) |
---|
297 | #include <stdio.h> |
---|
298 | #include <stdarg.h> |
---|
299 | #include <stdlib.h> |
---|
300 | |
---|
301 | #define SDDS_READMODE 1 |
---|
302 | #define SDDS_WRITEMODE 2 |
---|
303 | #define SDDS_MEMMODE 3 |
---|
304 | |
---|
305 | #define SDDS_MPI_READ_ONLY 0x0001UL |
---|
306 | #define SDDS_MPI_WRITE_ONLY 0x0002UL |
---|
307 | #define SDDS_MPI_READ_WRITE 0x0004UL |
---|
308 | #define SDDS_MPI_STRING_COLUMN_LEN 16 |
---|
309 | |
---|
310 | #if defined(SDDS_MPI_IO) && SDDS_MPI_IO |
---|
311 | #include "mpi.h" |
---|
312 | #include "mdb.h" |
---|
313 | |
---|
314 | extern char SDDS_mpi_error_str[MPI_MAX_ERROR_STRING]; |
---|
315 | extern int32_t SDDS_mpi_error_str_len; |
---|
316 | extern char *SDDS_MPI_FILE_TYPE[]; |
---|
317 | |
---|
318 | typedef struct { |
---|
319 | MPI_File MPI_file; /*MPIO file handle */ |
---|
320 | MPI_Comm comm; /*communicator */ |
---|
321 | MPI_Info File_info; /*file information */ |
---|
322 | int32_t myid; /* This process's rank */ |
---|
323 | int32_t n_processors; /* Total number of processes */ |
---|
324 | MPI_Offset file_offset, file_size, column_offset; /* number of bytes in one row for row major order*/ |
---|
325 | short collective_io; |
---|
326 | int32_t n_page; /* index of current page*/ |
---|
327 | int32_t n_rows; /* number of rows that current processor holds */ |
---|
328 | int32_t total_rows; /* the total number of rows that all processor hold*/ |
---|
329 | int32_t end_of_file; /* flag for end of MPI_file */ |
---|
330 | int32_t master_read; /*determine if master processor read the page data or not*/ |
---|
331 | int32_t start_row, end_row; /* the start row and end row that current processor's data that is going to be written to output or read from input */ |
---|
332 | } MPI_DATASET; |
---|
333 | #endif |
---|
334 | |
---|
335 | #if defined(zLib) |
---|
336 | #include "zlib.h" |
---|
337 | #endif |
---|
338 | |
---|
339 | #ifdef __cplusplus |
---|
340 | extern "C" { |
---|
341 | #endif |
---|
342 | |
---|
343 | |
---|
344 | #define _SDDS_ 1 |
---|
345 | |
---|
346 | #define SDDS_VERSION 2 |
---|
347 | |
---|
348 | #include "SDDStypes.h" |
---|
349 | #if defined(_WIN32) |
---|
350 | typedef __int32 int32_t; |
---|
351 | typedef unsigned __int32 uint32_t; |
---|
352 | #define PRId32 "ld" |
---|
353 | #define SCNd32 "ld" |
---|
354 | #define PRIu32 "lu" |
---|
355 | #define SCNu32 "lu" |
---|
356 | #define INT32_MAX (2147483647) |
---|
357 | #else |
---|
358 | #if defined(vxWorks) |
---|
359 | #define PRId32 "ld" |
---|
360 | #define SCNd32 "ld" |
---|
361 | #define PRIu32 "lu" |
---|
362 | #define SCNu32 "lu" |
---|
363 | #define INT32_MAX (2147483647) |
---|
364 | #else |
---|
365 | #include <inttypes.h> |
---|
366 | #endif |
---|
367 | #endif |
---|
368 | |
---|
369 | #undef epicsShareFuncSDDS |
---|
370 | #undef epicsShareExtern |
---|
371 | #if (defined(_WIN32) && !defined(__CYGWIN32__)) || (defined(__BORLANDC__) && defined(__linux__)) |
---|
372 | #if defined(EXPORT_SDDS) |
---|
373 | #define epicsShareFuncSDDS __declspec(dllexport) |
---|
374 | #define epicsShareExtern extern __declspec(dllexport) |
---|
375 | #else |
---|
376 | #define epicsShareFuncSDDS |
---|
377 | #define epicsShareExtern extern __declspec(dllimport) |
---|
378 | #endif |
---|
379 | #else |
---|
380 | #define epicsShareFuncSDDS |
---|
381 | #define epicsShareExtern extern |
---|
382 | #endif |
---|
383 | |
---|
384 | |
---|
385 | #define RW_ASSOCIATES 0 |
---|
386 | |
---|
387 | #define SDDS_BINARY 1 |
---|
388 | #define SDDS_ASCII 2 |
---|
389 | #define SDDS_PARALLEL 3 |
---|
390 | #define SDDS_NUM_DATA_MODES 2 |
---|
391 | |
---|
392 | /* |
---|
393 | extern char *SDDS_type_name[SDDS_NUM_TYPES]; |
---|
394 | extern int32_t SDDS_type_size[SDDS_NUM_TYPES]; |
---|
395 | extern char *SDDS_data_mode[SDDS_NUM_DATA_MODES]; |
---|
396 | */ |
---|
397 | |
---|
398 | epicsShareExtern char *SDDS_type_name[SDDS_NUM_TYPES]; |
---|
399 | epicsShareExtern int32_t SDDS_type_size[SDDS_NUM_TYPES]; |
---|
400 | extern char *SDDS_data_mode[SDDS_NUM_DATA_MODES]; |
---|
401 | |
---|
402 | /* this shouldn't be changed without changing buffer sizes in namelist routines: */ |
---|
403 | #define SDDS_MAXLINE 1024 |
---|
404 | |
---|
405 | #define SDDS_PRINT_BUFLEN 16834 |
---|
406 | |
---|
407 | #define SDDS_NORMAL_DEFINITION 0 |
---|
408 | #define SDDS_WRITEONLY_DEFINITION 1 |
---|
409 | |
---|
410 | typedef struct { |
---|
411 | char *name, *symbol, *units, *description, *format_string; |
---|
412 | int32_t type; |
---|
413 | char *fixed_value; |
---|
414 | /* these are used internally and are not set by the user: */ |
---|
415 | int32_t definition_mode, memory_number; |
---|
416 | } PARAMETER_DEFINITION; |
---|
417 | #define SDDS_PARAMETER_FIELDS 7 |
---|
418 | |
---|
419 | typedef struct { |
---|
420 | char *name, *symbol, *units, *description, *format_string; |
---|
421 | int32_t type, field_length; |
---|
422 | /* these are used internally and are not set by the user: */ |
---|
423 | int32_t definition_mode, memory_number, pointer_number; |
---|
424 | } COLUMN_DEFINITION; |
---|
425 | #define SDDS_COLUMN_FIELDS 7 |
---|
426 | |
---|
427 | typedef struct { |
---|
428 | char *name, *symbol, *units, *description, *format_string, *group_name; |
---|
429 | int32_t type, field_length, dimensions; |
---|
430 | } ARRAY_DEFINITION; |
---|
431 | #define SDDS_ARRAY_FIELDS 9 |
---|
432 | |
---|
433 | typedef struct { |
---|
434 | char *name, *filename, *path, *description, *contents; |
---|
435 | int32_t sdds; |
---|
436 | } ASSOCIATE_DEFINITION; |
---|
437 | #define SDDS_ASSOCIATE_FIELDS 6 |
---|
438 | |
---|
439 | typedef struct { |
---|
440 | int32_t index; |
---|
441 | char *name; |
---|
442 | } SORTED_INDEX; |
---|
443 | int SDDS_CompareIndexedNames(void *s1, void *s2); |
---|
444 | int SDDS_CompareIndexedNamesPtr(const void *s1, const void *s2); |
---|
445 | |
---|
446 | typedef struct { |
---|
447 | int32_t mode, lines_per_row, no_row_counts, fixed_row_count, fsync_data; |
---|
448 | int32_t additional_header_lines; |
---|
449 | } DATA_MODE; |
---|
450 | |
---|
451 | #if !defined(zLib) |
---|
452 | typedef void *voidp; |
---|
453 | typedef voidp gzFile; |
---|
454 | #endif |
---|
455 | |
---|
456 | typedef struct { |
---|
457 | int32_t n_columns, n_parameters, n_associates, n_arrays; |
---|
458 | |
---|
459 | char *description; |
---|
460 | char *contents; |
---|
461 | int32_t version; |
---|
462 | short layout_written; |
---|
463 | |
---|
464 | DATA_MODE data_mode; |
---|
465 | COLUMN_DEFINITION *column_definition; |
---|
466 | PARAMETER_DEFINITION *parameter_definition; |
---|
467 | ARRAY_DEFINITION *array_definition; |
---|
468 | ASSOCIATE_DEFINITION *associate_definition; |
---|
469 | SORTED_INDEX **column_index, **parameter_index, **array_index; |
---|
470 | |
---|
471 | char *filename; |
---|
472 | FILE *fp; |
---|
473 | gzFile *gzfp; |
---|
474 | short disconnected; |
---|
475 | short gzipFile; |
---|
476 | short popenUsed; |
---|
477 | uint32_t byteOrderDeclared; |
---|
478 | } SDDS_LAYOUT; |
---|
479 | |
---|
480 | typedef struct { |
---|
481 | ARRAY_DEFINITION *definition; |
---|
482 | int32_t *dimension, elements; |
---|
483 | /* Address of array of data values, stored contiguously. |
---|
484 | * For STRING data, the "data values" are actually the addresses of the individual strings. |
---|
485 | */ |
---|
486 | void *data; |
---|
487 | void *pointer; |
---|
488 | } SDDS_ARRAY; |
---|
489 | |
---|
490 | typedef struct { |
---|
491 | char *data, *buffer; |
---|
492 | int32_t bytesLeft, bufferSize; |
---|
493 | } SDDS_FILEBUFFER ; |
---|
494 | |
---|
495 | #define SDDS_FILEBUFFER_SIZE 262144 |
---|
496 | |
---|
497 | typedef struct { |
---|
498 | SDDS_LAYOUT layout, original_layout; |
---|
499 | short swapByteOrder; |
---|
500 | SDDS_FILEBUFFER fBuffer; |
---|
501 | SDDS_FILEBUFFER titleBuffer; |
---|
502 | int32_t page_number; |
---|
503 | |
---|
504 | short mode; /*file mode*/ |
---|
505 | short page_started; /*0 or 1 for page not started or already started*/ |
---|
506 | int32_t pages_read; /*the number of pages read so far*/ |
---|
507 | int32_t endOfFile_offset;/*the offset in the end of the file*/ |
---|
508 | int32_t *pagecount_offset; /*the offset of each read page */ |
---|
509 | int32_t rowcount_offset; /* ftell() position of row count */ |
---|
510 | int32_t n_rows_written; /* number of tabular data rows written to disk */ |
---|
511 | int32_t last_row_written; /* virtual index of last row written */ |
---|
512 | int32_t first_row_in_mem; /* virtual index of first row in memory */ |
---|
513 | short writing_page; /* 1/0 for writing/not-writing page */ |
---|
514 | int32_t n_rows_allocated; /* number of tabular data rows for which space is alloc'd */ |
---|
515 | int32_t n_rows; /* number of rows stored in memory */ |
---|
516 | int32_t *row_flag; /* accept/reject flags for rows stored in memory */ |
---|
517 | short file_had_data; /* indicates that file being appended to already had some data in it (i.e., |
---|
518 | * more than just a header. Affects no_row_counts=1 output. |
---|
519 | */ |
---|
520 | short autoRecover; |
---|
521 | short autoRecovered; |
---|
522 | short parallel_io; /*flag for parallel SDDS */ |
---|
523 | int32_t n_of_interest; |
---|
524 | int32_t *column_order; /* column_order[i] = internal index of user's ith column */ |
---|
525 | int32_t *column_flag; /* column_flag[i] indicates whether internal ith column has been selected */ |
---|
526 | |
---|
527 | /* array of SDDS_ARRAY structures for storing array data */ |
---|
528 | SDDS_ARRAY *array; |
---|
529 | |
---|
530 | /* array for parameter data. The address of the data for the ith parameter |
---|
531 | * is parameter[i]. So *(<type-name> *)parameter[i] gives the data itself. For type |
---|
532 | * SDDS_STRING the "data itself" is actually the address of the string, and the type-name |
---|
533 | * is "char *". |
---|
534 | */ |
---|
535 | void **parameter; |
---|
536 | |
---|
537 | /* array for tabular data. The starting address for the data for the ith column |
---|
538 | * is data[i]. So ((<type-name> *)data[i])[j] gives the jth data value. |
---|
539 | * For type SDDS_STRING the "data value" is actually the address of the string, and |
---|
540 | * the type-name is "char *". |
---|
541 | */ |
---|
542 | void **data; |
---|
543 | short column_major; |
---|
544 | #if defined(SDDS_MPI_IO) && SDDS_MPI_IO |
---|
545 | MPI_DATASET *MPI_dataset; |
---|
546 | #endif |
---|
547 | } SDDS_DATASET; |
---|
548 | |
---|
549 | typedef SDDS_DATASET SDDS_TABLE; |
---|
550 | |
---|
551 | /* prototypes for routines to prepare and write SDDS files */ |
---|
552 | epicsShareFuncSDDS extern int32_t SDDS_InitializeOutput(SDDS_DATASET *SDDS_dataset, int32_t data_mode, |
---|
553 | int32_t lines_per_row, char *description, |
---|
554 | char *contents, char *filename); |
---|
555 | epicsShareFuncSDDS extern int32_t SDDS_Parallel_InitializeOutput(SDDS_DATASET *SDDS_dataset, char *description, |
---|
556 | char *contents, char *filename); |
---|
557 | epicsShareFuncSDDS extern int32_t SDDS_InitializeAppend(SDDS_DATASET *SDDS_dataset, char *filename); |
---|
558 | epicsShareFuncSDDS extern int32_t SDDS_InitializeAppendToPage(SDDS_DATASET *SDDS_dataset, char *filename, |
---|
559 | int32_t updateInterval, |
---|
560 | int32_t *rowsPresentReturn); |
---|
561 | epicsShareFuncSDDS extern int32_t SDDS_DisconnectFile(SDDS_DATASET *SDDS_dataset); |
---|
562 | epicsShareFuncSDDS extern int32_t SDDS_ReconnectFile(SDDS_DATASET *SDDS_dataset); |
---|
563 | epicsShareFuncSDDS extern int32_t SDDS_FreeStringData(SDDS_DATASET *SDDS_dataset); |
---|
564 | epicsShareFuncSDDS extern int32_t SDDS_Terminate(SDDS_DATASET *SDDS_dataset); |
---|
565 | epicsShareFuncSDDS extern void SDDS_SetTerminateMode(uint32_t mode); |
---|
566 | #define TERMINATE_DONT_FREE_TABLE_STRINGS 0x0001 |
---|
567 | #define TERMINATE_DONT_FREE_ARRAY_STRINGS 0x0002 |
---|
568 | epicsShareFuncSDDS extern int32_t SDDS_SetRowCountMode(SDDS_DATASET *SDDS_dataset, uint32_t mode); |
---|
569 | #define SDDS_VARIABLEROWCOUNT 0x0001UL |
---|
570 | #define SDDS_FIXEDROWCOUNT 0x0002UL |
---|
571 | #define SDDS_NOROWCOUNT 0x0004UL |
---|
572 | epicsShareFuncSDDS extern int32_t SDDS_SetAutoReadRecovery(SDDS_DATASET *SDDS_dataset, uint32_t mode); |
---|
573 | #define SDDS_NOAUTOREADRECOVER 0x0001UL |
---|
574 | #define SDDS_AUTOREADRECOVER 0x0002UL |
---|
575 | epicsShareFuncSDDS extern int32_t SDDS_UpdateRowCount(SDDS_DATASET *SDDS_dataset); |
---|
576 | epicsShareFuncSDDS extern void SDDS_DisableFSync(SDDS_DATASET *SDDS_dataset); |
---|
577 | epicsShareFuncSDDS extern void SDDS_EnableFSync(SDDS_DATASET *SDDS_dataset); |
---|
578 | epicsShareFuncSDDS extern int32_t SDDS_DoFSync(SDDS_DATASET *SDDS_dataset); |
---|
579 | epicsShareFuncSDDS extern int32_t SDDS_DefineParameter(SDDS_DATASET *SDDS_dataset, char *name, char *symbol, char *units, char *description, |
---|
580 | char *format_string, int32_t type, char *fixed_value); |
---|
581 | epicsShareFuncSDDS extern int32_t SDDS_DefineParameter1(SDDS_DATASET *SDDS_dataset, char *name, char *symbol, char *units, char *description, |
---|
582 | char *format_string, int32_t type, void *fixed_value); |
---|
583 | epicsShareFuncSDDS extern int32_t SDDS_DefineColumn(SDDS_DATASET *SDDS_dataset, char *name, char *symbol, char *units, char *description, |
---|
584 | char *format_string, int32_t type, int32_t field_length); |
---|
585 | epicsShareFuncSDDS extern int32_t SDDS_DefineArray(SDDS_DATASET *SDDS_dataset, char *name, char *symbol, char *units, char *description, |
---|
586 | char *format_string, int32_t type, int32_t field_length, int32_t dimensions, char *group_name); |
---|
587 | epicsShareFuncSDDS extern int32_t SDDS_DefineAssociate(SDDS_DATASET *SDDS_dataset, char *name, |
---|
588 | char *filename, char *path, char *description, char *contents, int32_t sdds); |
---|
589 | epicsShareFuncSDDS extern int32_t SDDS_IsValidName(char *name, char *dataClass); |
---|
590 | epicsShareFuncSDDS extern int32_t SDDS_SetNameValidityFlags(uint32_t flags); |
---|
591 | #define SDDS_ALLOW_ANY_NAME 0x0001UL |
---|
592 | #define SDDS_ALLOW_V15_NAME 0x0002UL |
---|
593 | epicsShareFuncSDDS extern int32_t SDDS_DefineSimpleColumn(SDDS_DATASET *SDDS_dataset, char *name, char *unit, int32_t type); |
---|
594 | epicsShareFuncSDDS extern int32_t SDDS_DefineSimpleParameter(SDDS_DATASET *SDDS_dataset, char *name, char *unit, int32_t type); |
---|
595 | epicsShareFuncSDDS extern int32_t SDDS_DefineSimpleColumns(SDDS_DATASET *SDDS_dataset, int32_t number, char **name, char **unit, int32_t type); |
---|
596 | epicsShareFuncSDDS extern int32_t SDDS_DefineSimpleParameters(SDDS_DATASET *SDDS_dataset, int32_t number, char **name, char **unit, int32_t type); |
---|
597 | epicsShareFuncSDDS extern int32_t SDDS_SetNoRowCounts(SDDS_DATASET *SDDS_dataset, int32_t value); |
---|
598 | epicsShareFuncSDDS extern int32_t SDDS_WriteLayout(SDDS_DATASET *SDDS_dataset); |
---|
599 | epicsShareFuncSDDS extern int32_t SDDS_EraseData(SDDS_DATASET *SDDS_dataset); |
---|
600 | |
---|
601 | epicsShareFuncSDDS extern int32_t SDDS_ProcessColumnString(SDDS_DATASET *SDDS_dataset, char *string, int32_t mode); |
---|
602 | epicsShareFuncSDDS extern int32_t SDDS_ProcessParameterString(SDDS_DATASET *SDDS_dataset, char *string, int32_t mode); |
---|
603 | epicsShareFuncSDDS extern int32_t SDDS_ProcessArrayString(SDDS_DATASET *SDDS_dataset, char *string); |
---|
604 | epicsShareFuncSDDS extern int32_t SDDS_ProcessAssociateString(SDDS_DATASET *SDDS_dataset, char *string); |
---|
605 | |
---|
606 | epicsShareFuncSDDS extern int32_t SDDS_InitializeCopy(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source, char *filename, char *filemode); |
---|
607 | epicsShareFuncSDDS extern int32_t SDDS_CopyLayout(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source); |
---|
608 | epicsShareFuncSDDS extern int32_t SDDS_AppendLayout(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source, uint32_t mode); |
---|
609 | epicsShareFuncSDDS extern int32_t SDDS_CopyPage(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source); |
---|
610 | #define SDDS_CopyTable(a, b) SDDS_CopyPage(a, b) |
---|
611 | epicsShareFuncSDDS extern int32_t SDDS_CopyParameters(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source); |
---|
612 | epicsShareFuncSDDS extern int32_t SDDS_CopyArrays(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source); |
---|
613 | epicsShareFuncSDDS extern int32_t SDDS_CopyColumns(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source); |
---|
614 | epicsShareFuncSDDS extern int32_t SDDS_CopyRowsOfInterest(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source); |
---|
615 | epicsShareFuncSDDS extern int32_t SDDS_CopyRow(SDDS_DATASET *SDDS_target, int32_t target_row, SDDS_DATASET *SDDS_source, int32_t source_srow); |
---|
616 | epicsShareFuncSDDS extern int32_t SDDS_CopyRowDirect(SDDS_DATASET *SDDS_target, int32_t target_row, SDDS_DATASET *SDDS_source, int32_t source_row); |
---|
617 | epicsShareFuncSDDS extern int32_t SDDS_CopyAdditionalRows(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source); |
---|
618 | |
---|
619 | epicsShareFuncSDDS extern void SDDS_DeferSavingLayout(int32_t mode); |
---|
620 | epicsShareFuncSDDS extern int32_t SDDS_SaveLayout(SDDS_DATASET *SDDS_dataset); |
---|
621 | epicsShareFuncSDDS extern int32_t SDDS_RestoreLayout(SDDS_DATASET *SDDS_dataset); |
---|
622 | |
---|
623 | #define SDDS_BY_INDEX 1 |
---|
624 | #define SDDS_BY_NAME 2 |
---|
625 | |
---|
626 | epicsShareFuncSDDS extern int32_t SDDS_StartPage(SDDS_DATASET *SDDS_dataset, int32_t expected_n_rows); |
---|
627 | #define SDDS_StartTable(a, b) SDDS_StartPage(a, b) |
---|
628 | epicsShareFuncSDDS extern int32_t SDDS_ClearPage(SDDS_DATASET *SDDS_dataset); |
---|
629 | epicsShareFuncSDDS extern int32_t SDDS_LengthenTable(SDDS_DATASET *SDDS_dataset, int32_t n_additional_rows); |
---|
630 | epicsShareFuncSDDS extern int32_t SDDS_ShortenTable(SDDS_DATASET *SDDS_dataset, int32_t rows); |
---|
631 | #define SDDS_SET_BY_INDEX SDDS_BY_INDEX |
---|
632 | #define SDDS_SET_BY_NAME SDDS_BY_NAME |
---|
633 | #define SDDS_PASS_BY_VALUE 4 |
---|
634 | #define SDDS_PASS_BY_REFERENCE 8 |
---|
635 | #define SDDS_PASS_BY_STRING 16 |
---|
636 | epicsShareFuncSDDS extern int32_t SDDS_SetParameters(SDDS_DATASET *SDDS_dataset, int32_t mode, ...); |
---|
637 | epicsShareFuncSDDS extern int32_t SDDS_SetRowValues(SDDS_DATASET *SDDS_dataset, int32_t mode, int32_t row, ...); |
---|
638 | epicsShareFuncSDDS extern int32_t SDDS_WritePage(SDDS_DATASET *SDDS_dataset); |
---|
639 | #define SDDS_WriteTable(a) SDDS_WritePage(a) |
---|
640 | epicsShareFuncSDDS extern int32_t SDDS_UpdatePage(SDDS_DATASET *SDDS_dataset, uint32_t mode); |
---|
641 | #define FLUSH_TABLE 0x1UL |
---|
642 | #define SDDS_UpdateTable(a) SDDS_UpdatePage(a, 0) |
---|
643 | epicsShareFuncSDDS extern int32_t SDDS_SyncDataSet(SDDS_DATASET *SDDS_dataset); |
---|
644 | epicsShareFuncSDDS extern int32_t SDDS_SetColumn(SDDS_DATASET *SDDS_dataset, int32_t mode, void *data, int32_t rows, ...); |
---|
645 | epicsShareFuncSDDS extern int32_t SDDS_SetColumnFromDoubles(SDDS_DATASET *SDDS_dataset, int32_t mode, double *data, int32_t rows, ...); |
---|
646 | epicsShareFuncSDDS extern int32_t SDDS_SetColumnFromFloats(SDDS_DATASET *SDDS_dataset, int32_t mode, float *data, int32_t rows, ...); |
---|
647 | epicsShareFuncSDDS extern int32_t SDDS_SetColumnFromLongs(SDDS_DATASET *SDDS_dataset, int32_t mode, int32_t *data, int32_t rows, ...); |
---|
648 | epicsShareFuncSDDS extern int32_t SDDS_SetParametersFromDoubles(SDDS_DATASET *SDDS_dataset, int32_t mode, ...); |
---|
649 | |
---|
650 | #define SDDS_GET_BY_INDEX SDDS_BY_INDEX |
---|
651 | #define SDDS_GET_BY_NAME SDDS_BY_NAME |
---|
652 | epicsShareFuncSDDS extern int32_t SDDS_GetColumnInformation(SDDS_DATASET *SDDS_dataset, char *field_name, void *memory, int32_t mode, ...); |
---|
653 | epicsShareFuncSDDS extern int32_t SDDS_GetParameterInformation(SDDS_DATASET *SDDS_dataset, char *field_name, void *memory, int32_t mode, ...); |
---|
654 | epicsShareFuncSDDS extern int32_t SDDS_GetArrayInformation(SDDS_DATASET *SDDS_dataset, char *field_name, void *memory, int32_t mode, ...); |
---|
655 | epicsShareFuncSDDS extern int32_t SDDS_GetAssociateInformation(SDDS_DATASET *SDDS_dataset, char *field_name, void *memory, int32_t mode, ...); |
---|
656 | epicsShareFuncSDDS extern int32_t SDDS_ChangeColumnInformation(SDDS_DATASET *SDDS_dataset, char *field_name, void *memory, int32_t mode, ...); |
---|
657 | epicsShareFuncSDDS extern int32_t SDDS_ChangeParameterInformation(SDDS_DATASET *SDDS_dataset, char *field_name, void *memory, int32_t mode, ...); |
---|
658 | epicsShareFuncSDDS extern int32_t SDDS_ChangeArrayInformation(SDDS_DATASET *SDDS_dataset, char *field_name, void *memory, int32_t mode, ...); |
---|
659 | |
---|
660 | epicsShareFuncSDDS extern void SDDS_SetReadRecoveryMode(int32_t mode); |
---|
661 | epicsShareFuncSDDS extern int32_t SDDS_SetDefaultIOBufferSize(int32_t bufferSize); |
---|
662 | |
---|
663 | /* prototypes for routines to read and use SDDS files */ |
---|
664 | epicsShareFuncSDDS extern int32_t SDDS_InitializeInputFromSearchPath(SDDS_DATASET *SDDSin, char *file); |
---|
665 | epicsShareFuncSDDS extern int32_t SDDS_InitializeInput(SDDS_DATASET *SDDS_dataset, char *filename); |
---|
666 | epicsShareFuncSDDS extern int32_t SDDS_ReadLayout(SDDS_DATASET *SDDS_dataset, FILE *fp); |
---|
667 | epicsShareFuncSDDS extern int32_t SDDS_InitializeHeaderlessInput(SDDS_DATASET *SDDS_dataset, char *filename); |
---|
668 | epicsShareFuncSDDS extern int32_t SDDS_GetRowLimit(void); |
---|
669 | epicsShareFuncSDDS extern int32_t SDDS_SetRowLimit(int32_t limit); |
---|
670 | epicsShareFuncSDDS extern int32_t SDDS_GotoPage(SDDS_DATASET *SDDS_dataset,int32_t page_number); |
---|
671 | epicsShareFuncSDDS extern int32_t SDDS_CheckEndOfFile(SDDS_DATASET *SDDS_dataset); |
---|
672 | epicsShareFuncSDDS extern int32_t SDDS_ReadPage(SDDS_DATASET *SDDS_dataset); |
---|
673 | epicsShareFuncSDDS extern int32_t SDDS_ReadPageSparse(SDDS_DATASET *SDDS_dataset, uint32_t mode, |
---|
674 | int32_t sparse_interval, |
---|
675 | int32_t sparse_offset); |
---|
676 | #define SDDS_ReadTable(a) SDDS_ReadPage(a) |
---|
677 | epicsShareFuncSDDS extern int32_t SDDS_ReadAsciiPage(SDDS_DATASET *SDDS_dataset, int32_t sparse_interval, |
---|
678 | int32_t sparse_offset); |
---|
679 | epicsShareFuncSDDS extern int32_t SDDS_ReadRecoveryPossible(void); |
---|
680 | |
---|
681 | epicsShareFuncSDDS extern int32_t SDDS_SetColumnFlags(SDDS_DATASET *SDDS_dataset, int32_t column_flag_value); |
---|
682 | epicsShareFuncSDDS extern int32_t SDDS_SetRowFlags(SDDS_DATASET *SDDS_dataset, int32_t row_flag_value); |
---|
683 | epicsShareFuncSDDS extern int32_t SDDS_GetRowFlag(SDDS_DATASET *SDDS_dataset, int32_t row); |
---|
684 | epicsShareFuncSDDS extern int32_t SDDS_GetRowFlags(SDDS_DATASET *SDDS_dataset, int32_t *flag, int32_t rows); |
---|
685 | epicsShareFuncSDDS extern int32_t SDDS_BufferedRead(void *target, size_t targetSize, FILE *fp, SDDS_FILEBUFFER *fBuffer); |
---|
686 | #if defined(zLib) |
---|
687 | epicsShareFuncSDDS extern int32_t SDDS_GZipBufferedRead(void *target, size_t targetSize, gzFile *gzfp, SDDS_FILEBUFFER *fBuffer); |
---|
688 | #endif |
---|
689 | |
---|
690 | /* logic flags for SDDS_AssertRowFlags and SDDS_AssertColumnFlags */ |
---|
691 | #define SDDS_FLAG_ARRAY 0x001UL |
---|
692 | #define SDDS_INDEX_LIMITS 0x002UL |
---|
693 | epicsShareFuncSDDS extern int32_t SDDS_AssertRowFlags(SDDS_DATASET *SDDS_dataset, uint32_t mode, ...); |
---|
694 | /* modes for SDDS_SetColumnsOfInterest and SDDS_SetRowsOfInterest: */ |
---|
695 | #define SDDS_NAME_ARRAY 1 |
---|
696 | #define SDDS_NAMES_STRING 2 |
---|
697 | #define SDDS_NAME_STRINGS 3 |
---|
698 | #define SDDS_MATCH_STRING 4 |
---|
699 | #define SDDS_MATCH_EXCLUDE_STRING 5 |
---|
700 | #define SDDS_CI_NAME_ARRAY 6 |
---|
701 | #define SDDS_CI_NAMES_STRING 7 |
---|
702 | #define SDDS_CI_NAME_STRINGS 8 |
---|
703 | #define SDDS_CI_MATCH_STRING 9 |
---|
704 | #define SDDS_CI_MATCH_EXCLUDE_STRING 10 |
---|
705 | |
---|
706 | /* logic flags for SDDS_SetColumnsOfInterest, SDDS_SetRowsOfInterest, and SDDS_MatchRowsOfInterest: */ |
---|
707 | #define SDDS_AND 0x0001UL |
---|
708 | #define SDDS_OR 0x0002UL |
---|
709 | #define SDDS_NEGATE_MATCH 0x0004UL |
---|
710 | #define SDDS_NEGATE_PREVIOUS 0x0008UL |
---|
711 | #define SDDS_NEGATE_EXPRESSION 0x0010UL |
---|
712 | #define SDDS_INDIRECT_MATCH 0x0020UL |
---|
713 | #define SDDS_1_PREVIOUS 0x0040UL |
---|
714 | #define SDDS_0_PREVIOUS 0x0080UL |
---|
715 | /* used by MatchRowsOfInterest only at this point: */ |
---|
716 | #define SDDS_NOCASE_COMPARE 0x0100UL |
---|
717 | |
---|
718 | epicsShareFuncSDDS extern int32_t SDDS_MatchColumns(SDDS_DATASET *SDDS_dataset, char ***match, int32_t matchMode, int32_t typeMode, ... ); |
---|
719 | epicsShareFuncSDDS extern int32_t SDDS_MatchParameters(SDDS_DATASET *SDDS_dataset, char ***match, int32_t matchMode, int32_t typeMode, ... ); |
---|
720 | epicsShareFuncSDDS extern int32_t SDDS_MatchArrays(SDDS_DATASET *SDDS_dataset, char ***match, int32_t matchMode, int32_t typeMode, ... ); |
---|
721 | epicsShareFuncSDDS extern int32_t SDDS_Logic(int32_t previous, int32_t match, uint32_t logic); |
---|
722 | epicsShareFuncSDDS extern int32_t SDDS_SetColumnsOfInterest(SDDS_DATASET *SDDS_dataset, int32_t mode, ...); |
---|
723 | epicsShareFuncSDDS extern int32_t SDDS_AssertColumnFlags(SDDS_DATASET *SDDS_dataset, uint32_t mode, ...); |
---|
724 | epicsShareFuncSDDS extern int32_t SDDS_SetRowsOfInterest(SDDS_DATASET *SDDS_dataset, char *selection_column, int32_t mode, ...); |
---|
725 | epicsShareFuncSDDS extern int32_t SDDS_MatchRowsOfInterest(SDDS_DATASET *SDDS_dataset, char *selection_column, char *label_to_match, int32_t logic); |
---|
726 | epicsShareFuncSDDS extern int32_t SDDS_DeleteColumn(SDDS_DATASET *SDDS_dataset, char *column_name); |
---|
727 | epicsShareFuncSDDS extern int32_t SDDS_DeleteParameter(SDDS_DATASET *SDDS_dataset, char *parameter_name); |
---|
728 | epicsShareFuncSDDS extern int32_t SDDS_DeleteUnsetColumns(SDDS_DATASET *SDDS_dataset); |
---|
729 | epicsShareFuncSDDS extern int32_t SDDS_CountColumnsOfInterest(SDDS_DATASET *SDDS_dataset); |
---|
730 | epicsShareFuncSDDS extern int32_t SDDS_ColumnIsOfInterest(SDDS_DATASET *SDDS_dataset, char *name); |
---|
731 | epicsShareFuncSDDS extern int32_t SDDS_ColumnCount(SDDS_DATASET *dataset); |
---|
732 | epicsShareFuncSDDS extern int32_t SDDS_ParameterCount(SDDS_DATASET *dataset); |
---|
733 | epicsShareFuncSDDS extern int32_t SDDS_ArrayCount(SDDS_DATASET *dataset); |
---|
734 | epicsShareFuncSDDS extern int32_t SDDS_CountRowsOfInterest(SDDS_DATASET *SDDS_dataset); |
---|
735 | #define SDDS_RowCount(SDDS_dataset) ((SDDS_dataset)->n_rows) |
---|
736 | epicsShareFuncSDDS extern int32_t SDDS_DeleteUnsetRows(SDDS_DATASET *SDDS_dataset); |
---|
737 | epicsShareFuncSDDS extern int32_t SDDS_FilterRowsOfInterest(SDDS_DATASET *SDDS_dataset, char *filter_column, double lower, double upper, int32_t logic); |
---|
738 | epicsShareFuncSDDS extern int32_t SDDS_ItemInsideWindow(void *data, int32_t index, int32_t type, double lower_limit, double upper_limit); |
---|
739 | epicsShareFuncSDDS extern int32_t SDDS_FilterRowsByNumScan(SDDS_DATASET *SDDS_dataset, char *filter_column, uint32_t mode); |
---|
740 | #define NUMSCANFILTER_INVERT 0x0001UL |
---|
741 | #define NUMSCANFILTER_STRICT 0x0002UL |
---|
742 | |
---|
743 | epicsShareFuncSDDS extern void *SDDS_GetColumn(SDDS_DATASET *SDDS_dataset, char *column_name); |
---|
744 | epicsShareFuncSDDS extern void *SDDS_GetInternalColumn(SDDS_DATASET *SDDS_dataset, char *column_name); |
---|
745 | epicsShareFuncSDDS extern double *SDDS_GetColumnInDoubles(SDDS_DATASET *SDDS_dataset, char *column_name); |
---|
746 | epicsShareFuncSDDS extern float *SDDS_GetColumnInFloats(SDDS_DATASET *SDDS_dataset, char *column_name); |
---|
747 | epicsShareFuncSDDS extern int32_t *SDDS_GetColumnInLong(SDDS_DATASET *SDDS_dataset, char *column_name); |
---|
748 | epicsShareFuncSDDS extern short *SDDS_GetColumnInShort(SDDS_DATASET *SDDS_dataset, char *column_name); |
---|
749 | epicsShareFuncSDDS extern void *SDDS_GetNumericColumn(SDDS_DATASET *SDDS_dataset, char *column_name, int32_t desiredType); |
---|
750 | epicsShareFuncSDDS extern void *SDDS_GetRow(SDDS_DATASET *SDDS_dataset, int32_t srow_index, void *memory); |
---|
751 | epicsShareFuncSDDS extern void *SDDS_GetValue(SDDS_DATASET *SDDS_dataset, char *column_name, int32_t srow_index, void *memory); |
---|
752 | epicsShareFuncSDDS extern void *SDDS_GetValueByIndex(SDDS_DATASET *SDDS_dataset, int32_t column_index, int32_t srow_index, void *memory); |
---|
753 | epicsShareFuncSDDS extern void *SDDS_GetValueByAbsIndex(SDDS_DATASET *SDDS_dataset, int32_t column_index, int32_t srow_index, void *memory); |
---|
754 | epicsShareFuncSDDS extern void *SDDS_GetParameter(SDDS_DATASET *SDDS_dataset, char *parameter_name, void *memory); |
---|
755 | epicsShareFuncSDDS extern void *SDDS_GetParameterByIndex(SDDS_DATASET *SDDS_dataset, int32_t index, void *memory); |
---|
756 | epicsShareFuncSDDS extern double *SDDS_GetParameterAsDouble(SDDS_DATASET *SDDS_dataset, char *parameter_name, double *data); |
---|
757 | epicsShareFuncSDDS extern int32_t *SDDS_GetParameterAsLong(SDDS_DATASET *SDDS_dataset, char *parameter_name, int32_t *data); |
---|
758 | epicsShareFuncSDDS extern char *SDDS_GetParameterAsString(SDDS_DATASET *SDDS_dataset, char *parameter_name, char **memory); |
---|
759 | epicsShareFuncSDDS extern int32_t SDDS_GetParameters(SDDS_DATASET *SDDS_dataset, ...); |
---|
760 | epicsShareFuncSDDS extern void *SDDS_GetFixedValueParameter(SDDS_DATASET *SDDS_dataset, char *parameter_name, void *memory); |
---|
761 | epicsShareFuncSDDS extern int32_t SDDS_GetDescription(SDDS_DATASET *SDDS_dataset, char **text, char **contents); |
---|
762 | |
---|
763 | epicsShareFuncSDDS extern void *SDDS_GetMatrixOfRows(SDDS_DATASET *SDDS_dataset, int32_t *n_rows); |
---|
764 | epicsShareFuncSDDS extern void *SDDS_GetCastMatrixOfRows(SDDS_DATASET *SDDS_dataset, int32_t *n_rows, int32_t sddsType); |
---|
765 | #define SDDS_ROW_MAJOR_DATA 1 |
---|
766 | #define SDDS_COLUMN_MAJOR_DATA 2 |
---|
767 | epicsShareFuncSDDS extern void *SDDS_GetMatrixFromColumn(SDDS_DATASET *SDDS_dataset, char *column_name, int32_t dimension1, int32_t dimension2, int32_t mode); |
---|
768 | epicsShareFuncSDDS extern void *SDDS_GetDoubleMatrixFromColumn(SDDS_DATASET *SDDS_dataset, char *column_name, int32_t dimension1, int32_t dimension2, int32_t mode); |
---|
769 | |
---|
770 | epicsShareFuncSDDS extern SDDS_ARRAY *SDDS_GetArray(SDDS_DATASET *SDDS_dataset, char *array_name, SDDS_ARRAY *memory); |
---|
771 | #define SDDS_POINTER_ARRAY 1 |
---|
772 | #define SDDS_CONTIGUOUS_DATA 2 |
---|
773 | epicsShareFuncSDDS extern double *SDDS_GetArrayInDoubles(SDDS_DATASET *SDDS_dataset, char *array_name, int32_t *values); |
---|
774 | epicsShareFuncSDDS extern int32_t SDDS_SetArrayVararg(SDDS_DATASET *SDDS_dataset, char *array_name, int32_t mode, void *data_pointer, ...); |
---|
775 | epicsShareFuncSDDS extern int32_t SDDS_SetArray(SDDS_DATASET *SDDS_dataset, char *array_name, int32_t mode, void *data_pointer, int32_t *dimension); |
---|
776 | epicsShareFuncSDDS extern int32_t SDDS_AppendToArrayVararg(SDDS_DATASET *SDDS_dataset, char *array_name, int32_t mode, void *data_pointer, int32_t elements, ...); |
---|
777 | |
---|
778 | |
---|
779 | /* error-handling and utility routines: */ |
---|
780 | epicsShareFuncSDDS extern void *SDDS_Realloc(void *old_ptr, size_t new_size); |
---|
781 | epicsShareFuncSDDS extern void *SDDS_Malloc(size_t size); |
---|
782 | epicsShareFuncSDDS extern void SDDS_Free(void *mem); |
---|
783 | epicsShareFuncSDDS extern void *SDDS_Calloc(size_t nelem, size_t elem_size); |
---|
784 | epicsShareFuncSDDS extern int32_t SDDS_NumberOfErrors(void); |
---|
785 | epicsShareFuncSDDS extern void SDDS_ClearErrors(void); |
---|
786 | epicsShareFuncSDDS extern void SDDS_SetError(char *error_text); |
---|
787 | epicsShareFuncSDDS extern void SDDS_Bomb(char *message); |
---|
788 | epicsShareFuncSDDS extern void SDDS_Warning(char *message); |
---|
789 | epicsShareFuncSDDS extern void SDDS_RegisterProgramName(const char *name); |
---|
790 | #define SDDS_VERBOSE_PrintErrors 1 |
---|
791 | #define SDDS_EXIT_PrintErrors 2 |
---|
792 | epicsShareFuncSDDS extern void SDDS_PrintErrors(FILE *fp, int32_t mode); |
---|
793 | #define SDDS_LAST_GetErrorMessages 0 |
---|
794 | #define SDDS_ALL_GetErrorMessages 1 |
---|
795 | epicsShareFuncSDDS extern char **SDDS_GetErrorMessages(int32_t *number, int32_t mode); |
---|
796 | |
---|
797 | epicsShareFuncSDDS extern char **SDDS_GetColumnNames(SDDS_DATASET *SDDS_dataset, int32_t *number); |
---|
798 | epicsShareFuncSDDS extern char **SDDS_GetParameterNames(SDDS_DATASET *SDDS_dataset, int32_t *number); |
---|
799 | epicsShareFuncSDDS extern char **SDDS_GetAssociateNames(SDDS_DATASET *SDDS_dataset, int32_t *number); |
---|
800 | epicsShareFuncSDDS extern char **SDDS_GetArrayNames(SDDS_DATASET *SDDS_dataset, int32_t *number); |
---|
801 | |
---|
802 | epicsShareFuncSDDS extern COLUMN_DEFINITION *SDDS_GetColumnDefinition(SDDS_DATASET *SDDS_dataset, char *name); |
---|
803 | epicsShareFuncSDDS extern COLUMN_DEFINITION *SDDS_CopyColumnDefinition(COLUMN_DEFINITION **target, COLUMN_DEFINITION *source); |
---|
804 | epicsShareFuncSDDS extern int32_t SDDS_FreeColumnDefinition(COLUMN_DEFINITION *source); |
---|
805 | epicsShareFuncSDDS extern int32_t SDDS_TransferColumnDefinition(SDDS_DATASET *target, SDDS_DATASET *source, char *name, char *newName); |
---|
806 | epicsShareFuncSDDS extern int32_t SDDS_DefineColumnLikeParameter(SDDS_DATASET *target, SDDS_DATASET *source, char *name, char *newName); |
---|
807 | epicsShareFuncSDDS extern int32_t SDDS_DefineColumnLikeArray(SDDS_DATASET *target, SDDS_DATASET *source, char *name, char *newName); |
---|
808 | epicsShareFuncSDDS extern int32_t SDDS_TransferAllColumnDefinitions(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source, |
---|
809 | uint32_t mode); |
---|
810 | |
---|
811 | |
---|
812 | epicsShareFuncSDDS extern PARAMETER_DEFINITION *SDDS_GetParameterDefinition(SDDS_DATASET *SDDS_dataset, char *name); |
---|
813 | epicsShareFuncSDDS extern PARAMETER_DEFINITION *SDDS_CopyParameterDefinition(PARAMETER_DEFINITION **target, PARAMETER_DEFINITION *source); |
---|
814 | epicsShareFuncSDDS extern int32_t SDDS_FreeParameterDefinition(PARAMETER_DEFINITION *source); |
---|
815 | epicsShareFuncSDDS extern int32_t SDDS_TransferParameterDefinition(SDDS_DATASET *target, SDDS_DATASET *source, char *name, char *newName); |
---|
816 | epicsShareFuncSDDS extern int32_t SDDS_DefineParameterLikeColumn(SDDS_DATASET *target, SDDS_DATASET *source, char *name, char *newName); |
---|
817 | epicsShareFuncSDDS extern int32_t SDDS_DefineParameterLikeArray(SDDS_DATASET *target, SDDS_DATASET *source, char *name, char *newName); |
---|
818 | #define SDDS_TRANSFER_KEEPOLD 0x01UL |
---|
819 | #define SDDS_TRANSFER_OVERWRITE 0x02UL |
---|
820 | epicsShareFuncSDDS extern int32_t SDDS_TransferAllParameterDefinitions(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source, |
---|
821 | uint32_t mode); |
---|
822 | |
---|
823 | epicsShareFuncSDDS extern ARRAY_DEFINITION *SDDS_GetArrayDefinition(SDDS_DATASET *SDDS_dataset, char *name); |
---|
824 | epicsShareFuncSDDS extern ARRAY_DEFINITION *SDDS_CopyArrayDefinition(ARRAY_DEFINITION **target, ARRAY_DEFINITION *source); |
---|
825 | epicsShareFuncSDDS extern int32_t SDDS_FreeArrayDefinition(ARRAY_DEFINITION *source); |
---|
826 | epicsShareFuncSDDS extern int32_t SDDS_TransferArrayDefinition(SDDS_DATASET *target, SDDS_DATASET *source, char *name, char *newName); |
---|
827 | epicsShareFuncSDDS extern int32_t SDDS_TransferAllArrayDefinitions(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source, |
---|
828 | uint32_t mode); |
---|
829 | |
---|
830 | |
---|
831 | epicsShareFuncSDDS extern ASSOCIATE_DEFINITION *SDDS_GetAssociateDefinition(SDDS_DATASET *SDDS_dataset, char *name); |
---|
832 | epicsShareFuncSDDS extern ASSOCIATE_DEFINITION *SDDS_CopyAssociateDefinition(ASSOCIATE_DEFINITION **target, ASSOCIATE_DEFINITION *source); |
---|
833 | epicsShareFuncSDDS extern int32_t SDDS_FreeAssociateDefinition(ASSOCIATE_DEFINITION *source); |
---|
834 | epicsShareFuncSDDS extern int32_t SDDS_TransferAssociateDefinition(SDDS_DATASET *target, SDDS_DATASET *source, char *name, char *newName); |
---|
835 | |
---|
836 | epicsShareFuncSDDS extern int32_t SDDS_GetColumnIndex(SDDS_DATASET *SDDS_dataset, char *name); |
---|
837 | epicsShareFuncSDDS extern int32_t SDDS_GetParameterIndex(SDDS_DATASET *SDDS_dataset, char *name); |
---|
838 | epicsShareFuncSDDS extern int32_t SDDS_GetArrayIndex(SDDS_DATASET *SDDS_dataset, char *name); |
---|
839 | epicsShareFuncSDDS extern int32_t SDDS_GetAssociateIndex(SDDS_DATASET *SDDS_dataset, char *name); |
---|
840 | epicsShareFuncSDDS extern int32_t SDDS_GetColumnType(SDDS_DATASET *SDDS_dataset, int32_t index); |
---|
841 | epicsShareFuncSDDS extern int32_t SDDS_GetNamedColumnType(SDDS_DATASET *SDDS_dataset, char *name); |
---|
842 | epicsShareFuncSDDS extern int32_t SDDS_GetParameterType(SDDS_DATASET *SDDS_dataset, int32_t index); |
---|
843 | epicsShareFuncSDDS extern int32_t SDDS_GetNamedParameterType(SDDS_DATASET *SDDS_dataset, char *name); |
---|
844 | epicsShareFuncSDDS extern int32_t SDDS_GetArrayType(SDDS_DATASET *SDDS_dataset, int32_t index); |
---|
845 | epicsShareFuncSDDS extern int32_t SDDS_GetNamedArrayType(SDDS_DATASET *SDDS_dataset, char *name); |
---|
846 | epicsShareFuncSDDS extern int32_t SDDS_GetTypeSize(int32_t type); |
---|
847 | epicsShareFuncSDDS extern char *SDDS_GetTypeName(int32_t type); |
---|
848 | epicsShareFuncSDDS extern int32_t SDDS_IdentifyType(char *typeName); |
---|
849 | |
---|
850 | #define FIND_ANY_TYPE 0 |
---|
851 | #define FIND_SPECIFIED_TYPE 1 |
---|
852 | #define FIND_NUMERIC_TYPE 2 |
---|
853 | #define FIND_INTEGER_TYPE 3 |
---|
854 | #define FIND_FLOATING_TYPE 4 |
---|
855 | |
---|
856 | epicsShareFuncSDDS extern char *SDDS_FindColumn(SDDS_DATASET *SDDS_dataset, int32_t mode, ...); |
---|
857 | epicsShareFuncSDDS extern char *SDDS_FindParameter(SDDS_DATASET *SDDS_dataset, int32_t mode, ...); |
---|
858 | epicsShareFuncSDDS extern char *SDDS_FindArray(SDDS_DATASET *SDDS_dataset, int32_t mode, ...); |
---|
859 | |
---|
860 | epicsShareFuncSDDS extern int32_t SDDS_CheckColumn(SDDS_DATASET *SDDS_dataset, char *name, char *units, int32_t type, FILE *fp_message); |
---|
861 | epicsShareFuncSDDS extern int32_t SDDS_CheckParameter(SDDS_DATASET *SDDS_dataset, char *name, char *units, int32_t type, FILE *fp_message); |
---|
862 | epicsShareFuncSDDS extern int32_t SDDS_CheckArray(SDDS_DATASET *SDDS_dataset, char *name, char *units, int32_t type, FILE *fp_message); |
---|
863 | epicsShareFuncSDDS extern int32_t SDDS_VerifyArrayExists(SDDS_DATASET *SDDS_dataset, int32_t mode, ...); |
---|
864 | epicsShareFuncSDDS extern int32_t SDDS_VerifyColumnExists(SDDS_DATASET *SDDS_dataset, int32_t mode, ...); |
---|
865 | epicsShareFuncSDDS extern int32_t SDDS_VerifyParameterExists(SDDS_DATASET *SDDS_dataset, int32_t mode, ...); |
---|
866 | epicsShareFuncSDDS extern int32_t SDDS_PrintCheckText(FILE *fp, char *name, char *units, int32_t type, char *class_name, int32_t error_code); |
---|
867 | #define SDDS_CHECK_OKAY 0 |
---|
868 | #define SDDS_CHECK_OK SDDS_CHECK_OKAY |
---|
869 | #define SDDS_CHECK_NONEXISTENT 1 |
---|
870 | #define SDDS_CHECK_WRONGTYPE 2 |
---|
871 | #define SDDS_CHECK_WRONGUNITS 3 |
---|
872 | |
---|
873 | epicsShareFuncSDDS extern int32_t SDDS_IsActive(SDDS_DATASET *SDDS_dataset); |
---|
874 | epicsShareFuncSDDS extern int32_t SDDS_ForceInactive(SDDS_DATASET *SDDS_dataset); |
---|
875 | epicsShareFuncSDDS extern int32_t SDDS_LockFile(FILE *fp, char *filename, char *callerName); |
---|
876 | epicsShareFuncSDDS extern int32_t SDDS_FileIsLocked(char *filename); |
---|
877 | epicsShareFuncSDDS extern int32_t SDDS_BreakIntoLockedFile(char *filename); |
---|
878 | |
---|
879 | epicsShareFuncSDDS extern int32_t SDDS_CopyString(char **target, char *source); |
---|
880 | epicsShareFuncSDDS extern int32_t SDDS_CopyStringArray(char **target, char **source, int32_t n_strings); |
---|
881 | epicsShareFuncSDDS extern int32_t SDDS_FreeStringArray(char **string, int32_t strings); |
---|
882 | epicsShareFuncSDDS extern int32_t SDDS_VerifyPrintfFormat(char *format_string, int32_t type); |
---|
883 | epicsShareFuncSDDS extern int32_t SDDS_HasWhitespace(char *string); |
---|
884 | epicsShareFuncSDDS extern char *fgetsSkipComments(char *s, int32_t slen, FILE *fp, char skip_char); |
---|
885 | epicsShareFuncSDDS extern char *fgetsSkipCommentsResize(char **s, int32_t *slen, FILE *fp, char skip_char); |
---|
886 | #if defined(zLib) |
---|
887 | epicsShareFuncSDDS extern char *fgetsGZipSkipComments(char *s, int32_t slen, gzFile *gzfp, char skip_char); |
---|
888 | epicsShareFuncSDDS extern char *fgetsGZipSkipCommentsResize(char **s, int32_t *slen, gzFile *gzfp, char skip_char); |
---|
889 | #endif |
---|
890 | epicsShareFuncSDDS extern void SDDS_CutOutComments(char *s, char cc); |
---|
891 | epicsShareFuncSDDS extern void SDDS_EscapeNewlines(char *s); |
---|
892 | epicsShareFuncSDDS extern void SDDS_EscapeQuotes(char *s, char quote_char); |
---|
893 | epicsShareFuncSDDS extern void SDDS_UnescapeQuotes(char *s, char quote_char); |
---|
894 | epicsShareFuncSDDS extern int32_t SDDS_IsQuoted(char *string, char *position, char quotation_mark); |
---|
895 | epicsShareFuncSDDS extern int32_t SDDS_GetToken(char *s, char *buffer, int32_t buflen); |
---|
896 | epicsShareFuncSDDS extern int32_t SDDS_GetToken2(char *s, char **st, int32_t *strlength, char *buffer, int32_t buflen); |
---|
897 | epicsShareFuncSDDS extern int32_t SDDS_PadToLength(char *string, int32_t length); |
---|
898 | epicsShareFuncSDDS extern void SDDS_EscapeCommentCharacters(char *string, char cc); |
---|
899 | epicsShareFuncSDDS extern void SDDS_InterpretEscapes(char *s); |
---|
900 | |
---|
901 | epicsShareFuncSDDS extern int32_t SDDS_ZeroMemory(void *mem, int32_t n_bytes); |
---|
902 | epicsShareFuncSDDS extern int32_t SDDS_SetMemory(void *mem, int32_t n_elements, int32_t data_type, ...); |
---|
903 | #define SDDS_PRINT_NOQUOTES 0x0001UL |
---|
904 | epicsShareFuncSDDS extern int32_t SDDS_SprintTypedValue(void *data, int32_t index, int32_t type, char *format, char *buffer, uint32_t mode); |
---|
905 | epicsShareFuncSDDS extern int32_t SDDS_PrintTypedValue(void *data, int32_t index, int32_t type, char *format, FILE *fp, uint32_t mode); |
---|
906 | epicsShareFuncSDDS extern int32_t SDDS_WriteTypedValue(void *data, int32_t index, int32_t type, char *format, FILE *fp); |
---|
907 | epicsShareFuncSDDS extern void *SDDS_CastValue(void *data, int32_t index, int32_t data_type, int32_t desired_type, void *memory); |
---|
908 | epicsShareFuncSDDS extern void SDDS_RemovePadding(char *s); |
---|
909 | epicsShareFuncSDDS extern int32_t SDDS_StringIsBlank(char *s); |
---|
910 | epicsShareFuncSDDS extern void *SDDS_AllocateMatrix(int32_t size, int32_t dim1, int32_t dim2); |
---|
911 | epicsShareFuncSDDS extern void SDDS_FreeMatrix(void **ptr, int32_t dim1); |
---|
912 | epicsShareFuncSDDS extern void SDDS_FreeArray(SDDS_ARRAY *array); |
---|
913 | epicsShareFuncSDDS extern void *SDDS_MakePointerArray(void *data, int32_t type, int32_t dimensions, int32_t *dimension); |
---|
914 | epicsShareFuncSDDS extern int32_t SDDS_ApplyFactorToParameter(SDDS_DATASET *SDDS_dataset, char *name, double factor); |
---|
915 | epicsShareFuncSDDS extern int32_t SDDS_ApplyFactorToColumn(SDDS_DATASET *SDDS_dataset, char *name, double factor); |
---|
916 | epicsShareFuncSDDS extern int32_t SDDS_DeleteParameterFixedValues(SDDS_DATASET *SDDS_dataset); |
---|
917 | epicsShareFuncSDDS extern int32_t SDDS_SetDataMode(SDDS_DATASET *SDDS_dataset, int32_t newmode); |
---|
918 | epicsShareFuncSDDS extern int32_t SDDS_CheckDataset(SDDS_DATASET *SDDS_dataset, const char *caller); |
---|
919 | epicsShareFuncSDDS extern int32_t SDDS_CheckTabularData(SDDS_DATASET *SDDS_dataset, const char *caller); |
---|
920 | epicsShareFuncSDDS extern int32_t SDDS_CheckDatasetStructureSize(int32_t size); |
---|
921 | #define SDDS_CheckTableStructureSize(a) SDDS_CheckDatasetStructureSize(a) |
---|
922 | |
---|
923 | #define TABULAR_DATA_CHECKS 0x0001UL |
---|
924 | epicsShareFuncSDDS uint32_t SDDS_SetAutoCheckMode(uint32_t newMode); |
---|
925 | |
---|
926 | epicsShareFuncSDDS extern int32_t SDDS_FlushBuffer(FILE *fp, SDDS_FILEBUFFER *fBuffer); |
---|
927 | epicsShareFuncSDDS extern int32_t SDDS_BufferedWrite(void *target, size_t targetSize, FILE *fp, SDDS_FILEBUFFER *fBuffer); |
---|
928 | |
---|
929 | epicsShareFuncSDDS extern int32_t SDDS_ScanData(char *string, int32_t type, int32_t field_length, void *data, int32_t index, int32_t is_parameter); |
---|
930 | epicsShareFuncSDDS extern int32_t SDDS_ScanData2(char *string, char **pstring, int32_t *strlength, int32_t type, int32_t field_length, void *data, int32_t index, int32_t is_parameter); |
---|
931 | |
---|
932 | epicsShareFuncSDDS extern double SDDS_ConvertToDouble(int32_t type, void *data, int32_t index); |
---|
933 | epicsShareFuncSDDS extern int32_t SDDS_ConvertToLong(int32_t type, void *data, int32_t index); |
---|
934 | |
---|
935 | epicsShareFuncSDDS extern int32_t SDDS_WriteBinaryString(char *string, FILE *fp, SDDS_FILEBUFFER *fBuffer); |
---|
936 | #if defined(zLib) |
---|
937 | epicsShareFuncSDDS extern int32_t SDDS_GZipWriteBinaryString(char *string, gzFile *gzfp, SDDS_FILEBUFFER *fBuffer); |
---|
938 | epicsShareFuncSDDS extern int32_t SDDS_GZipBufferedRead(void *target, size_t targetSize, gzFile *gzfp, SDDS_FILEBUFFER *fBuffer); |
---|
939 | epicsShareFuncSDDS extern int32_t SDDS_GZipFlushBuffer(gzFile *gzfp, SDDS_FILEBUFFER *fBuffer); |
---|
940 | epicsShareFuncSDDS extern int32_t SDDS_GZipBufferedWrite(void *target, size_t targetSize, gzFile *gzfp, SDDS_FILEBUFFER *fBuffer); |
---|
941 | #endif |
---|
942 | |
---|
943 | |
---|
944 | epicsShareFuncSDDS extern int32_t SDDS_CreateRpnMemory(char *name, short is_string); |
---|
945 | epicsShareFuncSDDS extern int32_t SDDS_CreateRpnArray(char *name); |
---|
946 | |
---|
947 | #if defined(RPN_SUPPORT) |
---|
948 | epicsShareFuncSDDS extern int32_t SDDS_FilterRowsWithRpnTest(SDDS_DATASET *SDDS_dataset, char *rpn_test); |
---|
949 | epicsShareFuncSDDS extern int32_t SDDS_StoreParametersInRpnMemories(SDDS_DATASET *SDDS_dataset); |
---|
950 | epicsShareFuncSDDS extern int32_t SDDS_StoreRowInRpnMemories(SDDS_DATASET *SDDS_dataset, int32_t row); |
---|
951 | epicsShareFuncSDDS extern int32_t SDDS_StoreColumnsInRpnArrays(SDDS_DATASET *SDDS_dataset); |
---|
952 | epicsShareFuncSDDS extern int32_t SDDS_ComputeColumn(SDDS_DATASET *SDDS_dataset, int32_t column, char *equation); |
---|
953 | epicsShareFuncSDDS extern int32_t SDDS_ComputeParameter(SDDS_DATASET *SDDS_dataset, int32_t column, char *equation); |
---|
954 | #endif |
---|
955 | |
---|
956 | #define SDDS_BIGENDIAN_SEEN 0x0001UL |
---|
957 | #define SDDS_LITTLEENDIAN_SEEN 0x0002UL |
---|
958 | #define SDDS_FIXED_ROWCOUNT_SEEN 0x0004UL |
---|
959 | #define SDDS_BIGENDIAN SDDS_BIGENDIAN_SEEN |
---|
960 | #define SDDS_LITTLEENDIAN SDDS_LITTLEENDIAN_SEEN |
---|
961 | #define SDDS_FIXED_ROWCOUNT SDDS_FIXED_ROWCOUNT_SEEN |
---|
962 | epicsShareFuncSDDS extern int32_t SDDS_IsBigEndianMachine(void); |
---|
963 | void SDDS_SwapShort(short *data); |
---|
964 | void SDDS_SwapUShort(unsigned short *data); |
---|
965 | epicsShareFuncSDDS extern void SDDS_SwapLong(int32_t *data); |
---|
966 | epicsShareFuncSDDS extern void SDDS_SwapULong(uint32_t *data); |
---|
967 | void SDDS_SwapFloat(float *data); |
---|
968 | void SDDS_SwapDouble(double *data); |
---|
969 | epicsShareFuncSDDS extern int32_t SDDS_SwapEndsArrayData(SDDS_DATASET *SDDSin); |
---|
970 | epicsShareFuncSDDS extern int32_t SDDS_SwapEndsParameterData(SDDS_DATASET *SDDSin) ; |
---|
971 | epicsShareFuncSDDS extern int32_t SDDS_SwapEndsColumnData(SDDS_DATASET *SDDSin); |
---|
972 | |
---|
973 | |
---|
974 | |
---|
975 | |
---|
976 | |
---|
977 | |
---|
978 | epicsShareFuncSDDS extern int32_t SDDS_ReadNonNativePage(SDDS_DATASET *SDDS_dataset); |
---|
979 | int32_t SDDS_ReadNonNativePageSparse(SDDS_DATASET *SDDS_dataset, uint32_t mode, |
---|
980 | int32_t sparse_interval, |
---|
981 | int32_t sparse_offset); |
---|
982 | int32_t SDDS_ReadNonNativeBinaryPage(SDDS_DATASET *SDDS_dataset, int32_t sparse_interval, int32_t sparse_offset); |
---|
983 | int32_t SDDS_ReadNonNativeBinaryParameters(SDDS_DATASET *SDDS_dataset); |
---|
984 | int32_t SDDS_ReadNonNativeBinaryArrays(SDDS_DATASET *SDDS_dataset); |
---|
985 | int32_t SDDS_ReadNonNativeBinaryRow(SDDS_DATASET *SDDS_dataset, int32_t row, int32_t skip); |
---|
986 | char *SDDS_ReadNonNativeBinaryString(FILE *fp, SDDS_FILEBUFFER *fBuffer, int32_t skip); |
---|
987 | #if defined(zLib) |
---|
988 | char *SDDS_ReadNonNativeGZipBinaryString(gzFile *gzfp, SDDS_FILEBUFFER *fBuffer, int32_t skip); |
---|
989 | #endif |
---|
990 | |
---|
991 | |
---|
992 | |
---|
993 | epicsShareFuncSDDS extern int32_t SDDS_WriteNonNativeBinaryPage(SDDS_DATASET *SDDS_dataset); |
---|
994 | int32_t SDDS_WriteNonNativeBinaryParameters(SDDS_DATASET *SDDS_dataset); |
---|
995 | int32_t SDDS_WriteNonNativeBinaryArrays(SDDS_DATASET *SDDS_dataset); |
---|
996 | int32_t SDDS_WriteNonNativeBinaryRow(SDDS_DATASET *SDDS_dataset, int32_t row); |
---|
997 | |
---|
998 | int32_t SDDS_WriteNonNativeBinaryString(char *string, FILE *fp, SDDS_FILEBUFFER *fBuffer); |
---|
999 | #if defined(zLib) |
---|
1000 | int32_t SDDS_GZipWriteNonNativeBinaryString(char *string, gzFile *gzfp, SDDS_FILEBUFFER *fBuffer); |
---|
1001 | #endif |
---|
1002 | |
---|
1003 | #if defined(SDDS_MPI_IO) && SDDS_MPI_IO |
---|
1004 | /* SDDSmpi_output.c */ |
---|
1005 | char *BlankToNull(char *string); |
---|
1006 | epicsShareFuncSDDS extern void SDDS_MPI_BOMB(char *text, MPI_File *mpi_file); |
---|
1007 | void SDDS_MPI_GOTO_ERROR(FILE *fp, char *str, int32_t mpierror, int32_t exit); |
---|
1008 | epicsShareFuncSDDS extern int32_t SDDS_MPI_File_Open(MPI_DATASET *MPI_dataset, char *filename, unsigned long flags); |
---|
1009 | char *SDDS_CreateNamelistField(char *name, char *value); |
---|
1010 | char *SDDS_CreateDescription(char *text, char *contents); |
---|
1011 | char *SDDS_CreateParameterDefinition(PARAMETER_DEFINITION *parameter_definition); |
---|
1012 | char *SDDS_CreateColumnDefinition(COLUMN_DEFINITION *column_definition); |
---|
1013 | char *SDDS_CreateArrayDefinition(ARRAY_DEFINITION *array_definition); |
---|
1014 | char *SDDS_CreateAssociateDefinition(ASSOCIATE_DEFINITION *associate_definition); |
---|
1015 | char *SDDS_CreateDataMode(DATA_MODE *data_mode); |
---|
1016 | #define SDDS_MPI_WriteTable(a) SDDS_MPI_WritePage(a) |
---|
1017 | epicsShareFuncSDDS extern int32_t SDDS_MPI_WriteLayout(SDDS_DATASET *MPI_dataset); |
---|
1018 | epicsShareFuncSDDS extern int32_t SDDS_MPI_WritePage(SDDS_DATASET *MPI_dataset); |
---|
1019 | MPI_Datatype Convert_SDDStype_To_MPItype(int32_t SDDS_type); |
---|
1020 | epicsShareFuncSDDS extern int32_t SDDS_MPI_Terminate(SDDS_DATASET *MPI_dataset); |
---|
1021 | int32_t SDDS_MPI_InitializeOutput(SDDS_DATASET *MPI_dataset, char *description, char *contents, char *filename, unsigned long flags, short column_major); |
---|
1022 | int32_t SDDS_MPI_InitializeCopy(SDDS_DATASET *MPI_dataset_target, SDDS_DATASET *SDDS_source, char *filename, short column_major); |
---|
1023 | |
---|
1024 | /*SDDS_MPI_binary.c writing data*/ |
---|
1025 | int32_t SDDS_CheckStringTruncated(void); |
---|
1026 | void SDDS_StringTuncated(void); |
---|
1027 | int32_t SDDS_SetDefaultStringLength(int32_t newValue); |
---|
1028 | int32_t SDDS_MPI_WriteBinaryPage(SDDS_DATASET *MPI_dataset); |
---|
1029 | int32_t SDDS_MPI_WriteBinaryString(SDDS_DATASET *MPI_dataset, char *string); |
---|
1030 | int32_t SDDS_MPI_WriteBinaryParameters(SDDS_DATASET *MPI_dataset); |
---|
1031 | int32_t SDDS_MPI_WriteBinaryArrays(SDDS_DATASET *MPI_dataset); |
---|
1032 | int32_t SDDS_MPI_WriteBinaryRow(SDDS_DATASET *MPI_dataset, int32_t row); |
---|
1033 | int32_t SDDS_MPI_WriteNonNativeBinaryPage(SDDS_DATASET *MPI_dataset); |
---|
1034 | int32_t SDDS_MPI_WriteNonNativeBinaryString(SDDS_DATASET *MPI_dataset, char *string); |
---|
1035 | int32_t SDDS_MPI_WriteNonNativeBinaryParameters(SDDS_DATASET *MPI_dataset); |
---|
1036 | int32_t SDDS_MPI_WriteNonNativeBinaryArrays(SDDS_DATASET *MPI_dataset); |
---|
1037 | int32_t SDDS_MPI_WriteNonNativeBinaryRow(SDDS_DATASET *MPI_dataset, int32_t row); |
---|
1038 | MPI_Offset SDDS_MPI_Get_Column_Size(SDDS_DATASET *MPI_dataset); |
---|
1039 | int32_t SDDS_MPI_CollectiveWriteByRow(SDDS_DATASET *SDDS_dataset); |
---|
1040 | int32_t SDDS_MPI_Get_Title_Size(SDDS_DATASET *MPI_dataset); |
---|
1041 | int32_t SDDS_MPI_BufferedWrite(void *target, size_t targetSize, SDDS_DATASET *MPI_dataset); |
---|
1042 | int32_t SDDS_MPI_FlushBuffer(SDDS_DATASET *MPI_Dataset); |
---|
1043 | int32_t SDDS_MPI_GetTotalRows(SDDS_DATASET *MPI_dataset); |
---|
1044 | int32_t SDDS_MPI_CountRowsOfInterest(SDDS_DATASET *SDDS_dataset, int32_t start_row, int32_t end_row); |
---|
1045 | int32_t SDDS_MPI_WriteContinuousBinaryPage(SDDS_DATASET *MPI_dataset); |
---|
1046 | MPI_Offset SDDS_MPI_GetTitleOffset(SDDS_DATASET *MPI_dataset); |
---|
1047 | /*SDDS_MPI_binary.c reading data*/ |
---|
1048 | int32_t SDDS_MPI_BufferedRead(void *target, size_t targetSize, SDDS_DATASET *MPI_dataset, SDDS_FILEBUFFER *fBuffer); |
---|
1049 | int32_t SDDS_MPI_ReadBinaryPage(SDDS_DATASET *MPI_dataset); |
---|
1050 | char *SDDS_MPI_ReadNonNativeBinaryString(SDDS_DATASET *MPI_dataset, SDDS_FILEBUFFER *fBuffer, int32_t skip); |
---|
1051 | int32_t SDDS_MPI_ReadBinaryParameters(SDDS_DATASET *MPI_dataset, SDDS_FILEBUFFER *fBuffer); |
---|
1052 | int32_t SDDS_MPI_ReadBinaryArrays(SDDS_DATASET *MPI_dataset, SDDS_FILEBUFFER *fBuffer); |
---|
1053 | int32_t SDDS_MPI_ReadBinaryRow(SDDS_DATASET *MPI_dataset, int32_t row, int32_t skip); |
---|
1054 | int32_t SDDS_MPI_ReadNonNativeBinaryParameters(SDDS_DATASET *SDDS_dataset); |
---|
1055 | int32_t SDDS_MPI_ReadNonNativeBinaryArrays(SDDS_DATASET *MPI_dataset); |
---|
1056 | int32_t SDDS_MPI_ReadNonNativeBinaryRow(SDDS_DATASET *MPI_dataset, int32_t row, int32_t skip); |
---|
1057 | int32_t SDDS_MPI_ReadBinaryPage(SDDS_DATASET *MPI_dataset); |
---|
1058 | int32_t SDDS_MPI_ReadNonNativePage(SDDS_DATASET *MPI_dataset); |
---|
1059 | int32_t SDDS_MPI_ReadNonNativePageSparse(SDDS_DATASET *MPI_dataset, uint32_t mode); |
---|
1060 | int32_t SDDS_MPI_ReadNonNativeBinaryPage(SDDS_DATASET *MPI_dataset); |
---|
1061 | int32_t SDDS_MPI_ReadNonNativeBinaryRow(SDDS_DATASET *MPI_dataset, int32_t row, int32_t skip); |
---|
1062 | int32_t SDDS_MPI_BufferedReadBinaryTitle(SDDS_DATASET *MPI_dataset); |
---|
1063 | int32_t SDDS_SetDefaultTitleBufferSize(int32_t newSize); |
---|
1064 | int32_t SDDS_MPI_WriteBinaryPageByColumn(SDDS_DATASET *MPI_dataset); |
---|
1065 | epicsShareFuncSDDS extern void SDDS_MPI_Setup(SDDS_DATASET *SDDS_dataset, int32_t parallel_io, int32_t n_processors, int32_t myid, MPI_Comm comm, short master_read); |
---|
1066 | |
---|
1067 | /*SDDSmpi_input.c */ |
---|
1068 | epicsShareFuncSDDS extern int32_t SDDS_MPI_ReadPage(SDDS_DATASET *MPI_dataset); |
---|
1069 | epicsShareFuncSDDS extern int32_t SDDS_MPI_InitializeInput(SDDS_DATASET *MPI_dataset, char *filename); |
---|
1070 | epicsShareFuncSDDS extern int32_t SDDS_MPI_InitializeInputFromSearchPath(SDDS_DATASET *MPI_dataset, char *file); |
---|
1071 | #define SDDS_MPI_TotalRowCount(SDDS_DATASET) ((SDDS_DATASET)->MPI_dataset->total_rows) |
---|
1072 | #endif |
---|
1073 | |
---|
1074 | #ifdef __cplusplus |
---|
1075 | } |
---|
1076 | #endif |
---|
1077 | |
---|
1078 | #endif |
---|