Provided by: libsoap-wsdl-perl_3.003-3_all bug

NAME

       SOAP::WSDL::XSD::Typelib::Builtin - Built-in XML Schema datatypes

DESCRIPTION

       The SOAP::WSDL::XSD::Typelib::Builtin hierarchy implements all builtin types from the XML
       schema specification.

       All XML schema derived types inherit from SOAP::WSDL::XSD::Typelib::Builtin::anyType.

       These basic type classes are most useful when used as element or simpleType base classes.

       Using SOAP::WSDL::XSD::Typelib::Builtin uses all of the builtin datatype classes.

       All builtin types feature common behaviour described below in "OVERLOADED OPERATORS"

EXAMPLES

        my $bool = SOAP::WSDL::XSD::Typelib::Builtin::bool->new({ value => 0} );
        print $bool;    # prints "true"

        # implements <simpleType name="MySimpleType">
        #               <list itemType="xsd:string" />
        #            </simpleType>
        package MySimpleType;
        use SOAP::WSDL::XSD::Typelib::Builtin;
        use SOAP::WSDL::XSD::Typelib::SimpleType;

        use base qw(SOAP::WSDL::XSD::Typelib::SimpleType
           SOAP::WSDL::XSD::Typelib::Builtin::list
           SOAP::WSDL::XSD::Typelib::Builtin::string
        );
        1;

        # somewhere else
        my $list = MySimpleType->new({ value => [ 'You', 'shall', 'overcome' ] });
        print $list;   # prints "You shall overcome"

CLASS HIERARCHY

       This is the inheritance graph for builtin types.

       Types with [] marker describe types derived via the item in [] in the XML Schema specs.

       Derivation is implemented via multiple inheritance with the derivation method as first
       item in the base class list.

        anyType
        - anySimpleType
            - duration
            - dateTime
            - date
            - time
            - gYearMonth
            - gYear
            - gMonthDay
            - gDay
            - gMonth
            - boolean
            - base64Binary
            - hexBinary
            - float
            - decimal
                - integer
                - nonPositiveInteger
                    - negativeInteger
                - nonNegativeInteger
                    - positiveInteger
                    - unsignedLong
                    - unsignedInt
                    - unsignedShort
                    - unsignedByte
                - long
                    - int
                        - short
                            - byte
            - double
            - anyURI
            - NOTATION
            - string
                 - normalizedString
                     - language
                     - Name
                         - NCName
                             - ID
                             - IDREF
                                 - IDREFS [list]
                             - ENTITY
                     - token
                         - NMTOKEN
                             - NMTOKENS [list]

OVERLOADED OPERATORS

       Overloading is implemented via Class::Std's trait mechanism.

       The following behaviours apply:

       ·   string context

           All classes use the "serialize" method for stringification.

       ·   bool context

           All classes derived from anySimpleType return their value in bool context

       ·   numeric context

           The boolean class returns 0 or 1 in numeric context.

           decimal, float and double (and derived classes) return their value in numeric context.

       ·   arrayification (@{})

           When accessed as a list ref, objects of all classes return a list ref with the object
           itself as single element.

           This is most useful for writing loops without additional conversions, especially in
           mini-languages found in templating systems or the like, which may not natively support
           converting to list refs.

           Instead of writing something like

            my $value = $complexType->get_ELEMENT;
            $value = ref $value eq 'ARRAY' ? $value : [ $value ];
            for (@{ $value }) { ... }

           you can just write

            for (@{ $complexType->get_ELEMENT }) {...}

           Note that complexTypes with undef elements still return undef when accessing an
           undefined element, so when an element may be empty you still have to write something
           like:

            my $value = $complexType->get_ELEMENT();
            if (defined $value) {
                for (@{ $value }) {
                    ...
                }
            }

