module ietf-complex-types {

   namespace "urn:ietf:params:xml:ns:yang:ietf-complex-types";
   prefix "ct";

   organization
     "NETMOD WG";

   contact
     "Editor:  Bernd Linowski
               <bernd.linowski.ext@nsn.com>
      Editor:  Mehmet Ersue
               <mehmet.ersue@nsn.com>
      Editor:  Siarhei Kuryla
               <s.kuryla@gmail.com>";

   description
      "YANG extensions for complex types and typed instance
      identifiers.

      Copyright (c) 2011 IETF Trust and the persons identified as
      authors of the code.  All rights reserved.

      Redistribution and use in source and binary forms, with or
      without modification, is permitted pursuant to, and subject
      to the license terms contained in, the Simplified BSD License
      set forth in Section 4.c of the IETF Trust's Legal Provisions
      Relating to IETF Documents
      (http://trustee.ietf.org/license-info).

      This version of this YANG module is part of RFC 6095; see
      the RFC itself for full legal notices.";

       revision 2011-03-15 {
           description "Initial revision.";
       }

        extension complex-type {
            description "Defines a complex-type.";
            reference "Section 2.2, complex-type Extension Statement";
            argument type-identifier {
                yin-element true;
            }
        }

        extension extends {
            description "Defines the base type of a complex-type.";
            reference "Section 2.5, extends Extension Statement";
            argument base-type-identifier {
                yin-element true;
            }
        }
        extension abstract {
            description "Makes the complex-type abstract.";
            reference "Section 2.6, abstract Extension Statement";
            argument status;
        }

        extension instance {
            description "Declares an instance of the given
                 complex type.";
            reference "Section 2.3, instance Extension Statement";
            argument ct-instance-identifier {
                yin-element true;
            }
        }

        extension instance-list {
            description "Declares a list of instances of the given
                 complex type";
            reference "Section 2.4, instance-list Extension Statement";
            argument ct-instance-identifier {
                yin-element true;
            }
        }

        extension instance-type {
            description "Tells to which type instance the instance
                         identifier refers.";
            reference "Section 3.2, instance-type Extension Statement";
            argument target-type-identifier {
                yin-element true;
            }
        }

        feature complex-types {
            description "Indicates that the server supports
                         complex types and instance identifiers.";
        }

   }
