This file is indexed.

/usr/include/ncarg/ncl/NclAdvancedFileStructure.h is in libncarg-dev 6.3.0-13.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
#ifndef NclNewFileStructure_h
#define NclNewFileStructure_h

#undef MAX_BLANK_SPACE_LENGTH
#define MAX_BLANK_SPACE_LENGTH  1024

#define NCL_MINIMUM_ATTS    2
#define NCL_MINIMUM_DIMS    2
#define NCL_MINIMUM_COORDS    2
#define NCL_MINIMUM_VARS    4
#define NCL_MINIMUM_GRPS    2

#include <netcdf.h>
#include "NclList.h"
#include "NclOptions.h"

typedef enum
{
    NCL_UDT_none = 0,
    NCL_UDT_compound,
    NCL_UDT_vlen,
    NCL_UDT_enum,
    NCL_UDT_opaque,
    NCL_UDT_string
} NclUDTType;

typedef struct _NclFileUserDefinedTypeNode
{
    ng_size_t         id;
    size_t            size;
    int               ncl_class;
    int               max_fields;
    int               n_fields;
    NclQuark          name;
    ng_size_t         type;
    NclQuark          *mem_name;
    NclBasicDataTypes *mem_type;
} NclFileUDTNode;

typedef struct _NclFileUserDefinedTypeRecord
{
    ng_size_t       gid;
    ng_size_t       uid;
    int             max_udts;
    int             n_udts;
    NclFileUDTNode *udt_node;
} NclFileUDTRecord;

typedef struct _NclFileDimNode
{
    ng_size_t id;
    NclQuark  name;
    NclQuark  description;
    NclQuark  dataset_name;
    ng_size_t size;
    int       is_unlimited;
    int       is_dataset;
} NclFileDimNode;

typedef struct _NclFileDimRecord
{
    ng_size_t       gid;
    int             max_dims;
    int             n_dims;
    NclFileDimNode *dim_node;
} NclFileDimRecord;

typedef struct _NclFileAttNode
{
    NclQuark          name;
    NclBasicDataTypes type;
    ng_size_t         id;
    int               n_elem;
    void             *value;
    nc_type           base_type;
    nc_type           the_nc_type;
    int               is_virtual;
    int               is_compound;
    int               is_vlen;
    int               is_opaque;
    int               is_enum;
} NclFileAttNode;

typedef struct _NclFileAttRecord
{
    ng_size_t       gid;
    ng_size_t       aid;
    ng_size_t       id;
    int             max_atts;
    int             n_atts;
    NclFileAttNode *att_node;

    _NhlCB                   cb;
    struct _FileCallBackRec *udata;
} NclFileAttRecord;

typedef struct _NclFileCompoundNode
{
    NclQuark             name;
    NclBasicDataTypes    type;
    nc_type              the_nc_type;
    size_t               offset;
    int                  rank;
    int                  nvals;
    int                 *sides;

    void                *value;
} NclFileCompoundNode;

typedef struct _NclFileCompoundRecord
{
    size_t            max_comps;
    size_t            n_comps;   /* aka nfields */
    size_t            type;
    size_t            size;
    size_t            nfields;
    NclQuark          name;
    nc_type           xtype;
    nc_type           base_nc_type;
    void             *value;

    NclFileCompoundNode    *compnode;

} NclFileCompoundRecord;

typedef struct _NclFileEnumNode
{
    NclQuark          name;
    long long         value;
} NclFileEnumNode;

typedef struct _NclFileEnumRecord
{
    size_t            max_enums;
    size_t            n_enums;   /* aka num_members */
    NclQuark          name;
    size_t            type;
    size_t            size;
    nc_type           xtype;
    nc_type           base_nc_type;

    void             *values;
    NclFileEnumNode  *enum_node;
} NclFileEnumRecord;

typedef struct _NclFileOpaqueRecord
{
    NclQuark name;
    size_t   max_opaques;
    size_t   n_opaques; 
    size_t   type;
    size_t   size;
    nc_type  xtype;
    nc_type  base_nc_type;

    void    *values;
} NclFileOpaqueRecord;