Subclasses

   SOAP::WSDL::XSD::Typelib::Builtin::anyType
       Base class for all types

   SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType
       Base class for all simple types

   SOAP::WSDL::XSD::Typelib::Builtin::anyURI
       Type representing URIs

   SOAP::WSDL::XSD::Typelib::Builtin::boolean
       Represents boolean data.

       Serializes to "true" or "false".

       Everything true in perl and not "false" is deserialized as true.

       Returns true/false in boolean context.

       Returns 1 / 0 in numeric context.

       boolean objects have a special method for deleting their value, because calling
       "setl_value(undef)" results in the value being set to false.

        $obj->delete_value();

   SOAP::WSDL::XSD::Typelib::Builtin::byte
       byte integer objects.

   SOAP::WSDL::XSD::Typelib::Builtin::date
       date values are automatically converted into XML date strings during setting:

        YYYY-MM-DD+zz:zz

       The time zone is set to the local time zone if not included.

       All input variants supported by Date::Parse are supported. You may even pass in dateTime
       strings - the time part will be ignored. Note that set_value is around 100 times slower
       when setting non-XML-time strings

       When setting dates before the beginning of the epoch (negative UNIX timestamp), you should
       use the XML date string format for setting dates. The behaviour of Date::Parse for dates
       before the epoch is system dependent.

   SOAP::WSDL::XSD::Typelib::Builtin::dateTime
       dateTime values are automatically converted into XML dateTime strings during setting:

        YYYY-MM-DDThh:mm:ss.nnnnnnn+zz:zz

       The fraction of seconds (nnnnnnn) part is optional. Fractions of seconds may be given with
       arbitrary precision

       The fraction of seconds part is excluded in converted values, as it would always be 0.

       All input variants supported by Date::Parse are supported. Note that set_value is around
       100 times slower when setting non-XML-time strings

   SOAP::WSDL::XSD::Typelib::Builtin::decimal
       decimal is the base of all non-float numbers

   SOAP::WSDL::XSD::Typelib::Builtin::double
   SOAP::WSDL::XSD::Typelib::Builtin::duration
   SOAP::WSDL::XSD::Typelib::Builtin::ENTITY
   SOAP::WSDL::XSD::Typelib::Builtin::float
   SOAP::WSDL::XSD::Typelib::Builtin::gDay
   SOAP::WSDL::XSD::Typelib::Builtin::gMonth
   SOAP::WSDL::XSD::Typelib::Builtin::gMonthDay
   SOAP::WSDL::XSD::Typelib::Builtin::gYear
   SOAP::WSDL::XSD::Typelib::Builtin::gYearMonth
   SOAP::WSDL::XSD::Typelib::Builtin::hexBinary
   SOAP::WSDL::XSD::Typelib::Builtin::ID
   SOAP::WSDL::XSD::Typelib::Builtin::IDREF
   SOAP::WSDL::XSD::Typelib::Builtin::IDREFS
       List of SOAP::WSDL::XSD::Typelib::Builtin::IDREF objects.

       Derived by SOAP::WSDL::XSD::Typelib::Builtin::list.

   SOAP::WSDL::XSD::Typelib::Builtin::int
   SOAP::WSDL::XSD::Typelib::Builtin::integer
   SOAP::WSDL::XSD::Typelib::Builtin::language
   SOAP::WSDL::XSD::Typelib::Builtin::list
   SOAP::WSDL::XSD::Typelib::Builtin::long
   SOAP::WSDL::XSD::Typelib::Builtin::Name
   SOAP::WSDL::XSD::Typelib::Builtin::NCName
   SOAP::WSDL::XSD::Typelib::Builtin::negativeInteger
   SOAP::WSDL::XSD::Typelib::Builtin::nonNegativeInteger
   SOAP::WSDL::XSD::Typelib::Builtin::nonPositiveInteger
   SOAP::WSDL::XSD::Typelib::Builtin::normalizedString
       Tab, newline and carriage return characters are replaced by whitespace in set_value.

   SOAP::WSDL::XSD::Typelib::Builtin::NOTATION
   SOAP::WSDL::XSD::Typelib::Builtin::positiveInteger
   SOAP::WSDL::XSD::Typelib::Builtin::QName
   SOAP::WSDL::XSD::Typelib::Builtin::short
   SOAP::WSDL::XSD::Typelib::Builtin::string
       String values are XML-escaped on serialization.

       The following characters are escaped: <, >, &

   SOAP::WSDL::XSD::Typelib::Builtin::time
       time values are automatically converted into XML time strings during setting:

        hh:mm:ss.nnnnnnn+zz:zz
        hh:mm:ss+zz:zz

       The time zone is set to the local time zone if not included. The optional nanoseconds part
       is not included in converted values, as it would always be 0.

       All input variants supported by Date::Parse are supported. You may even pass in dateTime
       strings - the date part will be ignored. Note that set_value is around 100 times slower
       when setting non-XML-time strings.

   SOAP::WSDL::XSD::Typelib::Builtin::token
   SOAP::WSDL::XSD::Typelib::Builtin::unsignedByte
   SOAP::WSDL::XSD::Typelib::Builtin::unsignedInt
   SOAP::WSDL::XSD::Typelib::Builtin::unsignedLong
   SOAP::WSDL::XSD::Typelib::Builtin::unsignedShort

CAVEATS

       ·   set_value

           In contrast to Class::Std-generated mutators (setters), set_value does not return the
           last value.

           This is for speed reasons: SOAP::WSDL never needs to know the last value when calling
           set_calue, but calls it over and over again...

BUGS AND LIMITATIONS

       ·   Thread safety

           SOAP::WSDL::XSD::Typelib::Builtin uses Class::Std::Fast::Storable which uses
           Class::Std. Class::Std is not thread safe, so SOAP::WSDL::XSD::Typelib::Builtin is
           neither.

       ·   XML Schema facets

           No facets are implemented yet.

AUTHOR

       Replace whitespace by @ in e-mail address.

        Martin Kutter E<gt>martin.kutter fen-net.deE<lt>

LICENSE AND COPYRIGHT

       Copyright 2004-2007 Martin Kutter.

       This file is part of SOAP-WSDL. You may distribute/modify it under the same terms as perl
       itself