Dryverl - XML schema
Printer-friendly Version

Table of Contents

Schema Document Properties

Target Namespace http://objectweb.org/dryverl-0.1
Element and Attribute Namespaces
  • Global element and attribute declarations belong to this schema's target namespace.
  • By default, local element declarations belong to this schema's target namespace.
  • By default, local attribute declarations have no namespace.
Documentation Dryverl Erlang-to-C binding specification language schema Copyright 2006 Romain Lenglet All rights reserved. The contents of this file are subject to the Modified BSD License. See the file "COPYING" for licensing details.

Declared Namespaces

Prefix Namespace
xsd http://www.w3.org/2001/XMLSchema
dryverl http://objectweb.org/dryverl-0.1
Schema Component Representation
<xsd:schema targetNamespace="http://objectweb.org/dryverl-0.1" elementFormDefault="qualified">
...
</xsd:schema>

Global Declarations

Element: def-bindings

Name def-bindings
Type dryverl:DefBindings
Nillable no
Abstract no
Documentation Specifies a set of bindings between Erlang functions and C code.
XML Instance Representation
<dryverl:def-bindings>
<!--
Uniqueness Constraint - uniqueBindingNames
Selector - dryverl:def-erlang-to-c-binding
Field(s) - @name
-->
<!--
Key Constraint - keyValueMapNames
Selector - ./dryverl:def-value-map
Field(s) - @name
-->
<!--
Key Reference Constraint - keyrefValueMapNames
Selector - .//dryverl:value-map-lock|.//dryverl:value-map-unlock|.//dryverl:value-map-find-entry
Field(s) - @name
Refers to - dryverl:keyValueMapNames
-->

<dryverl:gen-driver> dryverl:GenDriver </dryverl:gen-driver> [0..1] ?
<dryverl:def-value-map> dryverl:DefValueMap </dryverl:def-value-map> [0..*] ?
<dryverl:def-erlang-to-c-binding> dryverl:DefErlangToCBinding
<!--
Key Constraint - keyCCallVariableNames
Selector - dryverl:def-c-call-variable
Field(s) - @name
-->
<!--
Key Reference Constraint - keyrefCCallVariableNames
Selector - .//dryverl:c-call-variable
Field(s) - @name
Refers to - dryverl:keyCCallVariableNames
-->
</dryverl:def-erlang-to-c-binding> [1..*] ?
</dryverl:def-bindings>
Schema Component Representation
<xsd:element name="def-bindings" type=" dryverl:DefBindings ">
<xsd:unique name="uniqueBindingNames">
<xsd:selector xpath="dryverl:def-erlang-to-c-binding"/>
<xsd:field xpath="@name"/>
</xsd:unique>
<-- Commented out, because count() is forbidden here by REC-xmlschema-1-20041028 <xsd:unique name="uniqueFunctionSignatures"> <xsd:selector xpath="dryverl:def-erlang-to-c-binding/dryverl:def-erlang-input"/> <xsd:field xpath="@function-name"/> <xsd:field xpath="count(dryverl:def-erlang-arg)"/> </xsd:unique> -->
<xsd:key name="keyValueMapNames">
<xsd:selector xpath="./dryverl:def-value-map"/>
<xsd:field xpath="@name"/>
</xsd:key>
<xsd:keyref name="keyrefValueMapNames" refer=" dryverl:keyValueMapNames ">
<xsd:selector xpath=".//dryverl:value-map-lock|.//dryverl:value-map-unlock|.//dryverl:value-map-find-entry"/>
<xsd:field xpath="@name"/>
</xsd:keyref>
</xsd:element>

Global Definitions

Complex Type: BodyCCode

Super-types: None
Sub-types: None
Name BodyCCode
Abstract no
Documentation An actual main C code block of a binding. Typically, this code calls a C function with C call variables as arguments, and assigns the returned values to C call variables.
XML Instance Representation
<...>
<!-- Mixed content -->
Start Choice [0..*]
Start Choice [1]
<dryverl:c-local-variable> dryverl:CVariableAccess </dryverl:c-local-variable> [1] ?
<dryverl:c-call-variable> dryverl:CVariableAccess </dryverl:c-call-variable> [1] ?
<dryverl:value-map-lock> dryverl:ValueMapLockUnlock </dryverl:value-map-lock> [1] ?
<dryverl:value-map-unlock> dryverl:ValueMapLockUnlock </dryverl:value-map-unlock> [1] ?
End Choice
<dryverl:value-map-find-entry
name=" dryverl:Identifier [1] ?"> [1] ?
Start Choice [1]
Start Choice [1]
<dryverl:value-map-find-entry-id/> [1] ?
<dryverl:value-map-remove-entry-id/> [1] ?
<dryverl:value-map-destroy-entry-id/> [1] ?
End Choice
<dryverl:value-map-entry-id-ref> dryverl:BodyCCode </dryverl:value-map-entry-id-ref> [1] ?
<dryverl:value-map-entry-value-ref> dryverl:BodyCCode </dryverl:value-map-entry-value-ref> [0..1] ?
Start Choice [1]
<dryverl:value-map-find-entry-value/> [1] ?
<dryverl:value-map-remove-entry-value/> [1] ?
<dryverl:value-map-destroy-entry-value/> [1] ?
<dryverl:value-map-find-or-add-entry-value/> [1] ?
End Choice
<dryverl:value-map-entry-id-ref> dryverl:BodyCCode </dryverl:value-map-entry-id-ref> [0..1] ?
<dryverl:value-map-entry-value-ref> dryverl:BodyCCode </dryverl:value-map-entry-value-ref> [1] ?
End Choice
<dryverl:value-map-if-entry-found> dryverl:BodyCCode </dryverl:value-map-if-entry-found> [0..1] ?
<dryverl:value-map-if-entry-not-found> dryverl:BodyCCode </dryverl:value-map-if-entry-not-found> [0..1] ?
</dryverl:value-map-find-entry>
<dryverl:failure-atom> dryverl:BodyCCode </dryverl:failure-atom> [1] ?
<dryverl:failure-posix> dryverl:BodyCCode </dryverl:failure-posix> [1] ?
<dryverl:failure> dryverl:BodyCCode </dryverl:failure> [1] ?
End Choice
</...>
Schema Component Representation
<xsd:complexType name="BodyCCode" mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<-- Elements for manipulating value maps -->
<xsd:group ref=" dryverl:commonCCode "/>
<xsd:element name="value-map-find-entry">
<xsd:complexType>
<xsd:sequence>
<xsd:choice>
<xsd:sequence>
<xsd:choice>
<xsd:element name="value-map-find-entry-id">
<xsd:complexType/>
</xsd:element>
<xsd:element name="value-map-remove-entry-id">
<xsd:complexType/>
</xsd:element>
<xsd:element name="value-map-destroy-entry-id">
<xsd:complexType/>
</xsd:element>
</xsd:choice>
<xsd:element name="value-map-entry-id-ref" type=" dryverl:BodyCCode "/>
<xsd:element name="value-map-entry-value-ref" type=" dryverl:BodyCCode " minOccurs="0"/>
</xsd:sequence>
<xsd:sequence>
<xsd:choice>
<xsd:element name="value-map-find-entry-value">
<xsd:complexType/>
</xsd:element>
<xsd:element name="value-map-remove-entry-value">
<xsd:complexType/>
</xsd:element>
<xsd:element name="value-map-destroy-entry-value">
<xsd:complexType/>
</xsd:element>
<xsd:element name="value-map-find-or-add-entry-value">
<xsd:complexType/>
</xsd:element>
</xsd:choice>
<xsd:element name="value-map-entry-id-ref" type=" dryverl:BodyCCode " minOccurs="0"/>
<xsd:element name="value-map-entry-value-ref" type=" dryverl:BodyCCode "/>
</xsd:sequence>
</xsd:choice>
<xsd:element name="value-map-if-entry-found" type=" dryverl:BodyCCode " minOccurs="0"/>
<xsd:element name="value-map-if-entry-not-found" type=" dryverl:BodyCCode " minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" type=" dryverl:Identifier " use="required"/>
</xsd:complexType>
</xsd:element>
<-- Elements for notifying unrecoverable failures. -->
<xsd:element name="failure-atom" type=" dryverl:BodyCCode "/>
<xsd:element name="failure-posix" type=" dryverl:BodyCCode "/>
<xsd:element name="failure" type=" dryverl:BodyCCode "/>
</xsd:choice>
</xsd:complexType>

