<?xml version="1.0"?>
<typesystem package="@TYPESYSTEM_NAME@">

  @EXTRA_TYPESYSTEMS@

  <!-- Ignore shiboken's inability to grok C++ -->
  <suppress-warning text="Duplicate type entry: 'smtk'"/>
  <suppress-warning text="skipping function 'smtk::bridge::remote::RemusConnection::create', unmatched return type 'smtk::shared_ptr&lt;smtk::bridge::remote::RemusConnection::SelfType&gt;'"/>
  <suppress-warning text="skipping function 'smtk::bridge::remote::Session::create', unmatched return type 'smtk::shared_ptr&lt;smtk::bridge::remote::Session::SelfType&gt;'"/>

  <!-- Ignore methods that refer directly to pointers -->

  <!-- ignore shared_from_this base class-->
  <suppress-warning text="template baseclass 'smtk::enable_shared_from_this&lt;__VA_ARGS__&gt;' of 'RemusConnection' is not known"/>
  <suppress-warning text="class 'Session' inherits from unknown base class 'smtk::model::DefaultSession'"/>
  <suppress-warning text="class not found for setup inheritance 'smtk::model::DefaultSession'"/>
  <suppress-warning text="skipping function 'smtk::bridge::remote::Session::shared_from_this', unmatched return type 'smtk::shared_ptr&lt;const smtk::bridge::remote::Session::SelfType&gt;'"/>
  <suppress-warning text="skipping function 'smtk::bridge::remote::Session::shared_from_this', unmatched return type 'smtk::shared_ptr&lt;smtk::bridge::remote::Session::SelfType&gt;'"/>

  <!-- Additional objects to be wrapped when building with Remus -->
  <namespace-type name="smtk" generate="no">
    <namespace-type name="bridge" generate="no">
      <namespace-type name="remote" generate="yes">
        <object-type name="RemusConnection">
          <include file-name="smtk/bridge/remote/RemusConnection.h" location="local"/>
          <add-function signature="create()"
            static="yes"
            return-type="smtk::shared_ptr&lt;smtk::bridge::remote::RemusConnection&gt;">
            <inject-code>
              %RETURN_TYPE %0 = smtk::bridge::remote::RemusConnection::create();
              %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
            </inject-code>
          </add-function>
        </object-type>
        <object-type name="Session">
          <include file-name="smtk/bridge/remote/Session.h" location="local"/>
        </object-type>
      </namespace-type>
    </namespace-type>
  </namespace-type>

  <value-type template="smtk::shared_ptr" args="smtk::bridge::remote::Session"></value-type>
  <value-type template="smtk::shared_ptr" args="smtk::bridge::remote::RemusConnection"></value-type>

  <!-- Don't wrap methods that take pointers to Remus classes.
       Shiboken improperly scopes classnames in argument
       lists.
  <rejection class="smtkremote::remote::Session" function-name="addGroupToManager"/>
    -->

  @EXTRA_OBJECTS@

</typesystem>
