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

  @EXTRA_TYPESYSTEMS@

  <!-- Ignore Shiboken notice that CGM lives inside SMTK namespace -->
  <suppress-warning text="Duplicate type entry: 'smtk'"/>

  <!-- Ignore methods that refer directly to CGM pointers -->
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addGroupToManager', unmatched parameter type 'RefGroup*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addEdgeToManager', unmatched parameter type 'RefEdge*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addVertexUseToManager', unmatched parameter type 'CoVertex*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addCGMEntityToManager', unmatched parameter type 'GroupingEntity*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addCGMEntityToManager', unmatched parameter type 'RefEntity*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addBodyToManager', unmatched parameter type 'Body*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addChainToManager', unmatched parameter type 'Chain*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addEdgeUseToManager', unmatched parameter type 'CoEdge*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addVertexToManager', unmatched parameter type 'RefVertex*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addFaceToManager', unmatched parameter type 'RefFace*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addLoopToManager', unmatched parameter type 'Loop*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addVolumeToManager', unmatched parameter type 'RefVolume*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addCGMEntityToManager', unmatched parameter type 'SenseEntity*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addFaceUseToManager', unmatched parameter type 'CoFace*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addVolumeUseToManager', unmatched parameter type 'CoVolume*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addShellToManager', unmatched parameter type 'Shell*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addNamesIfAny', unmatched parameter type 'RefEntity*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addRelations', unmatched parameter type 'DLIList&lt;RefEntity*&gt;&amp;'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addTessellation', unmatched parameter type 'RefEdge*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addTessellation', unmatched parameter type 'RefVertex*'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::addTessellation', unmatched parameter type 'RefFace*'"/>


  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::registerOperator', unmatched parameter type 'smtk::model::OperatorConstructor'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::findOperatorConstructor', unmatched return type 'smtk::model::OperatorConstructor'"/>
  <suppress-warning text="skipping field 'Session::s_operators' with unmatched type 'std::map&lt;std::string,smtk::model::StaticOperatorInfo&gt;'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::registerStaticOperator', unmatched parameter type 'smtk::model::OperatorConstructor'"/>

  <!-- Ignore CGM-specific enums -->
  <suppress-warning text="enum 'CubitEventType' does not have a type entry or is not an enum"/>
  <suppress-warning text="enum 'ObserverType' does not have a type entry or is not an enum"/>
  <suppress-warning text="enum 'CubitSense' does not have a type entry or is not an enum"/>
  <suppress-warning text="enum 'CubitStatus' does not have a type entry or is not an enum"/>
  <suppress-warning text="enum 'FirmnessType' does not have a type entry or is not an enum"/>
  <suppress-warning text="enum 'CubitEntityRelation' does not have a type entry or is not an enum"/>
  <suppress-warning text="enum 'CubitPointContainment' does not have a type entry or is not an enum"/>
  <suppress-warning text="enum 'CubitAssocDataType' does not have a type entry or is not an enum"/>
  <suppress-warning text="enum 'CubitFacetboolOp' does not have a type entry or is not an enum"/>
  <suppress-warning text="enum 'SizeIntervalType' does not have a type entry or is not an enum"/>

  <!-- Ignore miscellaneous crufty warnings -->
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::shared_from_this', unmatched return type 'smtk::shared_ptr&lt;const smtk::bridge::cgm::Session::SelfType&gt;'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::shared_from_this', unmatched return type 'smtk::shared_ptr&lt;smtk::bridge::cgm::Session::SelfType&gt;'"/>
  <suppress-warning text="skipping function 'smtk::bridge::cgm::Session::create', unmatched return type 'smtk::shared_ptr&lt;smtk::bridge::cgm::Session::SelfType&gt;'"/>


  <!-- Additional objects to be wrapped when building with CGM -->
  <namespace-type name="smtk" generate = "no">
    <namespace-type name="bridge" generate = "no">
      <namespace-type name="cgm" generate = "yes">
        <enum-type name="CubitAttributeTypeExtensions">
          <include file-name="smtk/bridge/cgm/CAUUID.h" location="local"/>
        </enum-type>

        <object-type name="Session">
          <include file-name="smtk/bridge/cgm/Session.h" location="local"/>
        </object-type>

        <object-type name="ImportSolid">
          <include file-name="smtk/bridge/cgm/ImportSolid.h" location="local"/>
        </object-type>

        <object-type name="Engines">
          <include file-name="smtk/bridge/cgm/Engines.h" location="local"/>
        </object-type>

        <object-type name="ExportSolid">
          <include file-name="smtk/bridge/cgm/ExportSolid.h" location="local"/>
        </object-type>
      </namespace-type>
    </namespace-type>
  </namespace-type>

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

  <!-- Don't wrap methods that take pointers to CGM classes.
       Shiboken improperly scopes classnames in argument
       lists (e.g., it assumes smtk::model::Shell when ::Shell is
       specified), making it not only undesirable but impossible
       to wrap CGM pointers.
    -->
  <rejection class="smtk::bridge::cgm::Session" function-name="addBodyToManager"/>
  <rejection class="smtk::bridge::cgm::Session" function-name="addVolumeUseToManager"/>
  <rejection class="smtk::bridge::cgm::Session" function-name="addFaceUseToManager"/>
  <rejection class="smtk::bridge::cgm::Session" function-name="addEdgeUseToManager"/>
  <rejection class="smtk::bridge::cgm::Session" function-name="addVertexUseToManager"/>
  <rejection class="smtk::bridge::cgm::Session" function-name="addShellToManager"/>
  <rejection class="smtk::bridge::cgm::Session" function-name="addLoopToManager"/>
  <rejection class="smtk::bridge::cgm::Session" function-name="addChainToManager"/>
  <rejection class="smtk::bridge::cgm::Session" function-name="addVolumeToManager"/>
  <rejection class="smtk::bridge::cgm::Session" function-name="addFaceToManager"/>
  <rejection class="smtk::bridge::cgm::Session" function-name="addEdgeToManager"/>
  <rejection class="smtk::bridge::cgm::Session" function-name="addVertexToManager"/>
  <rejection class="smtk::bridge::cgm::Session" function-name="addGroupToManager"/>

  @EXTRA_OBJECTS@

</typesystem>