Complex Type: CVariableAccess

Super-types: None
Sub-types: None
Name CVariableAccess
Abstract no
Documentation The equivalent to a C expression that is evaluated as the value of the call variable or local variable with the given name.
XML Instance Representation
<...
name=" dryverl:Identifier [1] ?"/>
Schema Component Representation
<xsd:complexType name="CVariableAccess">
<xsd:attribute name="name" type=" dryverl:Identifier " use="required"/>
</xsd:complexType>

Complex Type: DecodeInput

Super-types: None
Sub-types: None
Name DecodeInput
Abstract no
Documentation C code that decodes the optional Erlang term passed by copy, analyzes the optional list of Erlang binary terms passed by reference, and assigns values to C call variables.
XML Instance Representation
<...>
<dryverl:def-c-local-variable> dryverl:DefCVariable </dryverl:def-c-local-variable> [0..*] ?
<dryverl:assign-c-call-variables> dryverl:DecodeInputCCode </dryverl:assign-c-call-variables> [1] ?
</...>
Schema Component Representation
<xsd:complexType name="DecodeInput">
<xsd:sequence>
<xsd:group ref=" dryverl:defCLocalVariables "/>
<xsd:element name="assign-c-call-variables" type=" dryverl:DecodeInputCCode "/>
</xsd:sequence>
</xsd:complexType>

Complex Type: DecodeInputCCode

Super-types: None
Sub-types: None
Name DecodeInputCCode
Abstract no
Documentation An actual C code block that decodes the optional Erlang term passed by copy, analyzes the optional list of Erlang binary terms passed by reference, and assigns C call variables.
XML Instance Representation
<...>
<!-- Mixed content -->
Start Choice [0..*]
Start Choice [1]
<dryverl:c-local-variable> dryverl:CVariableAccess </dryverl:c-local-variable> [1] ?
<dryverl:c-call-variable> dryverl:CVariableAccess </dryverl:c-call-variable> [1] ?
<dryverl:value-map-lock> dryverl:ValueMapLockUnlock </dryverl:value-map-lock> [1] ?
<dryverl:value-map-unlock> dryverl:ValueMapLockUnlock </dryverl:value-map-unlock> [1] ?
End Choice
<dryverl:value-map-find-entry
name=" dryverl:Identifier [1] ?"> [1] ?
Start Choice [1]
Start Choice [1]
<dryverl:value-map-find-entry-id/> [1] ?
<dryverl:value-map-remove-entry-id/> [1] ?
<dryverl:value-map-destroy-entry-id/> [1] ?
End Choice
<dryverl:value-map-entry-id-ref> dryverl:DecodeInputCCode </dryverl:value-map-entry-id-ref> [1] ?
<dryverl:value-map-entry-value-ref> dryverl:DecodeInputCCode </dryverl:value-map-entry-value-ref> [0..1] ?
Start Choice [1]
<dryverl:value-map-find-entry-value/> [1] ?
<dryverl:value-map-remove-entry-value/> [1] ?
<dryverl:value-map-destroy-entry-value/> [1] ?
<dryverl:value-map-find-or-add-entry-value/> [1] ?
End Choice
<dryverl:value-map-entry-id-ref> dryverl:DecodeInputCCode </dryverl:value-map-entry-id-ref> [0..1] ?
<dryverl:value-map-entry-value-ref> dryverl:DecodeInputCCode </dryverl:value-map-entry-value-ref> [1] ?
End Choice
<dryverl:value-map-if-entry-found> dryverl:DecodeInputCCode </dryverl:value-map-if-entry-found> [0..1] ?
<dryverl:value-map-if-entry-not-found> dryverl:DecodeInputCCode </dryverl:value-map-if-entry-not-found> [0..1] ?
</dryverl:value-map-find-entry>
<dryverl:failure-atom> dryverl:DecodeInputCCode </dryverl:failure-atom> [1] ?
<dryverl:failure-posix> dryverl:DecodeInputCCode </dryverl:failure-posix> [1] ?
<dryverl:failure> dryverl:DecodeInputCCode </dryverl:failure> [1] ?
<dryverl:byref-binaries-count/> [1] ?
<dryverl:decode-input-byref-binary> [1] ?
<dryverl:decode-input-byref-binary-ref-into> dryverl:DecodeInputCCode </dryverl:decode-input-byref-binary-ref-into> [1] ?
<dryverl:decode-input-byref-binary-buf-ref-into> dryverl:DecodeInputCCode </dryverl:decode-input-byref-binary-buf-ref-into> [1] ?
<dryverl:decode-input-byref-binary-size-into> dryverl:DecodeInputCCode </dryverl:decode-input-byref-binary-size-into> [1] ?
<dryverl:decode-input-byref-binary-offset-into> dryverl:DecodeInputCCode </dryverl:decode-input-byref-binary-offset-into> [1] ?
</dryverl:decode-input-byref-binary>
<dryverl:decode-input-long-into> dryverl:DecodeInputCCode </dryverl:decode-input-long-into> [1] ?
<dryverl:decode-input-ulong-into> dryverl:DecodeInputCCode </dryverl:decode-input-ulong-into> [1] ?
<dryverl:decode-input-double-into> dryverl:DecodeInputCCode </dryverl:decode-input-double-into> [1] ?
<dryverl:decode-input-boolean-into> dryverl:DecodeInputCCode </dryverl:decode-input-boolean-into> [1] ?
<dryverl:decode-input-char-into> dryverl:DecodeInputCCode </dryverl:decode-input-char-into> [1] ?
<dryverl:decode-input-string-into> dryverl:DecodeInputCCode </dryverl:decode-input-string-into> [1] ?
<dryverl:decode-input-atom-into> dryverl:DecodeInputCCode </dryverl:decode-input-atom-into> [1] ?
<dryverl:decode-input-binary> [1] ?
<dryverl:decode-input-binary-data-into> dryverl:DecodeInputCCode </dryverl:decode-input-binary-data-into> [1] ?
<dryverl:decode-input-binary-size-into> dryverl:DecodeInputCCode </dryverl:decode-input-binary-size-into> [1] ?
</dryverl:decode-input-binary>
<dryverl:decode-input-fun-into> dryverl:DecodeInputCCode </dryverl:decode-input-fun-into> [1] ?
<dryverl:decode-input-pid-into> dryverl:DecodeInputCCode </dryverl:decode-input-pid-into> [1] ?
<dryverl:decode-input-port-into> dryverl:DecodeInputCCode </dryverl:decode-input-port-into> [1] ?
<dryverl:decode-input-ref-into> dryverl:DecodeInputCCode </dryverl:decode-input-ref-into> [1] ?
<dryverl:decode-input-trace-into> dryverl:DecodeInputCCode </dryverl:decode-input-trace-into> [1] ?
<dryverl:decode-input-tuple> [1] ?
<dryverl:decode-input-tuple-size-into> dryverl:DecodeInputCCode </dryverl:decode-input-tuple-size-into> [1] ?
<dryverl:decode-input-tuple-contents> dryverl:DecodeInputCCode </dryverl:decode-input-tuple-contents> [1] ?
</dryverl:decode-input-tuple>
<dryverl:decode-input-list> [1] ?
<dryverl:decode-input-list-size-into> dryverl:DecodeInputCCode </dryverl:decode-input-list-size-into> [1] ?
<dryverl:decode-input-list-contents> dryverl:DecodeInputCCode </dryverl:decode-input-list-contents> [1] ?
</dryverl:decode-input-list>
<dryverl:decode-input-next-term-info> [1] ?
<dryverl:decode-input-next-term-type-into> dryverl:DecodeInputCCode </dryverl:decode-input-next-term-type-into> [1] ?
<dryverl:decode-input-next-term-size-into> dryverl:DecodeInputCCode </dryverl:decode-input-next-term-size-into> [1] ?
</dryverl:decode-input-next-term-info>
End Choice
</...>
Schema Component Representation
<xsd:complexType name="DecodeInputCCode" mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<-- Elements for manipulating value maps -->
<xsd:group ref=" dryverl:commonCCode "/>
<xsd:element name="value-map-find-entry">
<xsd:complexType>
<xsd:sequence>
<xsd:choice>
<xsd:sequence>
<xsd:choice>
<xsd:element name="value-map-find-entry-id">
<xsd:complexType/>
</xsd:element>
<xsd:element name="value-map-remove-entry-id">
<xsd:complexType/>
</xsd:element>
<xsd:element name="value-map-destroy-entry-id">
<xsd:complexType/>
</xsd:element>
</xsd:choice>
<xsd:element name="value-map-entry-id-ref" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="value-map-entry-value-ref" type=" dryverl:DecodeInputCCode " minOccurs="0"/>
</xsd:sequence>
<xsd:sequence>
<xsd:choice>
<xsd:element name="value-map-find-entry-value">
<xsd:complexType/>
</xsd:element>
<xsd:element name="value-map-remove-entry-value">
<xsd:complexType/>
</xsd:element>
<xsd:element name="value-map-destroy-entry-value">
<xsd:complexType/>
</xsd:element>
<xsd:element name="value-map-find-or-add-entry-value">
<xsd:complexType/>
</xsd:element>
</xsd:choice>
<xsd:element name="value-map-entry-id-ref" type=" dryverl:DecodeInputCCode " minOccurs="0"/>
<xsd:element name="value-map-entry-value-ref" type=" dryverl:DecodeInputCCode "/>
</xsd:sequence>
</xsd:choice>
<xsd:element name="value-map-if-entry-found" type=" dryverl:DecodeInputCCode " minOccurs="0"/>
<xsd:element name="value-map-if-entry-not-found" type=" dryverl:DecodeInputCCode " minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" type=" dryverl:Identifier " use="required"/>
</xsd:complexType>
</xsd:element>
<-- Elements for notifying unrecoverable failures. -->
<xsd:element name="failure-atom" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="failure-posix" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="failure" type=" dryverl:DecodeInputCCode "/>
<-- Elements for decoding the list of Erlang binaries passed by ref. -->
<xsd:element name="byref-binaries-count">
<xsd:complexType/>
</xsd:element>
<xsd:element name="decode-input-byref-binary">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="decode-input-byref-binary-ref-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-byref-binary-buf-ref-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-byref-binary-size-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-byref-binary-offset-into" type=" dryverl:DecodeInputCCode "/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<-- Elements for decoding the Erlang term passed by copy. -->
<xsd:element name="decode-input-long-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-ulong-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-double-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-boolean-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-char-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-string-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-atom-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-binary">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="decode-input-binary-data-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-binary-size-into" type=" dryverl:DecodeInputCCode "/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="decode-input-fun-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-pid-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-port-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-ref-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-trace-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-tuple">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="decode-input-tuple-size-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-tuple-contents" type=" dryverl:DecodeInputCCode "/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="decode-input-list">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="decode-input-list-size-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-list-contents" type=" dryverl:DecodeInputCCode "/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="decode-input-next-term-info">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="decode-input-next-term-type-into" type=" dryverl:DecodeInputCCode "/>
<xsd:element name="decode-input-next-term-size-into" type=" dryverl:DecodeInputCCode "/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>

Complex Type: DecodeOutput

Super-types: None
Sub-types: None
Name DecodeOutput
Abstract no
Documentation The Erlang expression that computes the Erlang term returned by an Erlang function, from the Erlang term returned by copy and the optional list of Erlang binary terms returned by reference.
XML Instance Representation
<...>
<dryverl:create-output-term> dryverl:DecodeOutputErlangCode </dryverl:create-output-term> [1] ?
</...>
Schema Component Representation
<xsd:complexType name="DecodeOutput">
<xsd:sequence>
<xsd:element name="create-output-term" type=" dryverl:DecodeOutputErlangCode "/>
</xsd:sequence>
</xsd:complexType>

Complex Type: DecodeOutputErlangCode

Super-types: None
Sub-types: None
Name DecodeOutputErlangCode
Abstract no
Documentation An actual Erlang expression that computes the Erlang term returned by an Erlang function, from the Erlang term returned by copy and the optional list of Erlang binary terms returned by reference.
XML Instance Representation
<...>
<!-- Mixed content -->
Start Choice [0..*]
<dryverl:erl-output-main-term/> [1] ?
<dryverl:erl-output-byref-binary-list/> [1] ?
End Choice
</...>
Schema Component Representation
<xsd:complexType name="DecodeOutputErlangCode" mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="erl-output-main-term">
<xsd:complexType/>
</xsd:element>
<xsd:element name="erl-output-byref-binary-list">
<xsd:complexType/>
</xsd:element>
</xsd:choice>
</xsd:complexType>

Complex Type: DefBindings

