001package org.hl7.fhir.dstu3.model.codesystems; 002 003 004 005 006/* 007 Copyright (c) 2011+, HL7, Inc. 008 All rights reserved. 009 010 Redistribution and use in source and binary forms, with or without modification, 011 are permitted provided that the following conditions are met: 012 013 * Redistributions of source code must retain the above copyright notice, this 014 list of conditions and the following disclaimer. 015 * Redistributions in binary form must reproduce the above copyright notice, 016 this list of conditions and the following disclaimer in the documentation 017 and/or other materials provided with the distribution. 018 * Neither the name of HL7 nor the names of its contributors may be used to 019 endorse or promote products derived from this software without specific 020 prior written permission. 021 022 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 023 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 024 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 025 IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 026 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 027 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 028 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 029 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 030 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 031 POSSIBILITY OF SUCH DAMAGE. 032 033*/ 034 035// Generated on Sat, Mar 25, 2017 21:03-0400 for FHIR v3.0.0 036 037 038import org.hl7.fhir.exceptions.FHIRException; 039 040public enum DataTypes { 041 042 /** 043 * An address expressed using postal conventions (as opposed to GPS or other location definition formats). This data type may be used to convey addresses for use in delivering mail as well as for visiting locations which might not be valid for mail delivery. There are a variety of postal address formats defined around the world. 044 */ 045 ADDRESS, 046 /** 047 * A duration of time during which an organism (or a process) has existed. 048 */ 049 AGE, 050 /** 051 * A text note which also contains information about who made the statement and when. 052 */ 053 ANNOTATION, 054 /** 055 * For referring to data content defined in other formats. 056 */ 057 ATTACHMENT, 058 /** 059 * Base definition for all elements that are defined inside a resource - but not those in a data type. 060 */ 061 BACKBONEELEMENT, 062 /** 063 * A concept that may be defined by a formal reference to a terminology or ontology or may be provided by text. 064 */ 065 CODEABLECONCEPT, 066 /** 067 * A reference to a code defined by a terminology system. 068 */ 069 CODING, 070 /** 071 * Specifies contact information for a person or organization. 072 */ 073 CONTACTDETAIL, 074 /** 075 * Details for all kinds of technology mediated contact points for a person or organization, including telephone, email, etc. 076 */ 077 CONTACTPOINT, 078 /** 079 * A contributor to the content of a knowledge asset, including authors, editors, reviewers, and endorsers. 080 */ 081 CONTRIBUTOR, 082 /** 083 * A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies. 084 */ 085 COUNT, 086 /** 087 * Describes a required data item for evaluation in terms of the type of data, and optional code or date-based filters of the data. 088 */ 089 DATAREQUIREMENT, 090 /** 091 * A length - a value with a unit that is a physical distance. 092 */ 093 DISTANCE, 094 /** 095 * Indicates how the medication is/was taken or should be taken by the patient. 096 */ 097 DOSAGE, 098 /** 099 * A length of time. 100 */ 101 DURATION, 102 /** 103 * Base definition for all elements in a resource. 104 */ 105 ELEMENT, 106 /** 107 * Captures constraints on each element within the resource, profile, or extension. 108 */ 109 ELEMENTDEFINITION, 110 /** 111 * Optional Extension Element - found in all resources. 112 */ 113 EXTENSION, 114 /** 115 * A human's name with the ability to identify parts and usage. 116 */ 117 HUMANNAME, 118 /** 119 * A technical identifier - identifies some entity uniquely and unambiguously. 120 */ 121 IDENTIFIER, 122 /** 123 * The metadata about a resource. This is content in the resource that is maintained by the infrastructure. Changes to the content may not always be associated with version changes to the resource. 124 */ 125 META, 126 /** 127 * An amount of economic utility in some recognized currency. 128 */ 129 MONEY, 130 /** 131 * A human-readable formatted text, including images. 132 */ 133 NARRATIVE, 134 /** 135 * The parameters to the module. This collection specifies both the input and output parameters. Input parameters are provided by the caller as part of the $evaluate operation. Output parameters are included in the GuidanceResponse. 136 */ 137 PARAMETERDEFINITION, 138 /** 139 * A time period defined by a start and end date and optionally time. 140 */ 141 PERIOD, 142 /** 143 * A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies. 144 */ 145 QUANTITY, 146 /** 147 * A set of ordered Quantities defined by a low and high limit. 148 */ 149 RANGE, 150 /** 151 * A relationship of two Quantity values - expressed as a numerator and a denominator. 152 */ 153 RATIO, 154 /** 155 * A reference from one resource to another. 156 */ 157 REFERENCE, 158 /** 159 * Related artifacts such as additional documentation, justification, or bibliographic references. 160 */ 161 RELATEDARTIFACT, 162 /** 163 * A series of measurements taken by a device, with upper and lower limits. There may be more than one dimension in the data. 164 */ 165 SAMPLEDDATA, 166 /** 167 * A digital signature along with supporting context. The signature may be electronic/cryptographic in nature, or a graphical image representing a hand-written signature, or a signature process. Different signature approaches have different utilities. 168 */ 169 SIGNATURE, 170 /** 171 * null 172 */ 173 SIMPLEQUANTITY, 174 /** 175 * Specifies an event that may occur multiple times. Timing schedules are used to record when things are planned, expected or requested to occur. The most common usage is in dosage instructions for medications. They are also used when planning care of various kinds, and may be used for reporting the schedule to which past regular activities were carried out. 176 */ 177 TIMING, 178 /** 179 * A description of a triggering event. 180 */ 181 TRIGGERDEFINITION, 182 /** 183 * Specifies clinical/business/etc metadata that can be used to retrieve, index and/or categorize an artifact. This metadata can either be specific to the applicable population (e.g., age category, DRG) or the specific context of care (e.g., venue, care setting, provider of care). 184 */ 185 USAGECONTEXT, 186 /** 187 * A stream of bytes 188 */ 189 BASE64BINARY, 190 /** 191 * Value of "true" or "false" 192 */ 193 BOOLEAN, 194 /** 195 * A string which has at least one character and no leading or trailing whitespace and where there is no whitespace other than single spaces in the contents 196 */ 197 CODE, 198 /** 199 * A date or partial date (e.g. just year or year + month). There is no time zone. The format is a union of the schema types gYear, gYearMonth and date. Dates SHALL be valid dates. 200 */ 201 DATE, 202 /** 203 * A date, date-time or partial date (e.g. just year or year + month). If hours and minutes are specified, a time zone SHALL be populated. The format is a union of the schema types gYear, gYearMonth, date and dateTime. Seconds must be provided due to schema type constraints but may be zero-filled and may be ignored. Dates SHALL be valid dates. 204 */ 205 DATETIME, 206 /** 207 * A rational number with implicit precision 208 */ 209 DECIMAL, 210 /** 211 * Any combination of letters, numerals, "-" and ".", with a length limit of 64 characters. (This might be an integer, an unprefixed OID, UUID or any other identifier pattern that meets these constraints.) Ids are case-insensitive. 212 */ 213 ID, 214 /** 215 * An instant in time - known at least to the second 216 */ 217 INSTANT, 218 /** 219 * A whole number 220 */ 221 INTEGER, 222 /** 223 * A string that may contain markdown syntax for optional processing by a mark down presentation engine 224 */ 225 MARKDOWN, 226 /** 227 * An OID represented as a URI 228 */ 229 OID, 230 /** 231 * An integer with a value that is positive (e.g. >0) 232 */ 233 POSITIVEINT, 234 /** 235 * A sequence of Unicode characters 236 */ 237 STRING, 238 /** 239 * A time during the day, with no date specified 240 */ 241 TIME, 242 /** 243 * An integer with a value that is not negative (e.g. >= 0) 244 */ 245 UNSIGNEDINT, 246 /** 247 * String of characters used to identify a name or a resource 248 */ 249 URI, 250 /** 251 * A UUID, represented as a URI 252 */ 253 UUID, 254 /** 255 * XHTML format, as defined by W3C, but restricted usage (mainly, no active content) 256 */ 257 XHTML, 258 /** 259 * added to help the parsers 260 */ 261 NULL; 262 public static DataTypes fromCode(String codeString) throws FHIRException { 263 if (codeString == null || "".equals(codeString)) 264 return null; 265 if ("Address".equals(codeString)) 266 return ADDRESS; 267 if ("Age".equals(codeString)) 268 return AGE; 269 if ("Annotation".equals(codeString)) 270 return ANNOTATION; 271 if ("Attachment".equals(codeString)) 272 return ATTACHMENT; 273 if ("BackboneElement".equals(codeString)) 274 return BACKBONEELEMENT; 275 if ("CodeableConcept".equals(codeString)) 276 return CODEABLECONCEPT; 277 if ("Coding".equals(codeString)) 278 return CODING; 279 if ("ContactDetail".equals(codeString)) 280 return CONTACTDETAIL; 281 if ("ContactPoint".equals(codeString)) 282 return CONTACTPOINT; 283 if ("Contributor".equals(codeString)) 284 return CONTRIBUTOR; 285 if ("Count".equals(codeString)) 286 return COUNT; 287 if ("DataRequirement".equals(codeString)) 288 return DATAREQUIREMENT; 289 if ("Distance".equals(codeString)) 290 return DISTANCE; 291 if ("Dosage".equals(codeString)) 292 return DOSAGE; 293 if ("Duration".equals(codeString)) 294 return DURATION; 295 if ("Element".equals(codeString)) 296 return ELEMENT; 297 if ("ElementDefinition".equals(codeString)) 298 return ELEMENTDEFINITION; 299 if ("Extension".equals(codeString)) 300 return EXTENSION; 301 if ("HumanName".equals(codeString)) 302 return HUMANNAME; 303 if ("Identifier".equals(codeString)) 304 return IDENTIFIER; 305 if ("Meta".equals(codeString)) 306 return META; 307 if ("Money".equals(codeString)) 308 return MONEY; 309 if ("Narrative".equals(codeString)) 310 return NARRATIVE; 311 if ("ParameterDefinition".equals(codeString)) 312 return PARAMETERDEFINITION; 313 if ("Period".equals(codeString)) 314 return PERIOD; 315 if ("Quantity".equals(codeString)) 316 return QUANTITY; 317 if ("Range".equals(codeString)) 318 return RANGE; 319 if ("Ratio".equals(codeString)) 320 return RATIO; 321 if ("Reference".equals(codeString)) 322 return REFERENCE; 323 if ("RelatedArtifact".equals(codeString)) 324 return RELATEDARTIFACT; 325 if ("SampledData".equals(codeString)) 326 return SAMPLEDDATA; 327 if ("Signature".equals(codeString)) 328 return SIGNATURE; 329 if ("SimpleQuantity".equals(codeString)) 330 return SIMPLEQUANTITY; 331 if ("Timing".equals(codeString)) 332 return TIMING; 333 if ("TriggerDefinition".equals(codeString)) 334 return TRIGGERDEFINITION; 335 if ("UsageContext".equals(codeString)) 336 return USAGECONTEXT; 337 if ("base64Binary".equals(codeString)) 338 return BASE64BINARY; 339 if ("boolean".equals(codeString)) 340 return BOOLEAN; 341 if ("code".equals(codeString)) 342 return CODE; 343 if ("date".equals(codeString)) 344 return DATE; 345 if ("dateTime".equals(codeString)) 346 return DATETIME; 347 if ("decimal".equals(codeString)) 348 return DECIMAL; 349 if ("id".equals(codeString)) 350 return ID; 351 if ("instant".equals(codeString)) 352 return INSTANT; 353 if ("integer".equals(codeString)) 354 return INTEGER; 355 if ("markdown".equals(codeString)) 356 return MARKDOWN; 357 if ("oid".equals(codeString)) 358 return OID; 359 if ("positiveInt".equals(codeString)) 360 return POSITIVEINT; 361 if ("string".equals(codeString)) 362 return STRING; 363 if ("time".equals(codeString)) 364 return TIME; 365 if ("unsignedInt".equals(codeString)) 366 return UNSIGNEDINT; 367 if ("uri".equals(codeString)) 368 return URI; 369 if ("uuid".equals(codeString)) 370 return UUID; 371 if ("xhtml".equals(codeString)) 372 return XHTML; 373 throw new FHIRException("Unknown DataTypes code '"+codeString+"'"); 374 } 375 public String toCode() { 376 switch (this) { 377 case ADDRESS: return "Address"; 378 case AGE: return "Age"; 379 case ANNOTATION: return "Annotation"; 380 case ATTACHMENT: return "Attachment"; 381 case BACKBONEELEMENT: return "BackboneElement"; 382 case CODEABLECONCEPT: return "CodeableConcept"; 383 case CODING: return "Coding"; 384 case CONTACTDETAIL: return "ContactDetail"; 385 case CONTACTPOINT: return "ContactPoint"; 386 case CONTRIBUTOR: return "Contributor"; 387 case COUNT: return "Count"; 388 case DATAREQUIREMENT: return "DataRequirement"; 389 case DISTANCE: return "Distance"; 390 case DOSAGE: return "Dosage"; 391 case DURATION: return "Duration"; 392 case ELEMENT: return "Element"; 393 case ELEMENTDEFINITION: return "ElementDefinition"; 394 case EXTENSION: return "Extension"; 395 case HUMANNAME: return "HumanName"; 396 case IDENTIFIER: return "Identifier"; 397 case META: return "Meta"; 398 case MONEY: return "Money"; 399 case NARRATIVE: return "Narrative"; 400 case PARAMETERDEFINITION: return "ParameterDefinition"; 401 case PERIOD: return "Period"; 402 case QUANTITY: return "Quantity"; 403 case RANGE: return "Range"; 404 case RATIO: return "Ratio"; 405 case REFERENCE: return "Reference"; 406 case RELATEDARTIFACT: return "RelatedArtifact"; 407 case SAMPLEDDATA: return "SampledData"; 408 case SIGNATURE: return "Signature"; 409 case SIMPLEQUANTITY: return "SimpleQuantity"; 410 case TIMING: return "Timing"; 411 case TRIGGERDEFINITION: return "TriggerDefinition"; 412 case USAGECONTEXT: return "UsageContext"; 413 case BASE64BINARY: return "base64Binary"; 414 case BOOLEAN: return "boolean"; 415 case CODE: return "code"; 416 case DATE: return "date"; 417 case DATETIME: return "dateTime"; 418 case DECIMAL: return "decimal"; 419 case ID: return "id"; 420 case INSTANT: return "instant"; 421 case INTEGER: return "integer"; 422 case MARKDOWN: return "markdown"; 423 case OID: return "oid"; 424 case POSITIVEINT: return "positiveInt"; 425 case STRING: return "string"; 426 case TIME: return "time"; 427 case UNSIGNEDINT: return "unsignedInt"; 428 case URI: return "uri"; 429 case UUID: return "uuid"; 430 case XHTML: return "xhtml"; 431 case NULL: return null; 432 default: return "?"; 433 } 434 } 435 public String getSystem() { 436 return "http://hl7.org/fhir/data-types"; 437 } 438 public String getDefinition() { 439 switch (this) { 440 case ADDRESS: return "An address expressed using postal conventions (as opposed to GPS or other location definition formats). This data type may be used to convey addresses for use in delivering mail as well as for visiting locations which might not be valid for mail delivery. There are a variety of postal address formats defined around the world."; 441 case AGE: return "A duration of time during which an organism (or a process) has existed."; 442 case ANNOTATION: return "A text note which also contains information about who made the statement and when."; 443 case ATTACHMENT: return "For referring to data content defined in other formats."; 444 case BACKBONEELEMENT: return "Base definition for all elements that are defined inside a resource - but not those in a data type."; 445 case CODEABLECONCEPT: return "A concept that may be defined by a formal reference to a terminology or ontology or may be provided by text."; 446 case CODING: return "A reference to a code defined by a terminology system."; 447 case CONTACTDETAIL: return "Specifies contact information for a person or organization."; 448 case CONTACTPOINT: return "Details for all kinds of technology mediated contact points for a person or organization, including telephone, email, etc."; 449 case CONTRIBUTOR: return "A contributor to the content of a knowledge asset, including authors, editors, reviewers, and endorsers."; 450 case COUNT: return "A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies."; 451 case DATAREQUIREMENT: return "Describes a required data item for evaluation in terms of the type of data, and optional code or date-based filters of the data."; 452 case DISTANCE: return "A length - a value with a unit that is a physical distance."; 453 case DOSAGE: return "Indicates how the medication is/was taken or should be taken by the patient."; 454 case DURATION: return "A length of time."; 455 case ELEMENT: return "Base definition for all elements in a resource."; 456 case ELEMENTDEFINITION: return "Captures constraints on each element within the resource, profile, or extension."; 457 case EXTENSION: return "Optional Extension Element - found in all resources."; 458 case HUMANNAME: return "A human's name with the ability to identify parts and usage."; 459 case IDENTIFIER: return "A technical identifier - identifies some entity uniquely and unambiguously."; 460 case META: return "The metadata about a resource. This is content in the resource that is maintained by the infrastructure. Changes to the content may not always be associated with version changes to the resource."; 461 case MONEY: return "An amount of economic utility in some recognized currency."; 462 case NARRATIVE: return "A human-readable formatted text, including images."; 463 case PARAMETERDEFINITION: return "The parameters to the module. This collection specifies both the input and output parameters. Input parameters are provided by the caller as part of the $evaluate operation. Output parameters are included in the GuidanceResponse."; 464 case PERIOD: return "A time period defined by a start and end date and optionally time."; 465 case QUANTITY: return "A measured amount (or an amount that can potentially be measured). Note that measured amounts include amounts that are not precisely quantified, including amounts involving arbitrary units and floating currencies."; 466 case RANGE: return "A set of ordered Quantities defined by a low and high limit."; 467 case RATIO: return "A relationship of two Quantity values - expressed as a numerator and a denominator."; 468 case REFERENCE: return "A reference from one resource to another."; 469 case RELATEDARTIFACT: return "Related artifacts such as additional documentation, justification, or bibliographic references."; 470 case SAMPLEDDATA: return "A series of measurements taken by a device, with upper and lower limits. There may be more than one dimension in the data."; 471 case SIGNATURE: return "A digital signature along with supporting context. The signature may be electronic/cryptographic in nature, or a graphical image representing a hand-written signature, or a signature process. Different signature approaches have different utilities."; 472 case SIMPLEQUANTITY: return ""; 473 case TIMING: return "Specifies an event that may occur multiple times. Timing schedules are used to record when things are planned, expected or requested to occur. The most common usage is in dosage instructions for medications. They are also used when planning care of various kinds, and may be used for reporting the schedule to which past regular activities were carried out."; 474 case TRIGGERDEFINITION: return "A description of a triggering event."; 475 case USAGECONTEXT: return "Specifies clinical/business/etc metadata that can be used to retrieve, index and/or categorize an artifact. This metadata can either be specific to the applicable population (e.g., age category, DRG) or the specific context of care (e.g., venue, care setting, provider of care)."; 476 case BASE64BINARY: return "A stream of bytes"; 477 case BOOLEAN: return "Value of \"true\" or \"false\""; 478 case CODE: return "A string which has at least one character and no leading or trailing whitespace and where there is no whitespace other than single spaces in the contents"; 479 case DATE: return "A date or partial date (e.g. just year or year + month). There is no time zone. The format is a union of the schema types gYear, gYearMonth and date. Dates SHALL be valid dates."; 480 case DATETIME: return "A date, date-time or partial date (e.g. just year or year + month). If hours and minutes are specified, a time zone SHALL be populated. The format is a union of the schema types gYear, gYearMonth, date and dateTime. Seconds must be provided due to schema type constraints but may be zero-filled and may be ignored. Dates SHALL be valid dates."; 481 case DECIMAL: return "A rational number with implicit precision"; 482 case ID: return "Any combination of letters, numerals, \"-\" and \".\", with a length limit of 64 characters. (This might be an integer, an unprefixed OID, UUID or any other identifier pattern that meets these constraints.) Ids are case-insensitive."; 483 case INSTANT: return "An instant in time - known at least to the second"; 484 case INTEGER: return "A whole number"; 485 case MARKDOWN: return "A string that may contain markdown syntax for optional processing by a mark down presentation engine"; 486 case OID: return "An OID represented as a URI"; 487 case POSITIVEINT: return "An integer with a value that is positive (e.g. >0)"; 488 case STRING: return "A sequence of Unicode characters"; 489 case TIME: return "A time during the day, with no date specified"; 490 case UNSIGNEDINT: return "An integer with a value that is not negative (e.g. >= 0)"; 491 case URI: return "String of characters used to identify a name or a resource"; 492 case UUID: return "A UUID, represented as a URI"; 493 case XHTML: return "XHTML format, as defined by W3C, but restricted usage (mainly, no active content)"; 494 case NULL: return null; 495 default: return "?"; 496 } 497 } 498 public String getDisplay() { 499 switch (this) { 500 case ADDRESS: return "Address"; 501 case AGE: return "Age"; 502 case ANNOTATION: return "Annotation"; 503 case ATTACHMENT: return "Attachment"; 504 case BACKBONEELEMENT: return "BackboneElement"; 505 case CODEABLECONCEPT: return "CodeableConcept"; 506 case CODING: return "Coding"; 507 case CONTACTDETAIL: return "ContactDetail"; 508 case CONTACTPOINT: return "ContactPoint"; 509 case CONTRIBUTOR: return "Contributor"; 510 case COUNT: return "Count"; 511 case DATAREQUIREMENT: return "DataRequirement"; 512 case DISTANCE: return "Distance"; 513 case DOSAGE: return "Dosage"; 514 case DURATION: return "Duration"; 515 case ELEMENT: return "Element"; 516 case ELEMENTDEFINITION: return "ElementDefinition"; 517 case EXTENSION: return "Extension"; 518 case HUMANNAME: return "HumanName"; 519 case IDENTIFIER: return "Identifier"; 520 case META: return "Meta"; 521 case MONEY: return "Money"; 522 case NARRATIVE: return "Narrative"; 523 case PARAMETERDEFINITION: return "ParameterDefinition"; 524 case PERIOD: return "Period"; 525 case QUANTITY: return "Quantity"; 526 case RANGE: return "Range"; 527 case RATIO: return "Ratio"; 528 case REFERENCE: return "Reference"; 529 case RELATEDARTIFACT: return "RelatedArtifact"; 530 case SAMPLEDDATA: return "SampledData"; 531 case SIGNATURE: return "Signature"; 532 case SIMPLEQUANTITY: return "SimpleQuantity"; 533 case TIMING: return "Timing"; 534 case TRIGGERDEFINITION: return "TriggerDefinition"; 535 case USAGECONTEXT: return "UsageContext"; 536 case BASE64BINARY: return "base64Binary"; 537 case BOOLEAN: return "boolean"; 538 case CODE: return "code"; 539 case DATE: return "date"; 540 case DATETIME: return "dateTime"; 541 case DECIMAL: return "decimal"; 542 case ID: return "id"; 543 case INSTANT: return "instant"; 544 case INTEGER: return "integer"; 545 case MARKDOWN: return "markdown"; 546 case OID: return "oid"; 547 case POSITIVEINT: return "positiveInt"; 548 case STRING: return "string"; 549 case TIME: return "time"; 550 case UNSIGNEDINT: return "unsignedInt"; 551 case URI: return "uri"; 552 case UUID: return "uuid"; 553 case XHTML: return "XHTML"; 554 case NULL: return null; 555 default: return "?"; 556 } 557 } 558 559 560}