<?xml version="1.0" encoding="utf-8" ?>
<!--
 * Copyright (c) 2005-2018 The OPC Foundation, Inc. All rights reserved.
 *
 * OPC Foundation MIT License 1.00
 * 
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use,
 * copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following
 * conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 * OTHER DEALINGS IN THE SOFTWARE.
 *
 * The complete license agreement can be found here:
 * http://opcfoundation.org/License/MIT/1.00/
-->

<opc:TypeDictionary
  xmlns:opc="http://opcfoundation.org/BinarySchema/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:ua="http://opcfoundation.org/UA/"
  xmlns:tns="http://yourorganisation.org/test/"
  DefaultByteOrder="LittleEndian"
  TargetNamespace="http://yourorganisation.org/test/"
>
  <opc:Import Namespace="http://opcfoundation.org/UA/" Location="Opc.Ua.BinarySchema.bsd"/>

  <opc:StructuredType Name="Point" BaseType="ua:ExtensionObject">
    <opc:Field Name="x" TypeName="opc:Double" />
    <opc:Field Name="y" TypeName="opc:Double" />
  </opc:StructuredType>

  <opc:StructuredType Name="NestedPoint" BaseType="ua:ExtensionObject">
    <opc:Field Name="x" TypeName="opc:Double" />
    <opc:Field Name="y" TypeName="opc:Double" />
    <opc:Field Name="point1" TypeName="tns:Point" />
  </opc:StructuredType>

   <opc:StructuredType Name="PointWithArray" BaseType="ua:ExtensionObject">
    <opc:Field Name="x" TypeName="opc:Double" />
    <opc:Field Name="y" TypeName="opc:Double" />
    <opc:Field Name="z" TypeName="opc:Double" />
    <opc:Field Name="array1Size" TypeName="opc:UInt32" />
    <opc:Field Name="array1" TypeName="opc:Double" LengthField="array1Size" />
  </opc:StructuredType>

</opc:TypeDictionary>
