mirror of https://gerrit.osmocom.org/asn1c
C90-compliant negative LONG_MIN
git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@1392 59561ff5-6e30-0410-9f3c-9617f08c8826
This commit is contained in:
parent
f394b7f274
commit
fea6602591
|
@ -1859,8 +1859,7 @@ emit_single_member_PER_constraint(arg_t *arg, asn1cnst_range_t *range, int alpha
|
||||||
if(lv > 0x7fffffff) { lv = 0x7fffffff; gcmt++; }
|
if(lv > 0x7fffffff) { lv = 0x7fffffff; gcmt++; }
|
||||||
if(rv > 0x7fffffff) { rv = 0x7fffffff; gcmt++; }
|
if(rv > 0x7fffffff) { rv = 0x7fffffff; gcmt++; }
|
||||||
if(gcmt) {
|
if(gcmt) {
|
||||||
OUT("% " PRIdASN ", % " PRIdASN " }",
|
OINTS(lv); OUT(", "); OINTS(rv); OUT(" }");
|
||||||
lv, rv);
|
|
||||||
goto pcmt;
|
goto pcmt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1872,8 +1871,8 @@ emit_single_member_PER_constraint(arg_t *arg, asn1cnst_range_t *range, int alpha
|
||||||
OUT("{ APC_SEMI_CONSTRAINED,\t-1, -1, ");
|
OUT("{ APC_SEMI_CONSTRAINED,\t-1, -1, ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
OUT("% " PRIdASN ", % " PRIdASN " }",
|
OINTS(range->left.value); OUT(", ");
|
||||||
range->left.value, range->right.value);
|
OINTS(range->right.value); OUT(" }");
|
||||||
} else {
|
} else {
|
||||||
OUT("{ APC_UNCONSTRAINED,\t-1, -1, 0, 0 }");
|
OUT("{ APC_UNCONSTRAINED,\t-1, -1, 0, 0 }");
|
||||||
}
|
}
|
||||||
|
@ -2129,12 +2128,14 @@ try_inline_default(arg_t *arg, asn1p_expr_t *expr, int out) {
|
||||||
OUT("/* Install default value %" PRIdASN " */\n",
|
OUT("/* Install default value %" PRIdASN " */\n",
|
||||||
expr->marker.default_value->value.v_integer);
|
expr->marker.default_value->value.v_integer);
|
||||||
if(fits_long) {
|
if(fits_long) {
|
||||||
OUT("*st = %" PRIdASN ";\n",
|
OUT("*st = ");
|
||||||
expr->marker.default_value->value.v_integer);
|
OINT(expr->marker.default_value->value.v_integer);
|
||||||
|
OUT(";\n");
|
||||||
OUT("return 0;\n");
|
OUT("return 0;\n");
|
||||||
} else {
|
} else {
|
||||||
OUT("return asn_long2INTEGER(st, %" PRIdASN ");\n",
|
OUT("return asn_long2INTEGER(st, ");
|
||||||
expr->marker.default_value->value.v_integer);
|
OINT(expr->marker.default_value->value.v_integer);
|
||||||
|
OUT(");\n");
|
||||||
}
|
}
|
||||||
INDENT(-1);
|
INDENT(-1);
|
||||||
OUT("} else {\n");
|
OUT("} else {\n");
|
||||||
|
|
|
@ -495,20 +495,20 @@ emit_range_comparison_code(arg_t *arg, asn1cnst_range_t *range, const char *varn
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ignore_left) {
|
if(ignore_left) {
|
||||||
OUT("%s <= %" PRIdASN, varname,
|
OUT("%s <= ", varname);
|
||||||
r->right.value);
|
OINT(r->right.value);
|
||||||
} else if(ignore_right) {
|
} else if(ignore_right) {
|
||||||
OUT("%s >= %" PRIdASN, varname,
|
OUT("%s >= ", varname);
|
||||||
r->left.value);
|
OINT(r->left.value);
|
||||||
} else if(r->left.value == r->right.value) {
|
} else if(r->left.value == r->right.value) {
|
||||||
OUT("%s == %" PRIdASN, varname,
|
OUT("%s == ", varname);
|
||||||
r->right.value);
|
OINT(r->right.value);
|
||||||
} else {
|
} else {
|
||||||
OUT("%s >= %" PRIdASN " && %s <= %" PRIdASN,
|
OUT("%s >= ", varname);
|
||||||
varname,
|
OINT(r->left.value);
|
||||||
r->left.value,
|
OUT(" && ");
|
||||||
varname,
|
OUT("%s <= ", varname);
|
||||||
r->right.value);
|
OINT(r->right.value);
|
||||||
}
|
}
|
||||||
if(r != range) OUT(")");
|
if(r != range) OUT(")");
|
||||||
generated_something = 1;
|
generated_something = 1;
|
||||||
|
|
|
@ -108,4 +108,21 @@ int asn1c_compiled_output(arg_t *arg, const char *fmt, ...);
|
||||||
REDIR(saved_target); \
|
REDIR(saved_target); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Format LONG_MIN according to C90 rules.
|
||||||
|
*/
|
||||||
|
#define OINT(iv) do { \
|
||||||
|
if(iv == (-2147483647L - 1)) \
|
||||||
|
OUT("(-2147483647L - 1)"); \
|
||||||
|
else \
|
||||||
|
OUT("%" PRIdASN, iv); \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
|
#define OINTS(iv) do { \
|
||||||
|
if(iv == (-2147483647L - 1)) \
|
||||||
|
OUT("(-2147483647L - 1)"); \
|
||||||
|
else \
|
||||||
|
OUT("% " PRIdASN, iv); \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
#endif /* _ASN1_COMPILED_OUTPUT_H_ */
|
#endif /* _ASN1_COMPILED_OUTPUT_H_ */
|
||||||
|
|
|
@ -1754,7 +1754,7 @@ OK_IntegerInRange3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
|
||||||
|
|
||||||
value = *(const long *)sptr;
|
value = *(const long *)sptr;
|
||||||
|
|
||||||
if((value >= -2147483648 && value <= 2147483647)) {
|
if((value >= (-2147483647L - 1) && value <= 2147483647)) {
|
||||||
/* Constraint check succeeded */
|
/* Constraint check succeeded */
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1895,7 +1895,7 @@ OK_IntegerInRange4_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
|
||||||
|
|
||||||
value = *(const long *)sptr;
|
value = *(const long *)sptr;
|
||||||
|
|
||||||
if(((value == -2147483648) || (value == 2147483647))) {
|
if(((value == (-2147483647L - 1)) || (value == 2147483647))) {
|
||||||
/* Constraint check succeeded */
|
/* Constraint check succeeded */
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -2042,7 +2042,7 @@ OK_IntegerInRange5_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((value == -2147483648) || (value == 2147483647))) {
|
if(((value == (-2147483647L - 1)) || (value == 2147483647))) {
|
||||||
/* Constraint check succeeded */
|
/* Constraint check succeeded */
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1741,7 +1741,7 @@ OK_IntegerInRange3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
|
||||||
|
|
||||||
value = *(const long *)sptr;
|
value = *(const long *)sptr;
|
||||||
|
|
||||||
if((value >= -2147483648 && value <= 2147483647)) {
|
if((value >= (-2147483647L - 1) && value <= 2147483647)) {
|
||||||
/* Constraint check succeeded */
|
/* Constraint check succeeded */
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1882,7 +1882,7 @@ OK_IntegerInRange4_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
|
||||||
|
|
||||||
value = *(const long *)sptr;
|
value = *(const long *)sptr;
|
||||||
|
|
||||||
if(((value == -2147483648) || (value == 2147483647))) {
|
if(((value == (-2147483647L - 1)) || (value == 2147483647))) {
|
||||||
/* Constraint check succeeded */
|
/* Constraint check succeeded */
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -2023,7 +2023,7 @@ OK_IntegerInRange5_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
|
||||||
|
|
||||||
value = *(const long *)sptr;
|
value = *(const long *)sptr;
|
||||||
|
|
||||||
if(((value == -2147483648) || (value == 2147483647))) {
|
if(((value == (-2147483647L - 1)) || (value == 2147483647))) {
|
||||||
/* Constraint check succeeded */
|
/* Constraint check succeeded */
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -2060,7 +2060,7 @@ OK_IntegerInRange3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
|
||||||
|
|
||||||
value = *(const long *)sptr;
|
value = *(const long *)sptr;
|
||||||
|
|
||||||
if((value >= -2147483648 && value <= 2147483647)) {
|
if((value >= (-2147483647L - 1) && value <= 2147483647)) {
|
||||||
/* Constraint check succeeded */
|
/* Constraint check succeeded */
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -2155,7 +2155,7 @@ OK_IntegerInRange3_encode_uper(asn_TYPE_descriptor_t *td,
|
||||||
/*** <<< CTDEFS [OK-IntegerInRange3] >>> ***/
|
/*** <<< CTDEFS [OK-IntegerInRange3] >>> ***/
|
||||||
|
|
||||||
static asn_per_constraints_t asn_PER_type_OK_IntegerInRange3_constr_1 = {
|
static asn_per_constraints_t asn_PER_type_OK_IntegerInRange3_constr_1 = {
|
||||||
{ APC_CONSTRAINED, 32, -1, -2147483648, 2147483647 } /* (-2147483648..2147483647) */,
|
{ APC_CONSTRAINED, 32, -1, (-2147483647L - 1), 2147483647 } /* (-2147483648..2147483647) */,
|
||||||
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
|
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
|
||||||
0, 0 /* No PER value map */
|
0, 0 /* No PER value map */
|
||||||
};
|
};
|
||||||
|
@ -2227,7 +2227,7 @@ OK_IntegerInRange4_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
|
||||||
|
|
||||||
value = *(const long *)sptr;
|
value = *(const long *)sptr;
|
||||||
|
|
||||||
if(((value == -2147483648) || (value == 2147483647))) {
|
if(((value == (-2147483647L - 1)) || (value == 2147483647))) {
|
||||||
/* Constraint check succeeded */
|
/* Constraint check succeeded */
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -2322,7 +2322,7 @@ OK_IntegerInRange4_encode_uper(asn_TYPE_descriptor_t *td,
|
||||||
/*** <<< CTDEFS [OK-IntegerInRange4] >>> ***/
|
/*** <<< CTDEFS [OK-IntegerInRange4] >>> ***/
|
||||||
|
|
||||||
static asn_per_constraints_t asn_PER_type_OK_IntegerInRange4_constr_1 = {
|
static asn_per_constraints_t asn_PER_type_OK_IntegerInRange4_constr_1 = {
|
||||||
{ APC_CONSTRAINED, 32, -1, -2147483648, 2147483647 } /* (-2147483648..2147483647) */,
|
{ APC_CONSTRAINED, 32, -1, (-2147483647L - 1), 2147483647 } /* (-2147483648..2147483647) */,
|
||||||
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
|
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
|
||||||
0, 0 /* No PER value map */
|
0, 0 /* No PER value map */
|
||||||
};
|
};
|
||||||
|
@ -2400,7 +2400,7 @@ OK_IntegerInRange5_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((value == -2147483648) || (value == 2147483647))) {
|
if(((value == (-2147483647L - 1)) || (value == 2147483647))) {
|
||||||
/* Constraint check succeeded */
|
/* Constraint check succeeded */
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -2495,7 +2495,7 @@ OK_IntegerInRange5_encode_uper(asn_TYPE_descriptor_t *td,
|
||||||
/*** <<< CTDEFS [OK-IntegerInRange5] >>> ***/
|
/*** <<< CTDEFS [OK-IntegerInRange5] >>> ***/
|
||||||
|
|
||||||
static asn_per_constraints_t asn_PER_type_OK_IntegerInRange5_constr_1 = {
|
static asn_per_constraints_t asn_PER_type_OK_IntegerInRange5_constr_1 = {
|
||||||
{ APC_CONSTRAINED | APC_EXTENSIBLE, 32, -1, -2147483648, 2147483647 } /* (-2147483648..2147483647,...) */,
|
{ APC_CONSTRAINED | APC_EXTENSIBLE, 32, -1, (-2147483647L - 1), 2147483647 } /* (-2147483648..2147483647,...) */,
|
||||||
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
|
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
|
||||||
0, 0 /* No PER value map */
|
0, 0 /* No PER value map */
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue