mirror of
https://github.com/Unidata/netcdf-c.git
synced 2024-11-21 03:13:42 +08:00
jira bug: NCF-83
This commit is contained in:
parent
2582b5ee3c
commit
75451af706
@ -1,222 +0,0 @@
|
||||
#ifndef NCSTREAM_H
|
||||
#define NCSTREAM_H
|
||||
|
||||
|
||||
|
||||
typedef enum DataType {
|
||||
CHAR=0,
|
||||
BYTE=1,
|
||||
SHORT=2,
|
||||
INT=3,
|
||||
INT64=4,
|
||||
FLOAT=5,
|
||||
DOUBLE=6,
|
||||
STRING=7,
|
||||
STRUCTURE=8,
|
||||
SEQUENCE=9,
|
||||
ENUM1=10,
|
||||
ENUM2=11,
|
||||
ENUM4=12,
|
||||
OPAQUE=13,
|
||||
UBYTE=14,
|
||||
USHORT=15,
|
||||
UINT=16,
|
||||
UINT64=17
|
||||
} DataType;
|
||||
|
||||
|
||||
typedef enum Compress {
|
||||
NONE=0,
|
||||
DEFLATE=1
|
||||
} Compress;
|
||||
|
||||
/* Forward definitions */
|
||||
typedef struct Attribute Attribute;
|
||||
typedef struct Dimension Dimension;
|
||||
typedef struct Variable Variable;
|
||||
typedef struct Structure Structure;
|
||||
typedef struct EnumTypedef EnumTypedef;
|
||||
typedef struct EnumType EnumType;
|
||||
typedef struct Group Group;
|
||||
typedef struct Header Header;
|
||||
typedef struct Data Data;
|
||||
typedef struct Range Range;
|
||||
typedef struct Section Section;
|
||||
typedef struct StructureData StructureData;
|
||||
typedef struct Error Error;
|
||||
|
||||
struct Attribute {
|
||||
char* name;
|
||||
DataType type;
|
||||
uint32_t len;
|
||||
struct {int defined; bytes_t value;} data;
|
||||
struct {size_t count; char** values;} sdata;
|
||||
};
|
||||
|
||||
|
||||
extern ast_err Attribute_write(ast_runtime*,Attribute*);
|
||||
extern ast_err Attribute_read(ast_runtime*,Attribute**);
|
||||
extern ast_err Attribute_reclaim(ast_runtime*,Attribute*);
|
||||
extern size_t Attribute_get_size(ast_runtime*,Attribute*);
|
||||
|
||||
struct Dimension {
|
||||
struct {int defined; char* value;} name;
|
||||
struct {int defined; uint64_t value;} length;
|
||||
struct {int defined; bool_t value;} isUnlimited;
|
||||
struct {int defined; bool_t value;} isVlen;
|
||||
struct {int defined; bool_t value;} isPrivate;
|
||||
};
|
||||
|
||||
|
||||
extern ast_err Dimension_write(ast_runtime*,Dimension*);
|
||||
extern ast_err Dimension_read(ast_runtime*,Dimension**);
|
||||
extern ast_err Dimension_reclaim(ast_runtime*,Dimension*);
|
||||
extern size_t Dimension_get_size(ast_runtime*,Dimension*);
|
||||
|
||||
struct Variable {
|
||||
char* name;
|
||||
DataType dataType;
|
||||
struct {size_t count; Dimension** values;} shape;
|
||||
struct {size_t count; Attribute** values;} atts;
|
||||
struct {int defined; bool_t value;} unsigned_;
|
||||
struct {int defined; bytes_t value;} data;
|
||||
struct {int defined; char* value;} enumType;
|
||||
struct {size_t count; uint32_t* values;} dimIndex;
|
||||
};
|
||||
|
||||
|
||||
extern ast_err Variable_write(ast_runtime*,Variable*);
|
||||
extern ast_err Variable_read(ast_runtime*,Variable**);
|
||||
extern ast_err Variable_reclaim(ast_runtime*,Variable*);
|
||||
extern size_t Variable_get_size(ast_runtime*,Variable*);
|
||||
|
||||
struct Structure {
|
||||
char* name;
|
||||
DataType dataType;
|
||||
struct {size_t count; Dimension** values;} shape;
|
||||
struct {size_t count; Attribute** values;} atts;
|
||||
struct {size_t count; Variable** values;} vars;
|
||||
struct {size_t count; Structure** values;} structs;
|
||||
};
|
||||
|
||||
|
||||
extern ast_err Structure_write(ast_runtime*,Structure*);
|
||||
extern ast_err Structure_read(ast_runtime*,Structure**);
|
||||
extern ast_err Structure_reclaim(ast_runtime*,Structure*);
|
||||
extern size_t Structure_get_size(ast_runtime*,Structure*);
|
||||
|
||||
struct EnumTypedef {
|
||||
char* name;
|
||||
struct {size_t count; EnumType** values;} map;
|
||||
};
|
||||
|
||||
|
||||
extern ast_err EnumTypedef_write(ast_runtime*,EnumTypedef*);
|
||||
extern ast_err EnumTypedef_read(ast_runtime*,EnumTypedef**);
|
||||
extern ast_err EnumTypedef_reclaim(ast_runtime*,EnumTypedef*);
|
||||
extern size_t EnumTypedef_get_size(ast_runtime*,EnumTypedef*);
|
||||
|
||||
struct EnumType {
|
||||
uint32_t code;
|
||||
char* value;
|
||||
};
|
||||
|
||||
|
||||
extern ast_err EnumType_write(ast_runtime*,EnumType*);
|
||||
extern ast_err EnumType_read(ast_runtime*,EnumType**);
|
||||
extern ast_err EnumType_reclaim(ast_runtime*,EnumType*);
|
||||
extern size_t EnumType_get_size(ast_runtime*,EnumType*);
|
||||
|
||||
struct Group {
|
||||
char* name;
|
||||
struct {size_t count; Dimension** values;} dims;
|
||||
struct {size_t count; Variable** values;} vars;
|
||||
struct {size_t count; Structure** values;} structs;
|
||||
struct {size_t count; Attribute** values;} atts;
|
||||
struct {size_t count; Group** values;} groups;
|
||||
struct {size_t count; EnumTypedef** values;} enumTypes;
|
||||
};
|
||||
|
||||
|
||||
extern ast_err Group_write(ast_runtime*,Group*);
|
||||
extern ast_err Group_read(ast_runtime*,Group**);
|
||||
extern ast_err Group_reclaim(ast_runtime*,Group*);
|
||||
extern size_t Group_get_size(ast_runtime*,Group*);
|
||||
|
||||
struct Header {
|
||||
struct {int defined; char* value;} location;
|
||||
struct {int defined; char* value;} title;
|
||||
struct {int defined; char* value;} id;
|
||||
Group* root;
|
||||
struct {int defined; uint32_t value;} version;
|
||||
};
|
||||
|
||||
|
||||
extern ast_err Header_write(ast_runtime*,Header*);
|
||||
extern ast_err Header_read(ast_runtime*,Header**);
|
||||
extern ast_err Header_reclaim(ast_runtime*,Header*);
|
||||
extern size_t Header_get_size(ast_runtime*,Header*);
|
||||
|
||||
struct Data {
|
||||
char* varName;
|
||||
DataType dataType;
|
||||
struct {int defined; Section* value;} section;
|
||||
struct {int defined; bool_t value;} bigend;
|
||||
struct {int defined; uint32_t value;} version;
|
||||
struct {int defined; Compress value;} compress;
|
||||
struct {int defined; uint32_t value;} crc32;
|
||||
};
|
||||
|
||||
|
||||
extern ast_err Data_write(ast_runtime*,Data*);
|
||||
extern ast_err Data_read(ast_runtime*,Data**);
|
||||
extern ast_err Data_reclaim(ast_runtime*,Data*);
|
||||
extern size_t Data_get_size(ast_runtime*,Data*);
|
||||
|
||||
struct Range {
|
||||
struct {int defined; uint64_t value;} start;
|
||||
uint64_t size;
|
||||
struct {int defined; uint64_t value;} stride;
|
||||
};
|
||||
|
||||
|
||||
extern ast_err Range_write(ast_runtime*,Range*);
|
||||
extern ast_err Range_read(ast_runtime*,Range**);
|
||||
extern ast_err Range_reclaim(ast_runtime*,Range*);
|
||||
extern size_t Range_get_size(ast_runtime*,Range*);
|
||||
|
||||
struct Section {
|
||||
struct {size_t count; Range** values;} range;
|
||||
};
|
||||
|
||||
|
||||
extern ast_err Section_write(ast_runtime*,Section*);
|
||||
extern ast_err Section_read(ast_runtime*,Section**);
|
||||
extern ast_err Section_reclaim(ast_runtime*,Section*);
|
||||
extern size_t Section_get_size(ast_runtime*,Section*);
|
||||
|
||||
struct StructureData {
|
||||
struct {size_t count; uint32_t* values;} member;
|
||||
bytes_t data;
|
||||
struct {size_t count; uint32_t* values;} heapCount;
|
||||
struct {size_t count; char** values;} sdata;
|
||||
struct {int defined; uint64_t value;} nrows;
|
||||
};
|
||||
|
||||
|
||||
extern ast_err StructureData_write(ast_runtime*,StructureData*);
|
||||
extern ast_err StructureData_read(ast_runtime*,StructureData**);
|
||||
extern ast_err StructureData_reclaim(ast_runtime*,StructureData*);
|
||||
extern size_t StructureData_get_size(ast_runtime*,StructureData*);
|
||||
|
||||
struct Error {
|
||||
char* message;
|
||||
};
|
||||
|
||||
|
||||
extern ast_err Error_write(ast_runtime*,Error*);
|
||||
extern ast_err Error_read(ast_runtime*,Error**);
|
||||
extern ast_err Error_reclaim(ast_runtime*,Error*);
|
||||
extern size_t Error_get_size(ast_runtime*,Error*);
|
||||
|
||||
#endif /*NCSTREAM_H*/
|
@ -261,7 +261,8 @@ vpt::
|
||||
##################################################
|
||||
#T=test_varm3
|
||||
#T=t_dap3b
|
||||
T=t_dap3c
|
||||
#T=t_dap3c
|
||||
T=crash
|
||||
|
||||
v::
|
||||
cc -g -c ${T}.c ${INCL}
|
||||
@ -275,4 +276,4 @@ fix::
|
||||
for f in ${FF} ; do \
|
||||
rm -f ./$${f}.c ;\
|
||||
sed -e 's/oc_log/nclog/g' -e 's/OCLOG/NCLOG/g' <ckp1/$${f}.c >./$${f}.c ; \
|
||||
done
|
||||
done
|
||||
|
@ -222,7 +222,8 @@ fprintf(stderr,"buildcachenode: new cache node: %s\n",
|
||||
NCcache* cache = nccomm->cdf.cache;
|
||||
if(cache->nodes == NULL) cache->nodes = nclistnew();
|
||||
/* remove cache nodes to get below the max cache size */
|
||||
while(cache->cachesize + cachenode->xdrsize > cache->cachelimit) {
|
||||
while(cache->cachesize + cachenode->xdrsize > cache->cachelimit
|
||||
&& nclistlength(cache->nodes) > 0) {
|
||||
NCcachenode* node = (NCcachenode*)nclistremove(cache->nodes,0);
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr,"buildcachenode: purge cache node: %s\n",
|
||||
|
Loading…
Reference in New Issue
Block a user