typedef struct _NclFileVlenRecord
{
    NclQuark name;
    size_t   max_vlens;
    size_t   n_vlens; 
    size_t   type;
    size_t   size;
    nc_type  xtype;
    nc_type  base_nc_type;
    NclBasicDataTypes ncl_type;
    int      ncl_class;
    int     *vs;
    int     *ve;

    void    *values;
} NclFileVlenRecord;

typedef struct _NclFileVarNode
{
    ng_size_t         id;
    ng_size_t         gid;
    NclQuark          name;
    NclQuark          real_name;
    NclQuark          short_name;
    NclQuark          full_name;
    NclQuark          index_dim;
    NclQuark          class_name;
    NclBasicDataTypes type;
    NclBasicDataTypes base_type;
    nc_type           the_nc_type;

    NclFileDimRecord *dim_rec;

    int               is_chunked;

    NclFileDimRecord *chunk_dim_rec;
    NclUDTType             udt_type;
    int                    is_compound;
    NclFileCompoundRecord *comprec;

    NclFileAttRecord *att_rec;

    int               shuffle;
    int               compress_level;
    int               use_cache;
    ng_size_t         cache_size;
    ng_size_t         cache_nelems;
    float             cache_preemption;

    void             *udt;

    void             *value;
} NclFileVarNode;

typedef struct _NclFileVarRecord
{
    ng_size_t       gid;
    int             max_vars;
    int             n_vars;
    NclFileVarNode *var_node;
} NclFileVarRecord;

typedef struct _NclFileCoordVarRecord
{
    int            max_vars;
    int            n_vars;
    NclFileVarNode        **var_node;
} NclFileCoordVarRecord;

typedef struct _NclFileGrpRecord    NclFileGrpRecord;
typedef struct _NclFileGrpNode      NclFileGrpNode;

struct _NclFileGrpNode
{
    ng_size_t            fid;
    ng_size_t            gid;
    ng_size_t            pid;
    
    NclQuark             name;
    NclQuark             pname;
    NclQuark             real_name;

    NclQuark             path;
    NclQuark             extension;
    NclQuark             kind;

    NclFileFormat        file_format;
    int                  status;
    int                  open;
    int                  format;
    int                  define_mode;
    int                  has_scalar_dim;
    int                  header_reserve_space;

    void                *other_src;

    int                  shuffle;
    int                  compress_level;
    int                  use_cache;
    ng_size_t            cache_size;
    ng_size_t            cache_nelems;
    float                cache_preemption;

    int                  n_options;
    NCLOptions          *options;

    int                  is_chunked;

    NclFileDimRecord    *chunk_dim_rec;
    NclFileDimRecord    *dim_rec;
    NclFileDimRecord    *unlimit_dim_rec;
    NclFileAttRecord    *att_rec;
    NclFileVarRecord    *var_rec;
    NclFileCoordVarRecord    *coord_var_rec;
    NclFileGrpRecord    *grp_rec;
    NclFileUDTRecord    *udt_rec;

    NclFileGrpNode      *parent;
};

struct _NclFileGrpRecord
{
    int        max_grps;
    int        n_grps;
    NclFileGrpNode  **grp_node;
};

NclFileCompoundRecord *_NclFileCompoundAlloc(int n_comps);
NclFileCoordVarRecord *_NclFileCoordVarAlloc(int n_vars);

NclFileGrpRecord *_NclFileGrpAlloc(int n_grps);
NclFileVarRecord *_NclFileVarAlloc(int n_vars);
NclFileAttRecord *_NclFileAttAlloc(int n_atts);
NclFileDimRecord *_NclFileDimAlloc(int n_dims);
NclFileUDTRecord *_NclFileUDTAlloc(int n_udts);

