Add BitRound to ncgen

This commit is contained in:
Charlie Zender 2022-02-19 16:08:36 -08:00
parent 7b8c39f722
commit 3299ba534b
7 changed files with 1188 additions and 1115 deletions

View File

@ -257,7 +257,7 @@ genbin_definespecialattributes(Symbol* var)
}
CHECK_ERR(stat);
}
if(special->flags & (_QUANTIZEBG_FLAG | _QUANTIZEGBR_FLAG)) {
if(special->flags & (_QUANTIZEBG_FLAG | _QUANTIZEGBR_FLAG | _QUANTIZEBR_FLAG)) {
stat = nc_def_var_quantize(var->container->nc_id,
var->nc_id, special->_Quantizer, special->_NSD);
CHECK_ERR(stat);

View File

@ -81,7 +81,8 @@ various C global variables
#define _FILTER_FLAG 0x1000
#define _CODECS_FLAG 0x2000
#define _QUANTIZEBG_FLAG 0x4000
#define _QUANTIZEGBR_FLAG 0x8000
#define _QUANTIZEGBR_FLAG 0x8000
#define _QUANTIZEBR_FLAG 0x10000
extern struct Specialtoken {
char* name;

View File

@ -140,6 +140,7 @@ struct Specialtoken specials[] = {
{"_Codecs",_CODECS,_CODECS_FLAG},
{"_QuantizeBitGroomNumberOfSignificantDigits",_QUANTIZEBG,_QUANTIZEBG_FLAG},
{"_QuantizeGranularBitRoundNumberOfSignificantDigits",_QUANTIZEGBR,_QUANTIZEGBR_FLAG},
{"_QuantizeBitRoundNumberOfSignificantDigits",_QUANTIZEBR,_QUANTIZEBR_FLAG},
{NULL,0} /* null terminate */
};
@ -218,7 +219,7 @@ NUMBER [+-]?[0-9][0-9]*[Uu]?([BbSs]|[Ll]|[Ll][Ll])?
DBLNUMBER [+-]?[0-9]*\.[0-9]*{exp}?[LlDd]?|[+-]?[0-9]*{exp}[LlDd]?
FLTNUMBER [+-]?[0-9]*\.[0-9]*{exp}?[Ff]|[+-]?[0-9]*{exp}[Ff]
SPECIAL "_FillValue"|"_Format"|"_Storage"|"_ChunkSizes"|"_Fletcher32"|"_DeflateLevel"|"_Shuffle"|"_Endianness"|"_NoFill"|"_NCProperties"|"_IsNetcdf4"|"_SuperblockVersion"|"_Filter"|"_Codecs"|"_QuantizeBitgroomNumberOfSignificantDIgits"|"_QuantizeGranularBitRoundNumberOfSignificantDigits"
SPECIAL "_FillValue"|"_Format"|"_Storage"|"_ChunkSizes"|"_Fletcher32"|"_DeflateLevel"|"_Shuffle"|"_Endianness"|"_NoFill"|"_NCProperties"|"_IsNetcdf4"|"_SuperblockVersion"|"_Filter"|"_Codecs"|"_QuantizeBitgroomNumberOfSignificantDIgits"|"_QuantizeGranularBitRoundNumberOfSignificantDigits"|"_QuantizeBitRoundNumberOfSignificantDigits"
USASCII [\x01-\x7F]

View File

@ -218,6 +218,7 @@ NCConstant* constant;
_CODECS
_QUANTIZEBG
_QUANTIZEGBR
_QUANTIZEBR
DATASETID
%type <sym> ident typename primtype dimd varspec
@ -778,6 +779,8 @@ attrdecl:
{$$ = makespecial(_QUANTIZEBG_FLAG,$1,NULL,(void*)$5,ISCONST);}
| ambiguous_ref ':' _QUANTIZEGBR '=' constint
{$$ = makespecial(_QUANTIZEGBR_FLAG,$1,NULL,(void*)$5,ISCONST);}
| ambiguous_ref ':' _QUANTIZEBR '=' constint
{$$ = makespecial(_QUANTIZEBR_FLAG,$1,NULL,(void*)$5,ISCONST);}
| ambiguous_ref ':' _NOFILL '=' constbool
{$$ = makespecial(_NOFILL_FLAG,$1,NULL,(void*)$5,ISCONST);}
| ':' _FORMAT '=' conststring
@ -1248,6 +1251,7 @@ makespecial(int tag, Symbol* vsym, Symbol* tsym, void* data, int isconst)
case _DEFLATE_FLAG:
case _QUANTIZEBG_FLAG:
case _QUANTIZEGBR_FLAG:
case _QUANTIZEBR_FLAG:
tmp = nullconst();
tmp->nctype = NC_INT;
convert1(con,tmp);
@ -1354,6 +1358,11 @@ makespecial(int tag, Symbol* vsym, Symbol* tsym, void* data, int isconst)
special->_NSD = idata;
special->flags |= _QUANTIZEGBR_FLAG;
break;
case _QUANTIZEBR_FLAG:
special->_Quantizer = NC_QUANTIZE_BITROUND;
special->_NSD = idata;
special->flags |= _QUANTIZEBR_FLAG;
break;
case _SHUFFLE_FLAG:
special->_Shuffle = tf;
special->flags |= _SHUFFLE_FLAG;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -109,7 +109,8 @@ extern int ncgdebug;
_CODECS = 310, /* _CODECS */
_QUANTIZEBG = 311, /* _QUANTIZEBG */
_QUANTIZEGBR = 312, /* _QUANTIZEGBR */
DATASETID = 313 /* DATASETID */
_QUANTIZEBR = 313, /* _QUANTIZEBR */
DATASETID = 314 /* DATASETID */
};
typedef enum yytokentype yytoken_kind_t;
#endif
@ -127,7 +128,7 @@ int nctype; /* for tracking attribute list type*/
Datalist* datalist;
NCConstant* constant;
#line 131 "ncgeny.h"
#line 132 "ncgeny.h"
};
typedef union YYSTYPE YYSTYPE;