Super-types: None
Sub-types: None
Name DefBindings
Abstract no
Documentation Specifies a set of bindings between Erlang functions and C code.
XML Instance Representation
<...>
<dryverl:gen-driver> dryverl:GenDriver </dryverl:gen-driver> [0..1] ?
<dryverl:def-value-map> dryverl:DefValueMap </dryverl:def-value-map> [0..*] ?
<dryverl:def-erlang-to-c-binding> dryverl:DefErlangToCBinding
<!--
Key Constraint - keyCCallVariableNames
Selector - dryverl:def-c-call-variable
Field(s) - @name
-->
<!--
Key Reference Constraint - keyrefCCallVariableNames
Selector - .//dryverl:c-call-variable
Field(s) - @name
Refers to - dryverl:keyCCallVariableNames
-->
</dryverl:def-erlang-to-c-binding> [1..*] ?
</...>
Schema Component Representation
<xsd:complexType name="DefBindings">
<xsd:sequence>
<xsd:element name="gen-driver" type=" dryverl:GenDriver " minOccurs="0"/>
<xsd:element name="def-value-map" type=" dryverl:DefValueMap " minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="def-erlang-to-c-binding" type=" dryverl:DefErlangToCBinding " maxOccurs="unbounded">
<xsd:key name="keyCCallVariableNames">
<xsd:selector xpath="dryverl:def-c-call-variable"/>
<xsd:field xpath="@name"/>
</xsd:key>
<xsd:keyref name="keyrefCCallVariableNames" refer=" dryverl:keyCCallVariableNames ">
<xsd:selector xpath=".//dryverl:c-call-variable"/>
<xsd:field xpath="@name"/>
</xsd:keyref>
</xsd:element>
</xsd:sequence>
</xsd:complexType>

Complex Type: DefCVariable

Super-types: xsd:string < DefCVariable (by extension)
Sub-types: None
Name DefCVariable
Abstract no
Documentation The definition of a call variable in a binding, or a local variable in a C block. The content of this element is a C expression that is evaluated as the initial value of the variable. This should be a simple literal, e.g. 0 or NULL.
XML Instance Representation
<...
name=" dryverl:Identifier [1] ?"
c-type=" xsd:token [1] ?">
xsd:string
</...>
Schema Component Representation
<xsd:complexType name="DefCVariable">
<xsd:simpleContent>
<xsd:extension base=" xsd:string ">
<xsd:attribute name="name" type=" dryverl:Identifier " use="required"/>
<xsd:attribute name="c-type" type=" xsd:token " use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>

Complex Type: DefErlangArg

Super-types: None
Sub-types: None
Name DefErlangArg
Abstract no
Documentation Specifies the name and type documentation of an argument of the Erlang function in a binding.
XML Instance Representation
<...
name=" dryverl:Identifier [1] ?"
type-doc=" dryverl:ErlangDoc [1] ?"/>
Schema Component Representation
<xsd:complexType name="DefErlangArg">
<xsd:attribute name="name" type=" dryverl:Identifier " use="required"/>
<xsd:attribute name="type-doc" type=" dryverl:ErlangDoc " use="required"/>
</xsd:complexType>

Complex Type: DefErlangInput

Super-types: None
Sub-types: None
Name DefErlangInput
Abstract no
Documentation Specifies the name and arguments of the Erlang function in a binding.
XML Instance Representation
<...
function-name=" dryverl:Identifier [1] ?">
<dryverl:def-erlang-arg> dryverl:DefErlangArg </dryverl:def-erlang-arg> [0..*] ?
<dryverl:def-erlang-type-doc> dryverl:ErlangDoc </dryverl:def-erlang-type-doc> [0..*] ?
</...>
Schema Component Representation
<xsd:complexType name="DefErlangInput">
<xsd:sequence>
<xsd:element name="def-erlang-arg" type=" dryverl:DefErlangArg " minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="def-erlang-type-doc" type=" dryverl:ErlangDoc " minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="function-name" type=" dryverl:Identifier " use="required"/>
</xsd:complexType>

Complex Type: DefErlangOutput

Super-types: None
Sub-types: None
Name DefErlangOutput
Abstract no
Documentation Documents the type of the term returned by an Erlang function.
XML Instance Representation
<...>
<dryverl:def-erlang-return> dryverl:DefErlangReturn </dryverl:def-erlang-return> [1] ?
<dryverl:def-erlang-type-doc> dryverl:ErlangDoc </dryverl:def-erlang-type-doc> [0..*] ?
</...>
Schema Component Representation
<xsd:complexType name="DefErlangOutput">
<xsd:sequence>
<xsd:element name="def-erlang-return" type=" dryverl:DefErlangReturn "/>
<xsd:element name="def-erlang-type-doc" type=" dryverl:ErlangDoc " minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>

Complex Type: DefErlangReturn

Super-types: None
Sub-types: None
Name DefErlangReturn
Abstract no
Documentation Documentation about the type of the term returned by an Erlang function.
XML Instance Representation
<...
type-doc=" dryverl:ErlangDoc [1] ?"/>
Schema Component Representation
<xsd:complexType name="DefErlangReturn">
<xsd:attribute name="type-doc" type=" dryverl:ErlangDoc " use="required"/>
</xsd:complexType>

Complex Type: DefErlangToCBinding

