webservices: Add support for BOOL records in the writer.
Signed-off-by: Hans Leidekker <hans@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
11028500a7
commit
a2eb6d6f7e
|
@ -668,6 +668,11 @@ static enum record_type get_attr_text_record_type( const WS_XML_TEXT *text )
|
||||||
if (text_base64->length <= MAX_UINT16) return RECORD_BYTES16_TEXT;
|
if (text_base64->length <= MAX_UINT16) return RECORD_BYTES16_TEXT;
|
||||||
return RECORD_BYTES32_TEXT;
|
return RECORD_BYTES32_TEXT;
|
||||||
}
|
}
|
||||||
|
case WS_XML_TEXT_TYPE_BOOL:
|
||||||
|
{
|
||||||
|
const WS_XML_BOOL_TEXT *text_bool = (const WS_XML_BOOL_TEXT *)text;
|
||||||
|
return text_bool->value ? RECORD_TRUE_TEXT : RECORD_FALSE_TEXT;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
FIXME( "unhandled text type %u\n", text->textType );
|
FIXME( "unhandled text type %u\n", text->textType );
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -724,6 +729,10 @@ static HRESULT write_attribute_value_bin( struct writer *writer, const WS_XML_TE
|
||||||
write_bytes( writer, text_base64->bytes, len );
|
write_bytes( writer, text_base64->bytes, len );
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
case RECORD_FALSE_TEXT:
|
||||||
|
case RECORD_TRUE_TEXT:
|
||||||
|
return S_OK;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
ERR( "unhandled record type %02x\n", type );
|
ERR( "unhandled record type %02x\n", type );
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
|
@ -2332,6 +2341,11 @@ static enum record_type get_text_record_type( const WS_XML_TEXT *text )
|
||||||
if (len <= MAX_UINT16) return RECORD_BYTES16_TEXT;
|
if (len <= MAX_UINT16) return RECORD_BYTES16_TEXT;
|
||||||
return RECORD_BYTES32_TEXT;
|
return RECORD_BYTES32_TEXT;
|
||||||
}
|
}
|
||||||
|
case WS_XML_TEXT_TYPE_BOOL:
|
||||||
|
{
|
||||||
|
const WS_XML_BOOL_TEXT *text_bool = (const WS_XML_BOOL_TEXT *)text;
|
||||||
|
return text_bool->value ? RECORD_TRUE_TEXT_WITH_ENDELEMENT : RECORD_FALSE_TEXT_WITH_ENDELEMENT;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
FIXME( "unhandled text type %u\n", text->textType );
|
FIXME( "unhandled text type %u\n", text->textType );
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -2415,6 +2429,13 @@ static HRESULT write_text_bin( struct writer *writer, const WS_XML_TEXT *text, U
|
||||||
}
|
}
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
case RECORD_FALSE_TEXT_WITH_ENDELEMENT:
|
||||||
|
case RECORD_TRUE_TEXT_WITH_ENDELEMENT:
|
||||||
|
{
|
||||||
|
if ((hr = write_grow_buffer( writer, 1 )) != S_OK) return hr;
|
||||||
|
write_char( writer, type );
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
FIXME( "unhandled record type %02x\n", type );
|
FIXME( "unhandled record type %02x\n", type );
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
|
@ -2698,8 +2719,7 @@ static HRESULT write_type_bool( struct writer *writer, WS_TYPE_MAPPING mapping,
|
||||||
const WS_BOOL_DESCRIPTION *desc, WS_WRITE_OPTION option,
|
const WS_BOOL_DESCRIPTION *desc, WS_WRITE_OPTION option,
|
||||||
const BOOL *value, ULONG size )
|
const BOOL *value, ULONG size )
|
||||||
{
|
{
|
||||||
WS_XML_UTF8_TEXT utf8;
|
WS_XML_BOOL_TEXT text_bool;
|
||||||
unsigned char buf[6]; /* "false" */
|
|
||||||
const BOOL *ptr;
|
const BOOL *ptr;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
|
@ -2713,10 +2733,9 @@ static HRESULT write_type_bool( struct writer *writer, WS_TYPE_MAPPING mapping,
|
||||||
if ((hr = get_value_ptr( option, value, size, sizeof(BOOL), (const void **)&ptr )) != S_OK) return hr;
|
if ((hr = get_value_ptr( option, value, size, sizeof(BOOL), (const void **)&ptr )) != S_OK) return hr;
|
||||||
if (option == WS_WRITE_NILLABLE_POINTER && !ptr) return write_add_nil_attribute( writer );
|
if (option == WS_WRITE_NILLABLE_POINTER && !ptr) return write_add_nil_attribute( writer );
|
||||||
|
|
||||||
utf8.text.textType = WS_XML_TEXT_TYPE_UTF8;
|
text_bool.text.textType = WS_XML_TEXT_TYPE_BOOL;
|
||||||
utf8.value.bytes = buf;
|
text_bool.value = *ptr;
|
||||||
utf8.value.length = format_bool( ptr, buf );
|
return write_type_text( writer, mapping, &text_bool.text );
|
||||||
return write_type_text( writer, mapping, &utf8.text );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT write_type_int8( struct writer *writer, WS_TYPE_MAPPING mapping,
|
static HRESULT write_type_int8( struct writer *writer, WS_TYPE_MAPPING mapping,
|
||||||
|
|
Loading…
Reference in New Issue