* xmlSchemaInitBasicType: * @name: the type name * @type: the value type associated * * Initialize one primitive built-in type */
| 263 | * Initialize one primitive built-in type |
| 264 | */ |
| 265 | static xmlSchemaTypePtr |
| 266 | xmlSchemaInitBasicType(const char *name, xmlSchemaValType type, |
| 267 | xmlSchemaTypePtr baseType) { |
| 268 | xmlSchemaTypePtr ret; |
| 269 | |
| 270 | ret = (xmlSchemaTypePtr) xmlMalloc(sizeof(xmlSchemaType)); |
| 271 | if (ret == NULL) { |
| 272 | xmlSchemaTypeErrMemory(); |
| 273 | return(NULL); |
| 274 | } |
| 275 | memset(ret, 0, sizeof(xmlSchemaType)); |
| 276 | ret->name = (const xmlChar *)name; |
| 277 | ret->targetNamespace = XML_SCHEMAS_NAMESPACE_NAME; |
| 278 | ret->type = XML_SCHEMA_TYPE_BASIC; |
| 279 | ret->baseType = baseType; |
| 280 | ret->contentType = XML_SCHEMA_CONTENT_BASIC; |
| 281 | /* |
| 282 | * Primitive types. |
| 283 | */ |
| 284 | switch (type) { |
| 285 | case XML_SCHEMAS_STRING: |
| 286 | case XML_SCHEMAS_DECIMAL: |
| 287 | case XML_SCHEMAS_DATE: |
| 288 | case XML_SCHEMAS_DATETIME: |
| 289 | case XML_SCHEMAS_TIME: |
| 290 | case XML_SCHEMAS_GYEAR: |
| 291 | case XML_SCHEMAS_GYEARMONTH: |
| 292 | case XML_SCHEMAS_GMONTH: |
| 293 | case XML_SCHEMAS_GMONTHDAY: |
| 294 | case XML_SCHEMAS_GDAY: |
| 295 | case XML_SCHEMAS_DURATION: |
| 296 | case XML_SCHEMAS_FLOAT: |
| 297 | case XML_SCHEMAS_DOUBLE: |
| 298 | case XML_SCHEMAS_BOOLEAN: |
| 299 | case XML_SCHEMAS_ANYURI: |
| 300 | case XML_SCHEMAS_HEXBINARY: |
| 301 | case XML_SCHEMAS_BASE64BINARY: |
| 302 | case XML_SCHEMAS_QNAME: |
| 303 | case XML_SCHEMAS_NOTATION: |
| 304 | ret->flags |= XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE; |
| 305 | break; |
| 306 | default: |
| 307 | break; |
| 308 | } |
| 309 | /* |
| 310 | * Set variety. |
| 311 | */ |
| 312 | switch (type) { |
| 313 | case XML_SCHEMAS_ANYTYPE: |
| 314 | case XML_SCHEMAS_ANYSIMPLETYPE: |
| 315 | break; |
| 316 | case XML_SCHEMAS_IDREFS: |
| 317 | case XML_SCHEMAS_NMTOKENS: |
| 318 | case XML_SCHEMAS_ENTITIES: |
| 319 | ret->flags |= XML_SCHEMAS_TYPE_VARIETY_LIST; |
| 320 | ret->facets = xmlSchemaNewMinLengthFacet(1); |
| 321 | ret->flags |= XML_SCHEMAS_TYPE_HAS_FACETS; |
| 322 | break; |
no test coverage detected