Super-types: None
Sub-types: None
Name DefErlangToCBinding
Abstract no
Documentation Defines a binding between an Erlang function and C code.
XML Instance Representation
<...
name=" dryverl:Identifier [1] ?">
<dryverl:def-erlang-input> dryverl:DefErlangInput
<!--
Key Constraint - keyErlangArgNames
Selector - dryverl:def-erlang-arg
Field(s) - @name
-->
<!--
Key Reference Constraint - keyrefErlangArgNames
Selector - .//dryverl:erlang-arg
Field(s) - @name
Refers to - dryverl:keyErlangArgNames
-->
</dryverl:def-erlang-input> [1] ?
<dryverl:encode-input> dryverl:EncodeInput </dryverl:encode-input> [1] ?
<dryverl:def-c-call-variable> dryverl:DefCVariable </dryverl:def-c-call-variable> [0..*] ?
<dryverl:decode-input> dryverl:DecodeInput
<!--
Key Constraint - keyDecodeInputCLocalVariableNames
Selector - dryverl:def-c-local-variable
Field(s) - @name
-->
<!--
Key Reference Constraint - keyrefDecodeInputCLocalVariableNames
Selector - .//dryverl:c-local-variable
Field(s) - @name
Refers to - dryverl:keyDecodeInputCLocalVariableNames
-->
</dryverl:decode-input> [1] ?
<dryverl:execute-body> dryverl:ExecuteBody
<!--
Key Constraint - keyExecuteBodyCLocalVariableNames
Selector - dryverl:def-c-local-variable
Field(s) - @name
-->
<!--
Key Reference Constraint - keyrefExecuteBodyCLocalVariableNames
Selector - .//dryverl:c-local-variable
Field(s) - @name
Refers to - dryverl:keyExecuteBodyCLocalVariableNames
-->
</dryverl:execute-body> [1] ?
Start Sequence [0..1] ?
<dryverl:encode-output> dryverl:EncodeOutput
<!--
Key Constraint - keyEncodeOutputCLocalVariableNames
Selector - dryverl:def-c-local-variable
Field(s) - @name
-->
<!--
Key Reference Constraint - keyrefEncodeOutputCLocalVariableNames
Selector - .//dryverl:c-local-variable
Field(s) - @name
Refers to - dryverl:keyEncodeOutputCLocalVariableNames
-->
</dryverl:encode-output> [1] ?
<dryverl:decode-output> dryverl:DecodeOutput </dryverl:decode-output> [1] ?
<dryverl:def-erlang-output> dryverl:DefErlangOutput </dryverl:def-erlang-output> [1] ?
End Sequence
</...>
Schema Component Representation
<xsd:complexType name="DefErlangToCBinding">
<xsd:sequence>
<xsd:element name="def-erlang-input" type=" dryverl:DefErlangInput ">
<xsd:key name="keyErlangArgNames">
<xsd:selector xpath="dryverl:def-erlang-arg"/>
<xsd:field xpath="@name"/>
</xsd:key>
<xsd:keyref name="keyrefErlangArgNames" refer=" dryverl:keyErlangArgNames ">
<xsd:selector xpath=".//dryverl:erlang-arg"/>
<xsd:field xpath="@name"/>
</xsd:keyref>
</xsd:element>
<xsd:element name="encode-input" type=" dryverl:EncodeInput "/>
<xsd:element name="def-c-call-variable" type=" dryverl:DefCVariable " minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="decode-input" type=" dryverl:DecodeInput ">
<xsd:key name="keyDecodeInputCLocalVariableNames">
<xsd:selector xpath="dryverl:def-c-local-variable"/>
<xsd:field xpath="@name"/>
</xsd:key>
<xsd:keyref name="keyrefDecodeInputCLocalVariableNames" refer=" dryverl:keyDecodeInputCLocalVariableNames ">
<xsd:selector xpath=".//dryverl:c-local-variable"/>
<xsd:field xpath="@name"/>
</xsd:keyref>
</xsd:element>
<xsd:element name="execute-body" type=" dryverl:ExecuteBody ">
<xsd:key name="keyExecuteBodyCLocalVariableNames">
<xsd:selector xpath="dryverl:def-c-local-variable"/>
<xsd:field xpath="@name"/>
</xsd:key>
<xsd:keyref name="keyrefExecuteBodyCLocalVariableNames" refer=" dryverl:keyExecuteBodyCLocalVariableNames ">
<xsd:selector xpath=".//dryverl:c-local-variable"/>
<xsd:field xpath="@name"/>
</xsd:keyref>
</xsd:element>
<-- sequence of output elements -->
<xsd:sequence minOccurs="0">
<xsd:element name="encode-output" type=" dryverl:EncodeOutput ">
<xsd:key name="keyEncodeOutputCLocalVariableNames">
<xsd:selector xpath="dryverl:def-c-local-variable"/>
<xsd:field xpath="@name"/>
</xsd:key>
<xsd:keyref name="keyrefEncodeOutputCLocalVariableNames" refer=" dryverl:keyEncodeOutputCLocalVariableNames ">
<xsd:selector xpath=".//dryverl:c-local-variable"/>
<xsd:field xpath="@name"/>
</xsd:keyref>
</xsd:element>
<xsd:element name="decode-output" type=" dryverl:DecodeOutput "/>
<xsd:element name="def-erlang-output" type=" dryverl:DefErlangOutput "/>
</xsd:sequence>
</xsd:sequence>
<xsd:attribute name="name" type=" dryverl:Identifier " use="required"/>
</xsd:complexType>

Complex Type: DefHashMap

Super-types: None
Sub-types: None
Name DefHashMap
Abstract no
Documentation Specifies a hash map that is used to accelerate searches for value map entries given to their identifiers or values.
XML Instance Representation
<...
table-size=" xsd:positiveInteger (value >= 2) [1] ?"/>
Schema Component Representation
<xsd:complexType name="DefHashMap">
<xsd:attribute name="table-size" use="required">
<xsd:simpleType>
<xsd:restriction base=" xsd:positiveInteger ">
<xsd:minInclusive value="2"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>

Complex Type: DefValueDestroyCode

Super-types: None
Sub-types: None
Name DefValueDestroyCode
Abstract no
Documentation A C code block that is used to destroy a value in a removed value map entry. This code is used when <value-map-destroy-entry-id> and <value-map-destory-entry-value> elements are used, and for cleanup when the bindings implementation terminates.
XML Instance Representation
<...>
<!-- Mixed content -->
Start Choice [0..*]
<dryverl:value-ref/> [1] ?
End Choice
</...>
Schema Component Representation
<xsd:complexType name="DefValueDestroyCode" mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="value-ref">
<xsd:complexType/>
</xsd:element>
</xsd:choice>
</xsd:complexType>

Complex Type: DefValueMap

Super-types: None
Sub-types: None
Name DefValueMap
Abstract no
Documentation Defines value maps that can be used in bindings.
XML Instance Representation
<...
name=" dryverl:Identifier [1] ?"
c-type=" xsd:token [1] ?"
pre-allocated-size=" xsd:positiveInteger (value >= 1) [1] ?">
<dryverl:def-id-hash-map> dryverl:DefHashMap </dryverl:def-id-hash-map> [0..1] ?
<dryverl:def-value-hash-map> dryverl:DefHashMap </dryverl:def-value-hash-map> [0..1] ?
<dryverl:def-value-destroy-code> dryverl:DefValueDestroyCode </dryverl:def-value-destroy-code> [0..1] ?
</...>
Schema Component Representation
<xsd:complexType name="DefValueMap">
<xsd:sequence>
<xsd:element name="def-id-hash-map" type=" dryverl:DefHashMap " minOccurs="0"/>
<xsd:element name="def-value-hash-map" type=" dryverl:DefHashMap " minOccurs="0"/>
<xsd:element name="def-value-destroy-code" type=" dryverl:DefValueDestroyCode " minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" type=" dryverl:Identifier " use="required"/>
<xsd:attribute name="c-type" type=" xsd:token " use="required"/>
<xsd:attribute name="pre-allocated-size" use="required">
<xsd:simpleType>
<xsd:restriction base=" xsd:positiveInteger ">
<xsd:minInclusive value="1"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>

Complex Type: EncodeInput

Super-types: None
Sub-types: None
Name EncodeInput
Abstract no
Documentation The Erlang expression, in a binding's Erlang function, that are evaluated as the Erlang term that is encoded and sent to the C implementation by copy, and as the list of Erlang binary terms to send by reference.
XML Instance Representation
<...>
<dryverl:encode-input-main-term> dryverl:EncodeInputErlangCode </dryverl:encode-input-main-term> [0..1] ?
<dryverl:encode-input-byref-binary-list> dryverl:EncodeInputErlangCode </dryverl:encode-input-byref-binary-list> [0..1] ?
</...>
Schema Component Representation
<xsd:complexType name="EncodeInput">
<xsd:sequence>
<xsd:element name="encode-input-main-term" type=" dryverl:EncodeInputErlangCode " minOccurs="0"/>
<xsd:element name="encode-input-byref-binary-list" type=" dryverl:EncodeInputErlangCode " minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>

Complex Type: EncodeInputErlangCode

Super-types: None
Sub-types: None
Name EncodeInputErlangCode
Abstract no
Documentation Erlang code, in a binding's Erlang function, that is evaluated as a term to send to the C implementation.
XML Instance Representation
<...>
<!-- Mixed content -->
Start Choice [0..*]
<dryverl:erlang-arg
name=" dryverl:Identifier [1] ?"/> [1] ?
End Choice
</...>
Schema Component Representation
<xsd:complexType name="EncodeInputErlangCode" mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="erlang-arg">
<xsd:complexType>
<xsd:attribute name="name" type=" dryverl:Identifier " use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>

Complex Type: EncodeOutput

