Belle II Software development
nsmparse.h
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#ifndef __nsmparse_h__
10#define __nsmparse_h__
11
12#if defined(__cplusplus)
13extern "C" {
14#endif
15
16/* NSMparse */
18 /* type is encoded in a char ---
19 'c': int8_t, 's': int16_t, 'i': int32_t, 'l': int64_t,
20 'C': uint8_t, 'S': uint16_t, 'I': uint16_t, 'L': uint64_t,
21 'f': float, 'd': double, '(': nested-begin, ')' nested-end
22
23 nested-begin has NSMparse entry with type = 0,
24 size = (sizeof(nested)/sizeof(nested[0])) of nested struct,
25 offset = start of nested, name = ""
26 */
27 char type;
28 char name[256];
29 int size; /* of array */
30 int bytes; /* of this type */
31 int offset; /* from the beginning */
32 struct NSMparse_struct* next;
33};
34
35#ifndef __nsm2_typedef_parse__
36#define __nsm2_typedef_parse__
37typedef struct NSMparse_struct NSMparse;
38#endif /* nsm2_typedef_parse */
39
40NSMparse* nsmlib_parsefile(const char* datname, int revision,
41 const char* incpath, char* fmtstr, int* revisionp);
42void nsmlib_parsefree(NSMparse*);
43const char* nsmlib_parseerr(int* code);
44
45#if defined(__cplusplus)
46}
47#endif
48
49#endif /* __nsmparse_h__ */