source: PSPA/madxPSPA/src/SDDS.h @ 430

Last change on this file since 430 was 430, checked in by touze, 11 years ago

import madx-5.01.00

File size: 55.9 KB
Line 
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
314extern char SDDS_mpi_error_str[MPI_MAX_ERROR_STRING];
315extern int32_t SDDS_mpi_error_str_len;
316extern char *SDDS_MPI_FILE_TYPE[];
317
318typedef 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
340extern "C" {
341#endif
342
343
344#define _SDDS_ 1
345
346#define SDDS_VERSION 2
347
348#include "SDDStypes.h"
349#if defined(_WIN32)
350typedef __int32 int32_t;
351typedef 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  /*
393extern char *SDDS_type_name[SDDS_NUM_TYPES];
394extern int32_t SDDS_type_size[SDDS_NUM_TYPES];
395extern char *SDDS_data_mode[SDDS_NUM_DATA_MODES];
396  */
397
398epicsShareExtern char *SDDS_type_name[SDDS_NUM_TYPES];
399epicsShareExtern int32_t SDDS_type_size[SDDS_NUM_TYPES];
400extern 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
410typedef 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
419typedef 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
427typedef 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
433typedef struct {
434    char *name, *filename, *path, *description, *contents;
435    int32_t sdds;
436    } ASSOCIATE_DEFINITION;
437#define SDDS_ASSOCIATE_FIELDS 6
438
439typedef struct {
440  int32_t index;
441  char *name;
442} SORTED_INDEX;
443int SDDS_CompareIndexedNames(void *s1, void *s2);
444int SDDS_CompareIndexedNamesPtr(const void *s1, const void *s2);
445
446typedef 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
456typedef 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
480typedef 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
490typedef struct {
491  char *data, *buffer;
492  int32_t bytesLeft, bufferSize;
493} SDDS_FILEBUFFER ;
494
495#define SDDS_FILEBUFFER_SIZE  262144
496
497typedef 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
549typedef SDDS_DATASET SDDS_TABLE;
550
551/* prototypes for routines to prepare and write SDDS files */
552epicsShareFuncSDDS 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);
555epicsShareFuncSDDS extern int32_t SDDS_Parallel_InitializeOutput(SDDS_DATASET *SDDS_dataset, char *description,
556                                                     char *contents, char *filename);
557epicsShareFuncSDDS extern int32_t SDDS_InitializeAppend(SDDS_DATASET *SDDS_dataset, char *filename);
558epicsShareFuncSDDS extern int32_t SDDS_InitializeAppendToPage(SDDS_DATASET *SDDS_dataset, char *filename, 
559                                                           int32_t updateInterval,
560                                                           int32_t *rowsPresentReturn);
561epicsShareFuncSDDS extern int32_t SDDS_DisconnectFile(SDDS_DATASET *SDDS_dataset);
562epicsShareFuncSDDS extern int32_t SDDS_ReconnectFile(SDDS_DATASET *SDDS_dataset);
563epicsShareFuncSDDS extern int32_t SDDS_FreeStringData(SDDS_DATASET *SDDS_dataset);
564epicsShareFuncSDDS extern int32_t SDDS_Terminate(SDDS_DATASET *SDDS_dataset);
565epicsShareFuncSDDS extern void SDDS_SetTerminateMode(uint32_t mode);
566#define TERMINATE_DONT_FREE_TABLE_STRINGS 0x0001
567#define TERMINATE_DONT_FREE_ARRAY_STRINGS 0x0002
568epicsShareFuncSDDS 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
572epicsShareFuncSDDS extern int32_t SDDS_SetAutoReadRecovery(SDDS_DATASET *SDDS_dataset, uint32_t mode);
573#define SDDS_NOAUTOREADRECOVER 0x0001UL
574#define SDDS_AUTOREADRECOVER 0x0002UL
575epicsShareFuncSDDS extern int32_t SDDS_UpdateRowCount(SDDS_DATASET *SDDS_dataset);
576epicsShareFuncSDDS extern void SDDS_DisableFSync(SDDS_DATASET *SDDS_dataset);
577epicsShareFuncSDDS extern void SDDS_EnableFSync(SDDS_DATASET *SDDS_dataset);
578epicsShareFuncSDDS extern int32_t SDDS_DoFSync(SDDS_DATASET *SDDS_dataset);
579epicsShareFuncSDDS 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);
581epicsShareFuncSDDS 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);
583epicsShareFuncSDDS 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);
585epicsShareFuncSDDS 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);
587epicsShareFuncSDDS extern int32_t SDDS_DefineAssociate(SDDS_DATASET *SDDS_dataset, char *name,
588                                 char *filename, char *path, char *description, char *contents, int32_t sdds);
589epicsShareFuncSDDS extern int32_t SDDS_IsValidName(char *name, char *dataClass);
590epicsShareFuncSDDS extern int32_t SDDS_SetNameValidityFlags(uint32_t flags);
591#define SDDS_ALLOW_ANY_NAME 0x0001UL
592#define SDDS_ALLOW_V15_NAME 0x0002UL
593epicsShareFuncSDDS extern int32_t SDDS_DefineSimpleColumn(SDDS_DATASET *SDDS_dataset, char *name, char *unit, int32_t type);
594epicsShareFuncSDDS extern int32_t SDDS_DefineSimpleParameter(SDDS_DATASET *SDDS_dataset, char *name, char *unit, int32_t type);
595epicsShareFuncSDDS extern int32_t SDDS_DefineSimpleColumns(SDDS_DATASET *SDDS_dataset, int32_t number, char **name, char **unit, int32_t type);
596epicsShareFuncSDDS extern int32_t SDDS_DefineSimpleParameters(SDDS_DATASET *SDDS_dataset, int32_t number, char **name, char **unit, int32_t type);
597epicsShareFuncSDDS extern int32_t SDDS_SetNoRowCounts(SDDS_DATASET *SDDS_dataset, int32_t value);
598epicsShareFuncSDDS extern int32_t SDDS_WriteLayout(SDDS_DATASET *SDDS_dataset);
599epicsShareFuncSDDS extern int32_t SDDS_EraseData(SDDS_DATASET *SDDS_dataset);
600
601epicsShareFuncSDDS extern int32_t SDDS_ProcessColumnString(SDDS_DATASET *SDDS_dataset, char *string, int32_t mode);
602epicsShareFuncSDDS extern int32_t SDDS_ProcessParameterString(SDDS_DATASET *SDDS_dataset, char *string, int32_t mode);
603epicsShareFuncSDDS extern int32_t SDDS_ProcessArrayString(SDDS_DATASET *SDDS_dataset, char *string);
604epicsShareFuncSDDS extern int32_t SDDS_ProcessAssociateString(SDDS_DATASET *SDDS_dataset, char *string);
605
606epicsShareFuncSDDS extern int32_t SDDS_InitializeCopy(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source, char *filename, char *filemode);
607epicsShareFuncSDDS extern int32_t SDDS_CopyLayout(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source);
608epicsShareFuncSDDS extern int32_t SDDS_AppendLayout(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source, uint32_t mode);
609epicsShareFuncSDDS extern int32_t SDDS_CopyPage(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source);
610#define SDDS_CopyTable(a, b) SDDS_CopyPage(a, b)
611epicsShareFuncSDDS extern int32_t SDDS_CopyParameters(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source);
612epicsShareFuncSDDS extern int32_t SDDS_CopyArrays(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source);
613epicsShareFuncSDDS extern int32_t SDDS_CopyColumns(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source);
614epicsShareFuncSDDS extern int32_t SDDS_CopyRowsOfInterest(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source);
615epicsShareFuncSDDS extern int32_t SDDS_CopyRow(SDDS_DATASET *SDDS_target, int32_t target_row, SDDS_DATASET *SDDS_source, int32_t source_srow);
616epicsShareFuncSDDS extern int32_t SDDS_CopyRowDirect(SDDS_DATASET *SDDS_target, int32_t target_row, SDDS_DATASET *SDDS_source, int32_t source_row);
617epicsShareFuncSDDS extern int32_t SDDS_CopyAdditionalRows(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source);
618
619epicsShareFuncSDDS extern void SDDS_DeferSavingLayout(int32_t mode);
620epicsShareFuncSDDS extern int32_t SDDS_SaveLayout(SDDS_DATASET *SDDS_dataset);
621epicsShareFuncSDDS extern int32_t SDDS_RestoreLayout(SDDS_DATASET *SDDS_dataset);
622
623#define SDDS_BY_INDEX 1
624#define SDDS_BY_NAME  2
625
626epicsShareFuncSDDS extern int32_t SDDS_StartPage(SDDS_DATASET *SDDS_dataset, int32_t expected_n_rows);
627#define SDDS_StartTable(a, b) SDDS_StartPage(a, b)
628epicsShareFuncSDDS extern int32_t SDDS_ClearPage(SDDS_DATASET *SDDS_dataset);
629epicsShareFuncSDDS extern int32_t SDDS_LengthenTable(SDDS_DATASET *SDDS_dataset, int32_t n_additional_rows);
630epicsShareFuncSDDS 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
636epicsShareFuncSDDS extern int32_t SDDS_SetParameters(SDDS_DATASET *SDDS_dataset, int32_t mode, ...);
637epicsShareFuncSDDS extern int32_t SDDS_SetRowValues(SDDS_DATASET *SDDS_dataset, int32_t mode, int32_t row, ...);
638epicsShareFuncSDDS extern int32_t SDDS_WritePage(SDDS_DATASET *SDDS_dataset);
639#define SDDS_WriteTable(a) SDDS_WritePage(a)
640epicsShareFuncSDDS 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)
643epicsShareFuncSDDS extern int32_t SDDS_SyncDataSet(SDDS_DATASET *SDDS_dataset);
644epicsShareFuncSDDS extern int32_t SDDS_SetColumn(SDDS_DATASET *SDDS_dataset, int32_t mode, void *data, int32_t rows, ...);
645epicsShareFuncSDDS extern int32_t SDDS_SetColumnFromDoubles(SDDS_DATASET *SDDS_dataset, int32_t mode, double *data, int32_t rows, ...);
646epicsShareFuncSDDS extern int32_t SDDS_SetColumnFromFloats(SDDS_DATASET *SDDS_dataset, int32_t mode, float *data, int32_t rows, ...);
647epicsShareFuncSDDS extern int32_t SDDS_SetColumnFromLongs(SDDS_DATASET *SDDS_dataset, int32_t mode, int32_t *data, int32_t rows, ...);
648epicsShareFuncSDDS 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
652epicsShareFuncSDDS extern int32_t SDDS_GetColumnInformation(SDDS_DATASET *SDDS_dataset, char *field_name, void *memory, int32_t mode, ...);
653epicsShareFuncSDDS extern int32_t SDDS_GetParameterInformation(SDDS_DATASET *SDDS_dataset, char *field_name, void *memory, int32_t mode, ...);
654epicsShareFuncSDDS extern int32_t SDDS_GetArrayInformation(SDDS_DATASET *SDDS_dataset, char *field_name, void *memory, int32_t mode, ...);
655epicsShareFuncSDDS extern int32_t SDDS_GetAssociateInformation(SDDS_DATASET *SDDS_dataset, char *field_name, void *memory, int32_t mode, ...);
656epicsShareFuncSDDS extern int32_t SDDS_ChangeColumnInformation(SDDS_DATASET *SDDS_dataset, char *field_name, void *memory, int32_t mode, ...);
657epicsShareFuncSDDS extern int32_t SDDS_ChangeParameterInformation(SDDS_DATASET *SDDS_dataset, char *field_name, void *memory, int32_t mode, ...);
658epicsShareFuncSDDS extern int32_t SDDS_ChangeArrayInformation(SDDS_DATASET *SDDS_dataset, char *field_name, void *memory, int32_t mode, ...);
659
660epicsShareFuncSDDS extern void SDDS_SetReadRecoveryMode(int32_t mode);
661epicsShareFuncSDDS extern int32_t SDDS_SetDefaultIOBufferSize(int32_t bufferSize);
662
663/* prototypes for routines to read and use SDDS files  */
664epicsShareFuncSDDS extern int32_t SDDS_InitializeInputFromSearchPath(SDDS_DATASET *SDDSin, char *file);
665epicsShareFuncSDDS extern int32_t SDDS_InitializeInput(SDDS_DATASET *SDDS_dataset, char *filename);
666epicsShareFuncSDDS extern int32_t SDDS_ReadLayout(SDDS_DATASET *SDDS_dataset, FILE *fp);
667epicsShareFuncSDDS extern int32_t SDDS_InitializeHeaderlessInput(SDDS_DATASET *SDDS_dataset, char *filename);
668epicsShareFuncSDDS extern int32_t SDDS_GetRowLimit(void);
669epicsShareFuncSDDS extern int32_t SDDS_SetRowLimit(int32_t limit);
670epicsShareFuncSDDS extern int32_t SDDS_GotoPage(SDDS_DATASET *SDDS_dataset,int32_t page_number);
671epicsShareFuncSDDS extern int32_t SDDS_CheckEndOfFile(SDDS_DATASET *SDDS_dataset);
672epicsShareFuncSDDS extern int32_t SDDS_ReadPage(SDDS_DATASET *SDDS_dataset);
673epicsShareFuncSDDS 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)
677epicsShareFuncSDDS extern int32_t SDDS_ReadAsciiPage(SDDS_DATASET *SDDS_dataset, int32_t sparse_interval,
678                               int32_t sparse_offset);
679epicsShareFuncSDDS extern int32_t SDDS_ReadRecoveryPossible(void);
680
681epicsShareFuncSDDS extern int32_t SDDS_SetColumnFlags(SDDS_DATASET *SDDS_dataset, int32_t column_flag_value);
682epicsShareFuncSDDS extern int32_t SDDS_SetRowFlags(SDDS_DATASET *SDDS_dataset, int32_t row_flag_value);
683epicsShareFuncSDDS extern int32_t SDDS_GetRowFlag(SDDS_DATASET *SDDS_dataset, int32_t row);
684epicsShareFuncSDDS extern int32_t SDDS_GetRowFlags(SDDS_DATASET *SDDS_dataset, int32_t *flag, int32_t rows);
685epicsShareFuncSDDS extern int32_t SDDS_BufferedRead(void *target, size_t targetSize, FILE *fp, SDDS_FILEBUFFER *fBuffer);
686#if defined(zLib)
687epicsShareFuncSDDS 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
693epicsShareFuncSDDS 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
718epicsShareFuncSDDS extern int32_t SDDS_MatchColumns(SDDS_DATASET *SDDS_dataset, char ***match, int32_t matchMode, int32_t typeMode, ... );
719epicsShareFuncSDDS extern int32_t SDDS_MatchParameters(SDDS_DATASET *SDDS_dataset, char ***match, int32_t matchMode, int32_t typeMode, ... );
720epicsShareFuncSDDS extern int32_t SDDS_MatchArrays(SDDS_DATASET *SDDS_dataset, char ***match, int32_t matchMode, int32_t typeMode, ... );
721epicsShareFuncSDDS extern int32_t SDDS_Logic(int32_t previous, int32_t match, uint32_t logic);
722epicsShareFuncSDDS extern int32_t SDDS_SetColumnsOfInterest(SDDS_DATASET *SDDS_dataset, int32_t mode, ...);
723epicsShareFuncSDDS extern int32_t SDDS_AssertColumnFlags(SDDS_DATASET *SDDS_dataset, uint32_t mode, ...);
724epicsShareFuncSDDS extern int32_t SDDS_SetRowsOfInterest(SDDS_DATASET *SDDS_dataset, char *selection_column, int32_t mode, ...);
725epicsShareFuncSDDS extern int32_t SDDS_MatchRowsOfInterest(SDDS_DATASET *SDDS_dataset, char *selection_column, char *label_to_match, int32_t logic);
726epicsShareFuncSDDS extern int32_t SDDS_DeleteColumn(SDDS_DATASET *SDDS_dataset, char *column_name);
727epicsShareFuncSDDS extern int32_t SDDS_DeleteParameter(SDDS_DATASET *SDDS_dataset, char *parameter_name);
728epicsShareFuncSDDS extern int32_t SDDS_DeleteUnsetColumns(SDDS_DATASET *SDDS_dataset);
729epicsShareFuncSDDS extern int32_t SDDS_CountColumnsOfInterest(SDDS_DATASET *SDDS_dataset);
730epicsShareFuncSDDS extern int32_t SDDS_ColumnIsOfInterest(SDDS_DATASET *SDDS_dataset, char *name);
731epicsShareFuncSDDS extern int32_t SDDS_ColumnCount(SDDS_DATASET *dataset);
732epicsShareFuncSDDS extern int32_t SDDS_ParameterCount(SDDS_DATASET *dataset);
733epicsShareFuncSDDS extern int32_t SDDS_ArrayCount(SDDS_DATASET *dataset);
734epicsShareFuncSDDS extern int32_t SDDS_CountRowsOfInterest(SDDS_DATASET *SDDS_dataset);
735#define SDDS_RowCount(SDDS_dataset) ((SDDS_dataset)->n_rows)
736epicsShareFuncSDDS extern int32_t SDDS_DeleteUnsetRows(SDDS_DATASET *SDDS_dataset);
737epicsShareFuncSDDS extern int32_t SDDS_FilterRowsOfInterest(SDDS_DATASET *SDDS_dataset, char *filter_column, double lower, double upper, int32_t logic);
738epicsShareFuncSDDS extern int32_t SDDS_ItemInsideWindow(void *data, int32_t index, int32_t type, double lower_limit, double upper_limit);
739epicsShareFuncSDDS 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
743epicsShareFuncSDDS extern void *SDDS_GetColumn(SDDS_DATASET *SDDS_dataset, char *column_name);
744epicsShareFuncSDDS extern void *SDDS_GetInternalColumn(SDDS_DATASET *SDDS_dataset, char *column_name);
745epicsShareFuncSDDS extern double *SDDS_GetColumnInDoubles(SDDS_DATASET *SDDS_dataset, char *column_name);
746epicsShareFuncSDDS extern float *SDDS_GetColumnInFloats(SDDS_DATASET *SDDS_dataset, char *column_name);
747epicsShareFuncSDDS extern int32_t *SDDS_GetColumnInLong(SDDS_DATASET *SDDS_dataset, char *column_name);
748epicsShareFuncSDDS extern short *SDDS_GetColumnInShort(SDDS_DATASET *SDDS_dataset, char *column_name);
749epicsShareFuncSDDS extern void *SDDS_GetNumericColumn(SDDS_DATASET *SDDS_dataset, char *column_name, int32_t desiredType);
750epicsShareFuncSDDS extern void *SDDS_GetRow(SDDS_DATASET *SDDS_dataset, int32_t srow_index, void *memory);
751epicsShareFuncSDDS extern void *SDDS_GetValue(SDDS_DATASET *SDDS_dataset, char *column_name, int32_t srow_index, void *memory);
752epicsShareFuncSDDS extern void *SDDS_GetValueByIndex(SDDS_DATASET *SDDS_dataset, int32_t column_index, int32_t srow_index, void *memory);
753epicsShareFuncSDDS extern void *SDDS_GetValueByAbsIndex(SDDS_DATASET *SDDS_dataset, int32_t column_index, int32_t srow_index, void *memory);
754epicsShareFuncSDDS extern void *SDDS_GetParameter(SDDS_DATASET *SDDS_dataset, char *parameter_name, void *memory);
755epicsShareFuncSDDS extern void *SDDS_GetParameterByIndex(SDDS_DATASET *SDDS_dataset, int32_t index, void *memory);
756epicsShareFuncSDDS extern double *SDDS_GetParameterAsDouble(SDDS_DATASET *SDDS_dataset, char *parameter_name, double *data);
757epicsShareFuncSDDS extern int32_t *SDDS_GetParameterAsLong(SDDS_DATASET *SDDS_dataset, char *parameter_name, int32_t *data);
758epicsShareFuncSDDS extern char *SDDS_GetParameterAsString(SDDS_DATASET *SDDS_dataset, char *parameter_name, char **memory);
759epicsShareFuncSDDS extern int32_t SDDS_GetParameters(SDDS_DATASET *SDDS_dataset, ...);
760epicsShareFuncSDDS extern void *SDDS_GetFixedValueParameter(SDDS_DATASET *SDDS_dataset, char *parameter_name, void *memory);
761epicsShareFuncSDDS extern int32_t SDDS_GetDescription(SDDS_DATASET *SDDS_dataset, char **text, char **contents);
762
763epicsShareFuncSDDS extern void *SDDS_GetMatrixOfRows(SDDS_DATASET *SDDS_dataset, int32_t *n_rows);
764epicsShareFuncSDDS 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
767epicsShareFuncSDDS extern void *SDDS_GetMatrixFromColumn(SDDS_DATASET *SDDS_dataset, char *column_name, int32_t dimension1, int32_t dimension2, int32_t mode);
768epicsShareFuncSDDS extern void *SDDS_GetDoubleMatrixFromColumn(SDDS_DATASET *SDDS_dataset, char *column_name, int32_t dimension1, int32_t dimension2, int32_t mode);
769
770epicsShareFuncSDDS 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
773epicsShareFuncSDDS extern double *SDDS_GetArrayInDoubles(SDDS_DATASET *SDDS_dataset, char *array_name, int32_t *values);
774epicsShareFuncSDDS extern int32_t SDDS_SetArrayVararg(SDDS_DATASET *SDDS_dataset, char *array_name, int32_t mode, void *data_pointer, ...);
775epicsShareFuncSDDS extern int32_t SDDS_SetArray(SDDS_DATASET *SDDS_dataset, char *array_name, int32_t mode, void *data_pointer, int32_t *dimension);
776epicsShareFuncSDDS 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: */
780epicsShareFuncSDDS extern void *SDDS_Realloc(void *old_ptr, size_t new_size);
781epicsShareFuncSDDS extern void *SDDS_Malloc(size_t size);
782epicsShareFuncSDDS extern void SDDS_Free(void *mem);
783epicsShareFuncSDDS extern void *SDDS_Calloc(size_t nelem, size_t elem_size);
784epicsShareFuncSDDS extern int32_t SDDS_NumberOfErrors(void);
785epicsShareFuncSDDS extern void SDDS_ClearErrors(void);
786epicsShareFuncSDDS extern void SDDS_SetError(char *error_text);
787epicsShareFuncSDDS extern void SDDS_Bomb(char *message);
788epicsShareFuncSDDS extern void SDDS_Warning(char *message);
789epicsShareFuncSDDS extern void SDDS_RegisterProgramName(const char *name);
790#define SDDS_VERBOSE_PrintErrors 1
791#define SDDS_EXIT_PrintErrors 2
792epicsShareFuncSDDS extern void SDDS_PrintErrors(FILE *fp, int32_t mode);
793#define SDDS_LAST_GetErrorMessages 0
794#define SDDS_ALL_GetErrorMessages 1
795epicsShareFuncSDDS extern char **SDDS_GetErrorMessages(int32_t *number, int32_t mode);
796
797epicsShareFuncSDDS extern char **SDDS_GetColumnNames(SDDS_DATASET *SDDS_dataset, int32_t *number);
798epicsShareFuncSDDS extern char **SDDS_GetParameterNames(SDDS_DATASET *SDDS_dataset, int32_t *number);
799epicsShareFuncSDDS extern char **SDDS_GetAssociateNames(SDDS_DATASET *SDDS_dataset, int32_t *number);
800epicsShareFuncSDDS extern char **SDDS_GetArrayNames(SDDS_DATASET *SDDS_dataset, int32_t *number);
801
802epicsShareFuncSDDS extern COLUMN_DEFINITION *SDDS_GetColumnDefinition(SDDS_DATASET *SDDS_dataset, char *name);
803epicsShareFuncSDDS extern COLUMN_DEFINITION *SDDS_CopyColumnDefinition(COLUMN_DEFINITION **target, COLUMN_DEFINITION *source);
804epicsShareFuncSDDS extern int32_t SDDS_FreeColumnDefinition(COLUMN_DEFINITION *source);
805epicsShareFuncSDDS extern int32_t SDDS_TransferColumnDefinition(SDDS_DATASET *target, SDDS_DATASET *source, char *name, char *newName);
806epicsShareFuncSDDS extern int32_t SDDS_DefineColumnLikeParameter(SDDS_DATASET *target, SDDS_DATASET *source, char *name, char *newName);
807epicsShareFuncSDDS extern int32_t SDDS_DefineColumnLikeArray(SDDS_DATASET *target, SDDS_DATASET *source, char *name, char *newName);
808epicsShareFuncSDDS extern int32_t SDDS_TransferAllColumnDefinitions(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source,
809                                              uint32_t mode);
810
811
812epicsShareFuncSDDS extern PARAMETER_DEFINITION *SDDS_GetParameterDefinition(SDDS_DATASET *SDDS_dataset, char *name);
813epicsShareFuncSDDS extern PARAMETER_DEFINITION *SDDS_CopyParameterDefinition(PARAMETER_DEFINITION **target, PARAMETER_DEFINITION *source);
814epicsShareFuncSDDS extern int32_t SDDS_FreeParameterDefinition(PARAMETER_DEFINITION *source);
815epicsShareFuncSDDS extern int32_t SDDS_TransferParameterDefinition(SDDS_DATASET *target, SDDS_DATASET *source, char *name, char *newName);
816epicsShareFuncSDDS extern int32_t SDDS_DefineParameterLikeColumn(SDDS_DATASET *target, SDDS_DATASET *source, char *name, char *newName);
817epicsShareFuncSDDS 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
820epicsShareFuncSDDS extern int32_t SDDS_TransferAllParameterDefinitions(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source, 
821                                                 uint32_t mode);
822
823epicsShareFuncSDDS extern ARRAY_DEFINITION *SDDS_GetArrayDefinition(SDDS_DATASET *SDDS_dataset, char *name);
824epicsShareFuncSDDS extern ARRAY_DEFINITION *SDDS_CopyArrayDefinition(ARRAY_DEFINITION **target, ARRAY_DEFINITION *source);
825epicsShareFuncSDDS extern int32_t SDDS_FreeArrayDefinition(ARRAY_DEFINITION *source);
826epicsShareFuncSDDS extern int32_t SDDS_TransferArrayDefinition(SDDS_DATASET *target, SDDS_DATASET *source, char *name, char *newName);
827epicsShareFuncSDDS extern int32_t SDDS_TransferAllArrayDefinitions(SDDS_DATASET *SDDS_target, SDDS_DATASET *SDDS_source,
828                                             uint32_t mode);
829
830
831epicsShareFuncSDDS extern ASSOCIATE_DEFINITION *SDDS_GetAssociateDefinition(SDDS_DATASET *SDDS_dataset, char *name);
832epicsShareFuncSDDS extern ASSOCIATE_DEFINITION *SDDS_CopyAssociateDefinition(ASSOCIATE_DEFINITION **target, ASSOCIATE_DEFINITION *source);
833epicsShareFuncSDDS extern int32_t SDDS_FreeAssociateDefinition(ASSOCIATE_DEFINITION *source);
834epicsShareFuncSDDS extern int32_t SDDS_TransferAssociateDefinition(SDDS_DATASET *target, SDDS_DATASET *source, char *name, char *newName);
835
836epicsShareFuncSDDS extern int32_t SDDS_GetColumnIndex(SDDS_DATASET *SDDS_dataset, char *name);
837epicsShareFuncSDDS extern int32_t SDDS_GetParameterIndex(SDDS_DATASET *SDDS_dataset, char *name);
838epicsShareFuncSDDS extern int32_t SDDS_GetArrayIndex(SDDS_DATASET *SDDS_dataset, char *name);
839epicsShareFuncSDDS extern int32_t SDDS_GetAssociateIndex(SDDS_DATASET *SDDS_dataset, char *name);
840epicsShareFuncSDDS extern int32_t SDDS_GetColumnType(SDDS_DATASET *SDDS_dataset, int32_t index);
841epicsShareFuncSDDS extern int32_t SDDS_GetNamedColumnType(SDDS_DATASET *SDDS_dataset, char *name);
842epicsShareFuncSDDS extern int32_t SDDS_GetParameterType(SDDS_DATASET *SDDS_dataset, int32_t index);
843epicsShareFuncSDDS extern int32_t SDDS_GetNamedParameterType(SDDS_DATASET *SDDS_dataset, char *name);
844epicsShareFuncSDDS extern int32_t SDDS_GetArrayType(SDDS_DATASET *SDDS_dataset, int32_t index);
845epicsShareFuncSDDS extern int32_t SDDS_GetNamedArrayType(SDDS_DATASET *SDDS_dataset, char *name);
846epicsShareFuncSDDS extern int32_t SDDS_GetTypeSize(int32_t type);
847epicsShareFuncSDDS extern char *SDDS_GetTypeName(int32_t type);
848epicsShareFuncSDDS 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
856epicsShareFuncSDDS extern char *SDDS_FindColumn(SDDS_DATASET *SDDS_dataset,  int32_t mode, ...);
857epicsShareFuncSDDS extern char *SDDS_FindParameter(SDDS_DATASET *SDDS_dataset,  int32_t mode, ...);
858epicsShareFuncSDDS extern char *SDDS_FindArray(SDDS_DATASET *SDDS_dataset,  int32_t mode, ...);
859
860epicsShareFuncSDDS extern int32_t SDDS_CheckColumn(SDDS_DATASET *SDDS_dataset, char *name, char *units, int32_t type, FILE *fp_message);
861epicsShareFuncSDDS extern int32_t SDDS_CheckParameter(SDDS_DATASET *SDDS_dataset, char *name, char *units, int32_t type, FILE *fp_message);
862epicsShareFuncSDDS extern int32_t SDDS_CheckArray(SDDS_DATASET *SDDS_dataset, char *name, char *units, int32_t type, FILE *fp_message);
863epicsShareFuncSDDS extern int32_t SDDS_VerifyArrayExists(SDDS_DATASET *SDDS_dataset, int32_t mode, ...);
864epicsShareFuncSDDS extern int32_t SDDS_VerifyColumnExists(SDDS_DATASET *SDDS_dataset, int32_t mode, ...);
865epicsShareFuncSDDS extern int32_t SDDS_VerifyParameterExists(SDDS_DATASET *SDDS_dataset, int32_t mode, ...);
866epicsShareFuncSDDS 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
873epicsShareFuncSDDS extern int32_t SDDS_IsActive(SDDS_DATASET *SDDS_dataset);
874epicsShareFuncSDDS extern int32_t SDDS_ForceInactive(SDDS_DATASET *SDDS_dataset);
875epicsShareFuncSDDS extern int32_t SDDS_LockFile(FILE *fp, char *filename, char *callerName);
876epicsShareFuncSDDS extern int32_t SDDS_FileIsLocked(char *filename);
877epicsShareFuncSDDS extern int32_t SDDS_BreakIntoLockedFile(char *filename);
878
879epicsShareFuncSDDS extern int32_t SDDS_CopyString(char **target, char *source);
880epicsShareFuncSDDS extern int32_t SDDS_CopyStringArray(char **target, char **source, int32_t n_strings);
881epicsShareFuncSDDS extern int32_t SDDS_FreeStringArray(char **string, int32_t strings);
882epicsShareFuncSDDS extern int32_t SDDS_VerifyPrintfFormat(char *format_string, int32_t type);
883epicsShareFuncSDDS extern int32_t SDDS_HasWhitespace(char *string);
884epicsShareFuncSDDS extern char *fgetsSkipComments(char *s, int32_t slen, FILE *fp, char skip_char);
885epicsShareFuncSDDS extern char *fgetsSkipCommentsResize(char **s, int32_t *slen, FILE *fp, char skip_char);
886#if defined(zLib)
887epicsShareFuncSDDS extern char *fgetsGZipSkipComments(char *s, int32_t slen, gzFile *gzfp, char skip_char);
888epicsShareFuncSDDS extern char *fgetsGZipSkipCommentsResize(char **s, int32_t *slen, gzFile *gzfp, char skip_char);
889#endif
890epicsShareFuncSDDS extern void SDDS_CutOutComments(char *s, char cc);
891epicsShareFuncSDDS extern void SDDS_EscapeNewlines(char *s);
892epicsShareFuncSDDS extern void SDDS_EscapeQuotes(char *s, char quote_char);
893epicsShareFuncSDDS extern void SDDS_UnescapeQuotes(char *s, char quote_char);
894epicsShareFuncSDDS extern int32_t SDDS_IsQuoted(char *string, char *position, char quotation_mark);
895epicsShareFuncSDDS extern int32_t SDDS_GetToken(char *s, char *buffer, int32_t buflen);
896epicsShareFuncSDDS extern int32_t SDDS_GetToken2(char *s, char **st, int32_t *strlength, char *buffer, int32_t buflen);
897epicsShareFuncSDDS extern int32_t SDDS_PadToLength(char *string, int32_t length);
898epicsShareFuncSDDS extern void SDDS_EscapeCommentCharacters(char *string, char cc);
899epicsShareFuncSDDS extern void SDDS_InterpretEscapes(char *s);
900
901epicsShareFuncSDDS extern int32_t SDDS_ZeroMemory(void *mem, int32_t n_bytes);
902epicsShareFuncSDDS extern int32_t SDDS_SetMemory(void *mem, int32_t n_elements, int32_t data_type, ...);
903#define SDDS_PRINT_NOQUOTES 0x0001UL
904epicsShareFuncSDDS extern int32_t SDDS_SprintTypedValue(void *data, int32_t index, int32_t type, char *format, char *buffer, uint32_t mode);
905epicsShareFuncSDDS extern int32_t SDDS_PrintTypedValue(void *data, int32_t index, int32_t type, char *format, FILE *fp, uint32_t mode);
906epicsShareFuncSDDS extern int32_t SDDS_WriteTypedValue(void *data, int32_t index, int32_t type, char *format, FILE *fp);
907epicsShareFuncSDDS extern void *SDDS_CastValue(void *data, int32_t index, int32_t data_type, int32_t desired_type, void *memory);
908epicsShareFuncSDDS extern void SDDS_RemovePadding(char *s);
909epicsShareFuncSDDS extern int32_t SDDS_StringIsBlank(char *s);
910epicsShareFuncSDDS extern void *SDDS_AllocateMatrix(int32_t size, int32_t dim1, int32_t dim2);
911epicsShareFuncSDDS extern void SDDS_FreeMatrix(void **ptr, int32_t dim1);
912epicsShareFuncSDDS extern void SDDS_FreeArray(SDDS_ARRAY *array);
913epicsShareFuncSDDS extern void *SDDS_MakePointerArray(void *data, int32_t type, int32_t dimensions, int32_t *dimension);
914epicsShareFuncSDDS extern int32_t SDDS_ApplyFactorToParameter(SDDS_DATASET *SDDS_dataset, char *name, double factor);
915epicsShareFuncSDDS extern int32_t SDDS_ApplyFactorToColumn(SDDS_DATASET *SDDS_dataset, char *name, double factor);
916epicsShareFuncSDDS extern int32_t SDDS_DeleteParameterFixedValues(SDDS_DATASET *SDDS_dataset);
917epicsShareFuncSDDS extern int32_t SDDS_SetDataMode(SDDS_DATASET *SDDS_dataset, int32_t newmode);
918epicsShareFuncSDDS extern int32_t SDDS_CheckDataset(SDDS_DATASET *SDDS_dataset, const char *caller);
919epicsShareFuncSDDS extern int32_t SDDS_CheckTabularData(SDDS_DATASET *SDDS_dataset, const char *caller);
920epicsShareFuncSDDS extern int32_t SDDS_CheckDatasetStructureSize(int32_t size);
921#define SDDS_CheckTableStructureSize(a) SDDS_CheckDatasetStructureSize(a)
922
923#define TABULAR_DATA_CHECKS 0x0001UL
924epicsShareFuncSDDS uint32_t SDDS_SetAutoCheckMode(uint32_t newMode);
925
926epicsShareFuncSDDS extern int32_t SDDS_FlushBuffer(FILE *fp, SDDS_FILEBUFFER *fBuffer);
927epicsShareFuncSDDS extern int32_t SDDS_BufferedWrite(void *target, size_t targetSize, FILE *fp, SDDS_FILEBUFFER *fBuffer);
928
929epicsShareFuncSDDS extern int32_t SDDS_ScanData(char *string, int32_t type, int32_t field_length, void *data, int32_t index, int32_t is_parameter);
930epicsShareFuncSDDS 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
932epicsShareFuncSDDS extern double SDDS_ConvertToDouble(int32_t type, void *data, int32_t index);
933epicsShareFuncSDDS extern int32_t SDDS_ConvertToLong(int32_t type, void *data, int32_t index);
934
935epicsShareFuncSDDS extern int32_t SDDS_WriteBinaryString(char *string, FILE *fp, SDDS_FILEBUFFER *fBuffer);
936#if defined(zLib)
937epicsShareFuncSDDS extern int32_t SDDS_GZipWriteBinaryString(char *string, gzFile *gzfp, SDDS_FILEBUFFER *fBuffer);
938epicsShareFuncSDDS extern int32_t SDDS_GZipBufferedRead(void *target, size_t targetSize, gzFile *gzfp, SDDS_FILEBUFFER *fBuffer);
939epicsShareFuncSDDS extern int32_t SDDS_GZipFlushBuffer(gzFile *gzfp, SDDS_FILEBUFFER *fBuffer);
940epicsShareFuncSDDS extern int32_t SDDS_GZipBufferedWrite(void *target, size_t targetSize, gzFile *gzfp, SDDS_FILEBUFFER *fBuffer);
941#endif
942
943
944epicsShareFuncSDDS extern int32_t SDDS_CreateRpnMemory(char *name, short is_string);
945epicsShareFuncSDDS extern int32_t SDDS_CreateRpnArray(char *name);
946
947#if defined(RPN_SUPPORT)
948epicsShareFuncSDDS extern int32_t SDDS_FilterRowsWithRpnTest(SDDS_DATASET *SDDS_dataset, char *rpn_test);
949epicsShareFuncSDDS extern int32_t SDDS_StoreParametersInRpnMemories(SDDS_DATASET *SDDS_dataset);
950epicsShareFuncSDDS extern int32_t SDDS_StoreRowInRpnMemories(SDDS_DATASET *SDDS_dataset, int32_t row);
951epicsShareFuncSDDS extern int32_t SDDS_StoreColumnsInRpnArrays(SDDS_DATASET *SDDS_dataset);
952epicsShareFuncSDDS extern int32_t SDDS_ComputeColumn(SDDS_DATASET *SDDS_dataset, int32_t column, char *equation);
953epicsShareFuncSDDS 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
962epicsShareFuncSDDS extern int32_t SDDS_IsBigEndianMachine(void);
963void SDDS_SwapShort(short *data);
964void SDDS_SwapUShort(unsigned short *data);
965epicsShareFuncSDDS extern void SDDS_SwapLong(int32_t *data);
966epicsShareFuncSDDS extern void SDDS_SwapULong(uint32_t *data);
967void SDDS_SwapFloat(float *data);
968void SDDS_SwapDouble(double *data);
969epicsShareFuncSDDS extern int32_t SDDS_SwapEndsArrayData(SDDS_DATASET *SDDSin);
970epicsShareFuncSDDS extern int32_t SDDS_SwapEndsParameterData(SDDS_DATASET *SDDSin) ;
971epicsShareFuncSDDS extern int32_t SDDS_SwapEndsColumnData(SDDS_DATASET *SDDSin);
972
973
974
975
976
977
978epicsShareFuncSDDS extern int32_t SDDS_ReadNonNativePage(SDDS_DATASET *SDDS_dataset);
979int32_t SDDS_ReadNonNativePageSparse(SDDS_DATASET *SDDS_dataset, uint32_t mode,
980                         int32_t sparse_interval,
981                         int32_t sparse_offset);
982int32_t SDDS_ReadNonNativeBinaryPage(SDDS_DATASET *SDDS_dataset, int32_t sparse_interval, int32_t sparse_offset);
983int32_t SDDS_ReadNonNativeBinaryParameters(SDDS_DATASET *SDDS_dataset);
984int32_t SDDS_ReadNonNativeBinaryArrays(SDDS_DATASET *SDDS_dataset);
985int32_t SDDS_ReadNonNativeBinaryRow(SDDS_DATASET *SDDS_dataset, int32_t row, int32_t skip);
986char *SDDS_ReadNonNativeBinaryString(FILE *fp, SDDS_FILEBUFFER *fBuffer, int32_t skip);
987#if defined(zLib)
988char *SDDS_ReadNonNativeGZipBinaryString(gzFile *gzfp, SDDS_FILEBUFFER *fBuffer, int32_t skip);
989#endif
990
991
992
993epicsShareFuncSDDS extern int32_t SDDS_WriteNonNativeBinaryPage(SDDS_DATASET *SDDS_dataset);
994int32_t SDDS_WriteNonNativeBinaryParameters(SDDS_DATASET *SDDS_dataset);
995int32_t SDDS_WriteNonNativeBinaryArrays(SDDS_DATASET *SDDS_dataset);
996int32_t SDDS_WriteNonNativeBinaryRow(SDDS_DATASET *SDDS_dataset, int32_t row);
997
998int32_t SDDS_WriteNonNativeBinaryString(char *string, FILE *fp, SDDS_FILEBUFFER *fBuffer);
999#if defined(zLib)
1000int32_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
Note: See TracBrowser for help on using the repository browser.