void _NclFileGrpRealloc(NclFileGrpRecord *grp_rec);
void _NclFileVarRealloc(NclFileVarRecord *var_rec);
void _NclFileAttRealloc(NclFileAttRecord **att_rec);
void _NclFileDimRealloc(NclFileDimRecord *dim_rec);
void _NclFileUDTRealloc(NclFileUDTRecord *udt_rec);

NclFileGrpNode *_getGrpNodeFromNclFileGrpNode(NclFileGrpNode *grp_rec,
                        NclQuark grp_name);
NclFileVarNode *_getVarNodeFromNclFileVarRecord(NclFileVarRecord *var_rec,
                        NclQuark var_name);
NclFileVarNode *_getVarNodeFromNclFileGrpNode(NclFileGrpNode *grpnode,
                        NclQuark var_name);
NclFileAttNode *_getAttNodeFromNclFileGrpRecord(NclFileGrpRecord *grp_rec,
                        NclQuark att_name);
NclFileAttNode *_getAttNodeFromNclFileGrpNode(NclFileGrpNode *grpnode,
                        NclQuark att_name);
NclFileAttNode *_getAttNodeFromNclFileVarNode(NclFileVarNode *varnode,
                        NclQuark att_name);
NclFileDimNode *_getDimNodeFromNclFileGrpNode(NclFileGrpNode *grpnode,
                        NclQuark dim_name);
NclFileDimNode *_getDimNodeFromNclFileGrpNodeWithID(NclFileGrpNode *grpnode,
                        int dimid);
NclFileDimNode *_getChunkDimNodeFromNclFileGrpNode(NclFileGrpNode *grpnode,
                        NclQuark dim_name);
NclFileVarNode *_getCoordVarNodeFromNclFileGrpNode(NclFileGrpNode *grpnode,
                        NclQuark var_name);

NhlErrorTypes _addNclAttNode(NclFileAttRecord **attrec,
                 NclQuark name, NclBasicDataTypes type,
                 int n_elem, void *value);
NhlErrorTypes _addNclDimNode(NclFileDimRecord **dimrec,
                 NclQuark name, int dimid, ng_size_t size,
                 int is_unlimited);
NhlErrorTypes _addNclChunkDimNode(NclFileDimRecord **thedimrec, NclQuark name, int dimid,
                                  ng_size_t size, int is_unlimited);
NhlErrorTypes _addNclVarNodeToGrpNode(NclFileGrpNode *grpnode,
                 NclQuark name, int varid, NclBasicDataTypes type,
                 int n_dims, NclQuark *dimnames, ng_size_t *dimsizes);
NhlErrorTypes _addNclCoordVarNode(NclFileCoordVarRecord **var_rec,
                 NclFileVarNode *var_node);
NhlErrorTypes _addNclGrpNodeToGrpNode(NclFileGrpNode *grpnode, NclQuark grpname);

void FileDestroyGrpNode(NclFileGrpNode *grpnode);

NhlErrorTypes _delNclAttNode(NclFileAttRecord **attrec, NclQuark name);

NclFileCoordVarRecord *_NclFileCoordVarRealloc(NclFileCoordVarRecord *coord_var_rec);

NclFileCompoundRecord *get_nc4_compoundrec(int ncid, nc_type xtype, NrmQuark **componentnamesptr);

NclMultiDValData get_nc4_vlenlist(int ncid, int varid, nc_type xtype, NclBasicDataTypes* vlentype);

void _printNclTypeVal(FILE *fp, NclBasicDataTypes type, void *val, int newline);
void _justPrintTypeVal(FILE *fp, NclBasicDataTypes type, void *val, int newline);
void _justPrintTypeValAtPoint(FILE *fp, NclBasicDataTypes type, void *val,
                              size_t np, int newline);

NclFileEnumRecord *_NclFileEnumAlloc(int n_enums);
void _NclFileEnumRealloc(NclFileEnumRecord **enumrec);
NhlErrorTypes _addNclEnumNode(NclFileEnumRecord **enumrec,
                 NclQuark name, long long value);

#endif