Super-types: None
Sub-types: None
Name EncodeOutput
Abstract no
Documentation C code that encodes the Erlang term returned by copy, and optionally builds a list of Erlang binary terms returned by reference, from the values of the C call variables.
XML Instance Representation
<...>
<dryverl:def-c-local-variable> dryverl:DefCVariable </dryverl:def-c-local-variable> [0..*] ?
<dryverl:encode-output-main-term-and-byref-binaries> dryverl:EncodeOutputCCode </dryverl:encode-output-main-term-and-byref-binaries> [1] ?
</...>
Schema Component Representation
<xsd:complexType name="EncodeOutput">
<xsd:sequence>
<xsd:group ref=" dryverl:defCLocalVariables "/>
<xsd:element name="encode-output-main-term-and-byref-binaries" type=" dryverl:EncodeOutputCCode "/>
</xsd:sequence>
</xsd:complexType>

Complex Type: EncodeOutputCCode

Super-types: None
Sub-types: None
Name EncodeOutputCCode
Abstract no
Documentation An actual C code block that encodes the Erlang term returned by copy, and optionally builds a list of Erlang binary terms returned by reference, from the values of the C call variables.
XML Instance Representation
<...>
<!-- Mixed content -->
Start Choice [0..*]
Start Choice [1]
<dryverl:c-local-variable> dryverl:CVariableAccess </dryverl:c-local-variable> [1] ?
<dryverl:c-call-variable> dryverl:CVariableAccess </dryverl:c-call-variable> [1] ?
<dryverl:value-map-lock> dryverl:ValueMapLockUnlock </dryverl:value-map-lock> [1] ?
<dryverl:value-map-unlock> dryverl:ValueMapLockUnlock </dryverl:value-map-unlock> [1] ?
End Choice
<dryverl:value-map-find-entry
name=" dryverl:Identifier [1] ?"> [1] ?
Start Choice [1]
Start Choice [1]
<dryverl:value-map-find-entry-id/> [1] ?
<dryverl:value-map-remove-entry-id/> [1] ?
<dryverl:value-map-destroy-entry-id/> [1] ?
End Choice
<dryverl:value-map-entry-id-ref> dryverl:EncodeOutputCCode </dryverl:value-map-entry-id-ref> [1] ?
<dryverl:value-map-entry-value-ref> dryverl:EncodeOutputCCode </dryverl:value-map-entry-value-ref> [0..1] ?
Start Choice [1]
<dryverl:value-map-find-entry-value/> [1] ?
<dryverl:value-map-remove-entry-value/> [1] ?
<dryverl:value-map-destroy-entry-value/> [1] ?
<dryverl:value-map-find-or-add-entry-value/> [1] ?
End Choice
<dryverl:value-map-entry-id-ref> dryverl:EncodeOutputCCode </dryverl:value-map-entry-id-ref> [0..1] ?
<dryverl:value-map-entry-value-ref> dryverl:EncodeOutputCCode </dryverl:value-map-entry-value-ref> [1] ?
End Choice
<dryverl:value-map-if-entry-found> dryverl:EncodeOutputCCode </dryverl:value-map-if-entry-found> [0..1] ?
<dryverl:value-map-if-entry-not-found> dryverl:EncodeOutputCCode </dryverl:value-map-if-entry-not-found> [0..1] ?
</dryverl:value-map-find-entry>
<dryverl:failure-atom> dryverl:EncodeOutputCCode </dryverl:failure-atom> [1] ?
<dryverl:failure-posix> dryverl:EncodeOutputCCode </dryverl:failure-posix> [1] ?
<dryverl:failure> dryverl:EncodeOutputCCode </dryverl:failure> [1] ?
<dryverl:encode-output-byref-binary> [1] ?
<dryverl:encode-output-byref-binary-ref> dryverl:EncodeOutputCCode </dryverl:encode-output-byref-binary-ref> [1] ?
<dryverl:encode-output-byref-binary-size> dryverl:EncodeOutputCCode </dryverl:encode-output-byref-binary-size> [1] ?
<dryverl:encode-output-byref-binary-offset> dryverl:EncodeOutputCCode </dryverl:encode-output-byref-binary-offset> [1] ?
</dryverl:encode-output-byref-binary>
<dryverl:encode-output-long> dryverl:EncodeOutputCCode </dryverl:encode-output-long> [1] ?
<dryverl:encode-output-ulong> dryverl:EncodeOutputCCode </dryverl:encode-output-ulong> [1] ?
<dryverl:encode-output-double> dryverl:EncodeOutputCCode </dryverl:encode-output-double> [1] ?
<dryverl:encode-output-boolean> dryverl:EncodeOutputCCode </dryverl:encode-output-boolean> [1] ?
<dryverl:encode-output-char> dryverl:EncodeOutputCCode </dryverl:encode-output-char> [1] ?
<dryverl:encode-output-string> dryverl:EncodeOutputCCode </dryverl:encode-output-string> [1] ?
<dryverl:encode-output-string-len> [1] ?
<dryverl:encode-output-string-len-string> dryverl:EncodeOutputCCode </dryverl:encode-output-string-len-string> [1] ?
<dryverl:encode-output-string-len-size> dryverl:EncodeOutputCCode </dryverl:encode-output-string-len-size> [1] ?
</dryverl:encode-output-string-len>
<dryverl:encode-output-atom> dryverl:EncodeOutputCCode </dryverl:encode-output-atom> [1] ?
<dryverl:encode-output-atom-len> [1] ?
<dryverl:encode-output-atom-len-string> dryverl:EncodeOutputCCode </dryverl:encode-output-atom-len-string> [1] ?
<dryverl:encode-output-atom-len-size> dryverl:EncodeOutputCCode </dryverl:encode-output-atom-len-size> [1] ?
</dryverl:encode-output-atom-len>
<dryverl:encode-output-binary> [1] ?
<dryverl:encode-output-binary-data> dryverl:EncodeOutputCCode </dryverl:encode-output-binary-data> [1] ?
<dryverl:encode-output-binary-size> dryverl:EncodeOutputCCode </dryverl:encode-output-binary-size> [1] ?
</dryverl:encode-output-binary>
<dryverl:encode-output-pid> dryverl:EncodeOutputCCode </dryverl:encode-output-pid> [1] ?
<dryverl:encode-output-fun> dryverl:EncodeOutputCCode </dryverl:encode-output-fun> [1] ?
<dryverl:encode-output-port> dryverl:EncodeOutputCCode </dryverl:encode-output-port> [1] ?
<dryverl:encode-output-ref> dryverl:EncodeOutputCCode </dryverl:encode-output-ref> [1] ?
<dryverl:encode-output-trace> dryverl:EncodeOutputCCode </dryverl:encode-output-trace> [1] ?
<dryverl:encode-output-tuple> [1] ?
<dryverl:encode-output-tuple-size> dryverl:EncodeOutputCCode </dryverl:encode-output-tuple-size> [1] ?
<dryverl:encode-output-tuple-contents> dryverl:EncodeOutputCCode </dryverl:encode-output-tuple-contents> [1] ?
</dryverl:encode-output-tuple>
<dryverl:encode-output-list> [1] ?
<dryverl:encode-output-list-size> dryverl:EncodeOutputCCode </dryverl:encode-output-list-size> [1] ?
<dryverl:encode-output-list-contents> dryverl:EncodeOutputCCode </dryverl:encode-output-list-contents> [1] ?
</dryverl:encode-output-list>
<dryverl:encode-output-empty-list/> [1] ?
End Choice
</...>
Schema Component Representation
<xsd:complexType name="EncodeOutputCCode" mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<-- Elements for manipulating value maps -->
<xsd:group ref=" dryverl:commonCCode "/>
<xsd:element name="value-map-find-entry">
<xsd:complexType>
<xsd:sequence>
<xsd:choice>
<xsd:sequence>
<xsd:choice>
<xsd:element name="value-map-find-entry-id">
<xsd:complexType/>
</xsd:element>
<xsd:element name="value-map-remove-entry-id">
<xsd:complexType/>
</xsd:element>
<xsd:element name="value-map-destroy-entry-id">
<xsd:complexType/>
</xsd:element>
</xsd:choice>
<xsd:element name="value-map-entry-id-ref" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="value-map-entry-value-ref" type=" dryverl:EncodeOutputCCode " minOccurs="0"/>
</xsd:sequence>
<xsd:sequence>
<xsd:choice>
<xsd:element name="value-map-find-entry-value">
<xsd:complexType/>
</xsd:element>
<xsd:element name="value-map-remove-entry-value">
<xsd:complexType/>
</xsd:element>
<xsd:element name="value-map-destroy-entry-value">
<xsd:complexType/>
</xsd:element>
<xsd:element name="value-map-find-or-add-entry-value">
<xsd:complexType/>
</xsd:element>
</xsd:choice>
<xsd:element name="value-map-entry-id-ref" type=" dryverl:EncodeOutputCCode " minOccurs="0"/>
<xsd:element name="value-map-entry-value-ref" type=" dryverl:EncodeOutputCCode "/>
</xsd:sequence>
</xsd:choice>
<xsd:element name="value-map-if-entry-found" type=" dryverl:EncodeOutputCCode " minOccurs="0"/>
<xsd:element name="value-map-if-entry-not-found" type=" dryverl:EncodeOutputCCode " minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" type=" dryverl:Identifier " use="required"/>
</xsd:complexType>
</xsd:element>
<-- Elements for notifying unrecoverable failures. -->
<xsd:element name="failure-atom" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="failure-posix" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="failure" type=" dryverl:EncodeOutputCCode "/>
<-- Element for encoding the list of Erlang bins returned by ref. -->
<xsd:element name="encode-output-byref-binary">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="encode-output-byref-binary-ref" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-byref-binary-size" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-byref-binary-offset" type=" dryverl:EncodeOutputCCode "/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<-- Elements for encoding the Erlang term returned by copy. -->
<xsd:element name="encode-output-long" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-ulong" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-double" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-boolean" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-char" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-string" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-string-len">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="encode-output-string-len-string" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-string-len-size" type=" dryverl:EncodeOutputCCode "/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="encode-output-atom" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-atom-len">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="encode-output-atom-len-string" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-atom-len-size" type=" dryverl:EncodeOutputCCode "/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="encode-output-binary">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="encode-output-binary-data" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-binary-size" type=" dryverl:EncodeOutputCCode "/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="encode-output-pid" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-fun" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-port" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-ref" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-trace" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-tuple">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="encode-output-tuple-size" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-tuple-contents" type=" dryverl:EncodeOutputCCode "/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="encode-output-list">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="encode-output-list-size" type=" dryverl:EncodeOutputCCode "/>
<xsd:element name="encode-output-list-contents" type=" dryverl:EncodeOutputCCode "/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="encode-output-empty-list">
<xsd:complexType/>
</xsd:element>
</xsd:choice>
</xsd:complexType>

