Common up some code in the conversion to nullable and non-nullable primitive types.

This commit is contained in:
Ms2ger 2014-03-06 22:52:57 +01:00
parent 54a59b9d38
commit 922d191948

View file

@ -1238,17 +1238,17 @@ for (uint32_t i = 0; i < length; ++i) {
if failureCode is None: if failureCode is None:
failureCode = 'return 0' failureCode = 'return 0'
if type.nullable(): successVal = "v"
successVal = "v" if preSuccess or postSuccess:
if preSuccess or postSuccess: successVal = preSuccess + successVal + postSuccess
successVal = preSuccess + successVal + postSuccess #XXXjdm support conversionBehavior here
#XXXjdm support conversionBehavior here template = (
template = ( "match JSValConvertible::from_jsval(cx, ${val}) {\n"
"match JSValConvertible::from_jsval(cx, ${val}) {\n" " Ok(v) => ${declName} = %s,\n"
" Ok(v) => ${declName} = %s,\n" " Err(_) => %s\n"
" Err(_) => %s\n" "}" % (successVal, failureCode))
"}" % (successVal, failureCode))
if type.nullable():
if defaultValue is not None and isinstance(defaultValue, IDLNullValue): if defaultValue is not None and isinstance(defaultValue, IDLNullValue):
template = CGWrapper(CGIndenter(CGGeneric(template)), template = CGWrapper(CGIndenter(CGGeneric(template)),
pre="if ${haveValue} {\n", pre="if ${haveValue} {\n",
@ -1261,16 +1261,8 @@ for (uint32_t i = 0; i < length; ++i) {
else: else:
assert(defaultValue is None or assert(defaultValue is None or
not isinstance(defaultValue, IDLNullValue)) not isinstance(defaultValue, IDLNullValue))
#XXXjdm conversionBehavior should be used
successVal = "v"
if preSuccess or postSuccess:
successVal = preSuccess + successVal + postSuccess
template = (
"match JSValConvertible::from_jsval(cx, ${val}) {\n"
" Err(_) => %s,\n"
" Ok(v) => ${declName} = %s\n"
"}" % (failureCode, successVal))
declType = CGGeneric(typeName) declType = CGGeneric(typeName)
if (defaultValue is not None and if (defaultValue is not None and
# We already handled IDLNullValue, so just deal with the other ones # We already handled IDLNullValue, so just deal with the other ones
not isinstance(defaultValue, IDLNullValue)): not isinstance(defaultValue, IDLNullValue)):