* xmlSchemaCopyValue: * @val: the precomputed value to be copied * * Copies the precomputed value. This duplicates any string within. * * Returns the copy or NULL if a copy for a data-type is not implemented. */
| 3813 | * Returns the copy or NULL if a copy for a data-type is not implemented. |
| 3814 | */ |
| 3815 | xmlSchemaValPtr |
| 3816 | xmlSchemaCopyValue(xmlSchemaValPtr val) |
| 3817 | { |
| 3818 | xmlSchemaValPtr ret = NULL, prev = NULL, cur; |
| 3819 | |
| 3820 | /* |
| 3821 | * Copy the string values. |
| 3822 | */ |
| 3823 | while (val != NULL) { |
| 3824 | switch (val->type) { |
| 3825 | case XML_SCHEMAS_ANYTYPE: |
| 3826 | case XML_SCHEMAS_IDREFS: |
| 3827 | case XML_SCHEMAS_ENTITIES: |
| 3828 | case XML_SCHEMAS_NMTOKENS: |
| 3829 | xmlSchemaFreeValue(ret); |
| 3830 | return (NULL); |
| 3831 | case XML_SCHEMAS_ANYSIMPLETYPE: |
| 3832 | case XML_SCHEMAS_STRING: |
| 3833 | case XML_SCHEMAS_NORMSTRING: |
| 3834 | case XML_SCHEMAS_TOKEN: |
| 3835 | case XML_SCHEMAS_LANGUAGE: |
| 3836 | case XML_SCHEMAS_NAME: |
| 3837 | case XML_SCHEMAS_NCNAME: |
| 3838 | case XML_SCHEMAS_ID: |
| 3839 | case XML_SCHEMAS_IDREF: |
| 3840 | case XML_SCHEMAS_ENTITY: |
| 3841 | case XML_SCHEMAS_NMTOKEN: |
| 3842 | case XML_SCHEMAS_ANYURI: |
| 3843 | cur = xmlSchemaDupVal(val); |
| 3844 | if (val->value.str != NULL) |
| 3845 | cur->value.str = xmlStrdup(BAD_CAST val->value.str); |
| 3846 | break; |
| 3847 | case XML_SCHEMAS_QNAME: |
| 3848 | case XML_SCHEMAS_NOTATION: |
| 3849 | cur = xmlSchemaDupVal(val); |
| 3850 | if (val->value.qname.name != NULL) |
| 3851 | cur->value.qname.name = |
| 3852 | xmlStrdup(BAD_CAST val->value.qname.name); |
| 3853 | if (val->value.qname.uri != NULL) |
| 3854 | cur->value.qname.uri = |
| 3855 | xmlStrdup(BAD_CAST val->value.qname.uri); |
| 3856 | break; |
| 3857 | case XML_SCHEMAS_HEXBINARY: |
| 3858 | cur = xmlSchemaDupVal(val); |
| 3859 | if (val->value.hex.str != NULL) |
| 3860 | cur->value.hex.str = xmlStrdup(BAD_CAST val->value.hex.str); |
| 3861 | break; |
| 3862 | case XML_SCHEMAS_BASE64BINARY: |
| 3863 | cur = xmlSchemaDupVal(val); |
| 3864 | if (val->value.base64.str != NULL) |
| 3865 | cur->value.base64.str = |
| 3866 | xmlStrdup(BAD_CAST val->value.base64.str); |
| 3867 | break; |
| 3868 | case XML_SCHEMAS_DECIMAL: |
| 3869 | case XML_SCHEMAS_INTEGER: |
| 3870 | case XML_SCHEMAS_PINTEGER: |
| 3871 | case XML_SCHEMAS_NPINTEGER: |
| 3872 | case XML_SCHEMAS_NINTEGER: |
no test coverage detected