Belle II Software  release-08-01-10
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)
13 extern "C" {
14 #endif
15 #if defined(__dummy_close_bracket_to_cheat_emacs_auto_indent)
16 }
17 #endif
18 
19 /* NSMparse */
21  /* type is encoded in a char ---
22  'c': int8_t, 's': int16_t, 'i': int32_t, 'l': int64_t,
23  'C': uint8_t, 'S': uint16_t, 'I': uint16_t, 'L': uint64_t,
24  'f': float, 'd': double, '(': nested-begin, ')' nested-end
25 
26  nested-begin has NSMparse entry with type = 0,
27  size = (sizeof(nested)/sizeof(nested[0])) of nested struct,
28  offset = start of nested, name = ""
29  */
30  char type;
31  char name[256];
32  int size; /* of array */
33  int bytes; /* of this type */
34  int offset; /* from the beginning */
35  struct NSMparse_struct* next;
36 };
37 
38 #ifndef __nsm2_typedef_parse__
39 #define __nsm2_typedef_parse__
40 typedef struct NSMparse_struct NSMparse;
41 #endif /* nsm2_typedef_parse */
42 
43 NSMparse* nsmlib_parsefile(const char* datname, int revision,
44  const char* incpath, char* fmtstr, int* revisionp);
45 void nsmlib_parsefree(NSMparse*);
46 const char* nsmlib_parseerr(int* code);
47 
48 #if defined(__dummy_open_bracket_to_cheat_emacs_auto_indent)
49 __dummy_open_bracket_to_cheat_emacs_auto_indent {
50 #endif
51 #if defined(__cplusplus)
52 }
53 #endif
54 
55 #endif /* __nsmparse_h__ */