Complex Type: ExecuteBody

Super-types: None
Sub-types: None
Name ExecuteBody
Abstract no
Documentation The main C code of a binding. Typically, this code calls a C function with C call variables as arguments, and assigns the returned values to C call variables.
XML Instance Representation
<...>
<dryverl:def-c-local-variable> dryverl:DefCVariable </dryverl:def-c-local-variable> [0..*] ?
<dryverl:process-c-call-variables> dryverl:BodyCCode </dryverl:process-c-call-variables> [1] ?
</...>
Schema Component Representation
<xsd:complexType name="ExecuteBody">
<xsd:sequence>
<xsd:group ref=" dryverl:defCLocalVariables "/>
<xsd:element name="process-c-call-variables" type=" dryverl:BodyCCode "/>
</xsd:sequence>
</xsd:complexType>

Complex Type: GenDriver

Super-types: None
Sub-types: None
Name GenDriver
Abstract no
Documentation Generates the implementation of a C port driver that implements the bindings.
XML Instance Representation
<...
name=" dryverl:Identifier [1] ?"
erlang-gen-server-module-name=" dryverl:Identifier [1] ?"
erlang-front-end-module-name=" dryverl:Identifier [1] ?"
c-file-name=" dryverl:Identifier [1] ?"
c-prefix=" dryverl:Identifier [1] ?"
c-constant-prefix=" dryverl:Identifier [1] ?"
disable-runtime-checks=" xsd:boolean [0..1] ?">
<dryverl:def-h-file-header> xsd:string </dryverl:def-h-file-header> [0..1] ?
<dryverl:def-c-driver-init> xsd:string </dryverl:def-c-driver-init> [0..1] ?
<dryverl:def-erlang-gen-server-header> xsd:string </dryverl:def-erlang-gen-server-header> [0..1] ?
</...>
Schema Component Representation
<xsd:complexType name="GenDriver">
<xsd:sequence>
<xsd:element name="def-h-file-header" type=" xsd:string " minOccurs="0"/>
<xsd:element name="def-c-driver-init" type=" xsd:string " minOccurs="0"/>
<xsd:element name="def-erlang-gen-server-header" type=" xsd:string " minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" type=" dryverl:Identifier " use="required"/>
<xsd:attribute name="erlang-gen-server-module-name" type=" dryverl:Identifier " use="required"/>
<xsd:attribute name="erlang-front-end-module-name" type=" dryverl:Identifier " use="required"/>
<xsd:attribute name="c-file-name" type=" dryverl:Identifier " use="required"/>
<xsd:attribute name="c-prefix" type=" dryverl:Identifier " use="required"/>
<xsd:attribute name="c-constant-prefix" type=" dryverl:Identifier " use="required"/>
<xsd:attribute name="disable-runtime-checks" type=" xsd:boolean " use="optional" default="0"/>
</xsd:complexType>

Complex Type: ValueMapLockUnlock

Super-types: None
Sub-types: None
Name ValueMapLockUnlock
Abstract no
Documentation The equivalent to a C statement that either prevents or allows access to a value map by other system threads.
XML Instance Representation
<...
name=" dryverl:Identifier [1] ?"/>
Schema Component Representation
<xsd:complexType name="ValueMapLockUnlock">
<xsd:attribute name="name" type=" dryverl:Identifier " use="required"/>
</xsd:complexType>

Model Group: commonCCode

Name commonCCode
Documentation Common elements that can be used in C code in either the input decoding, the body execution, or the output encoding parts of a binding.
XML Instance Representation
Start Choice [1]
<dryverl:c-local-variable> dryverl:CVariableAccess </dryverl:c-local-variable> [1] ?
<dryverl:c-call-variable> dryverl:CVariableAccess </dryverl:c-call-variable> [1] ?
<dryverl:value-map-lock> dryverl:ValueMapLockUnlock </dryverl:value-map-lock> [1] ?
<dryverl:value-map-unlock> dryverl:ValueMapLockUnlock </dryverl:value-map-unlock> [1] ?
End Choice
Schema Component Representation
<xsd:group name="commonCCode">
<xsd:choice>
<xsd:element name="c-local-variable" type=" dryverl:CVariableAccess "/>
<xsd:element name="c-call-variable" type=" dryverl:CVariableAccess "/>
<xsd:element name="value-map-lock" type=" dryverl:ValueMapLockUnlock "/>
<xsd:element name="value-map-unlock" type=" dryverl:ValueMapLockUnlock "/>
</xsd:choice>
</xsd:group>

Model Group: defCLocalVariables

Name defCLocalVariables
Documentation Common elements that can be used in C code in either the input decoding, the body execution, or the output encoding parts of a binding, to declare local variables.
XML Instance Representation
<dryverl:def-c-local-variable> dryverl:DefCVariable </dryverl:def-c-local-variable> [0..*] ?
Schema Component Representation
<xsd:group name="defCLocalVariables">
<xsd:sequence>
<xsd:element name="def-c-local-variable" type=" dryverl:DefCVariable " minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:group>

Simple Type: ErlangDoc

Super-types: xsd:normalizedString < ErlangDoc (by restriction)
Sub-types: None
Name ErlangDoc
Content
  • Base XSD Type: normalizedString
  • pattern = [^%].*
Documentation A documentation line in the edoc syntax. %% is prepended automatically to the line in the generated code.
Schema Component Representation
<xsd:simpleType name="ErlangDoc">
<xsd:restriction base=" xsd:normalizedString ">
<xsd:pattern value="[^%].*"/>
</xsd:restriction>
</xsd:simpleType>

Simple Type: Identifier

Super-types: xsd:token < Identifier (by restriction)
Sub-types: None
Name Identifier
Content
  • Base XSD Type: token
  • pattern = [a-zA-Z][a-zA-Z0-9_]*
Documentation An identifier, i.e. a string which first character is a letter, and the next characters are letters, digits and underscores (_).
Schema Component Representation
<xsd:simpleType name="Identifier">
<xsd:restriction base=" xsd:token ">
<xsd:pattern value="[a-zA-Z][a-zA-Z0-9_]*"/>
</xsd:restriction>
</xsd:simpleType>

Legend

Complex Type:

Schema Component Type

AusAddress

Schema Component Name
Super-types: Address < AusAddress (by extension)
Sub-types:
  • QLDAddress (by restriction)
If this schema component is a type definition, its type hierarchy is shown in a gray-bordered box.
Name AusAddress
Abstract no
The table above displays the properties of this schema component.
XML Instance Representation
<... country="Australia" >
<unitNo> string </unitNo> [0..1]
<houseNo> string </houseNo> [1]
<street> string </street> [1]
Start Choice [1]
<city> string </city> [1]
<town> string </town> [1]
End Choice
<state> AusStates </state> [1]
<postcode> string <<pattern = [1-9][0-9]{3}>> </postcode> [1] ?
</...>

The XML Instance Representation table above shows the schema component's content as an XML instance.

Schema Component Representation
<complexType name="AusAddress">
<complexContent>
<extension base=" Address ">
<sequence>
<element name="state" type=" AusStates "/>
<element name="postcode">
<simpleType>
<restriction base=" string ">
<pattern value="[1-9][0-9]{3}"/>
</restriction>
</simpleType>
</element>
</sequence>
<attribute name="country" type=" string " fixed="Australia"/>
</extension>
</complexContent>
</complexType>
The Schema Component Representation table above displays the underlying XML representation of the schema component. (Annotations are not shown.)

Glossary

Abstract
(Applies to complex type definitions and element declarations). An abstract element or complex type cannot used to validate an element instance. If there is a reference to an abstract element, only element declarations that can substitute the abstract element can be used to validate the instance. For references to abstract type definitions, only derived types can be used.
All Model Group
Child elements can be provided in any order in instances. See: http://www.w3.org/TR/xmlschema-1/#element-all.
Choice Model Group
Only one from the list of child elements and model groups can be provided in instances. See: http://www.w3.org/TR/xmlschema-1/#element-choice.
Collapse Whitespace Policy
Replace tab, line feed, and carriage return characters with space character (Unicode character 32). Then, collapse contiguous sequences of space characters into single space character, and remove leading and trailing space characters.
Disallowed Substitutions
(Applies to element declarations). If substitution is specified, then substitution group members cannot be used in place of the given element declaration to validate element instances. If derivation methods, e.g. extension, restriction, are specified, then the given element declaration will not validate element instances that have types derived from the element declaration's type using the specified derivation methods. Normally, element instances can override their declaration's type by specifying an xsi:type attribute.
Key Constraint
Like Uniqueness Constraint, but additionally requires that the specified value(s) must be provided. See: http://www.w3.org/TR/xmlschema-1/#cIdentity-constraint_Definitions.
Key Reference Constraint
Ensures that the specified value(s) must match value(s) from a Key Constraint or Uniqueness Constraint. See: http://www.w3.org/TR/xmlschema-1/#cIdentity-constraint_Definitions.
Model Group
Groups together element content, specifying the order in which the element content can occur and the number of times the group of element content may be repeated. See: http://www.w3.org/TR/xmlschema-1/#Model_Groups.
Nillable
(Applies to element declarations). If an element declaration is nillable, instances can use the xsi:nil attribute. The xsi:nil attribute is the boolean attribute, nil, from the http://www.w3.org/2001/XMLSchema-instance namespace. If an element instance has an xsi:nil attribute set to true, it can be left empty, even though its element declaration may have required content.
Notation
A notation is used to identify the format of a piece of data. Values of elements and attributes that are of type, NOTATION, must come from the names of declared notations. See: http://www.w3.org/TR/xmlschema-1/#cNotation_Declarations.
Preserve Whitespace Policy
Preserve whitespaces exactly as they appear in instances.
Prohibited Derivations
(Applies to type definitions). Derivation methods that cannot be used to create sub-types from a given type definition.
Prohibited Substitutions
(Applies to complex type definitions). Prevents sub-types that have been derived using the specified derivation methods from validating element instances in place of the given type definition.
Replace Whitespace Policy
Replace tab, line feed, and carriage return characters with space character (Unicode character 32).
Sequence Model Group
Child elements and model groups must be provided in the specified order in instances. See: http://www.w3.org/TR/xmlschema-1/#element-sequence.
Substitution Group
Elements that are members of a substitution group can be used wherever the head element of the substitution group is referenced.
Substitution Group Exclusions
(Applies to element declarations). Prohibits element declarations from nominating themselves as being able to substitute a given element declaration, if they have types that are derived from the original element's type using the specified derivation methods.
Target Namespace
The target namespace identifies the namespace that components in this schema belongs to. If no target namespace is provided, then the schema components do not belong to any namespace.
Uniqueness Constraint
Ensures uniqueness of an element/attribute value, or a combination of values, within a specified scope. See: http://www.w3.org/TR/xmlschema-1/#cIdentity-constraint_Definitions.
Copyright 1999-2005, ObjectWeb Consortium | contact | webmaster | Last modified at 2008-01-26T10:18+09:00 | Generated by xs3p