WRAP_CLASS("itk::VTKPolyDataWriter")

  WRAP_INCLUDE_TYPE("itkDefaultStaticMeshTraits.h")
  WRAP_INCLUDE_TYPE("itkDefaultDynamicMeshTraits.h")
  WRAP_INCLUDE_TYPE("itkSimplexMesh.h")

  SET(MANAGED_TYPE_TEMPLATE ${MANAGED_ITK_SOURCE_COMMON_PATH}/itkManagedObject_TYPE.cxx.in)
  SET(MANAGED_WRAPPER_TEMPLATE ${MANAGED_ITK_SOURCE_COMMON_PATH}/itkManagedObject_WRAPPER.cxx.in)

  FOREACH(d "3")
    FOREACH(t ${WRAP_ITK_MESH_PIXELS})
      WRAP_TEMPLATE("${ITKM_M${t}${d}S}"  "${ITKT_M${t}${d}S}")
      WRAP_TEMPLATE("${ITKM_M${t}${d}D}"  "${ITKT_M${t}${d}D}")
      WRAP_TEMPLATE("${ITKM_SM${t}${d}S}"  "${ITKT_SM${t}${d}S}")
      WRAP_TEMPLATE("${ITKM_SM${t}${d}D}"  "${ITKT_SM${t}${d}D}")
    ENDFOREACH(t)
  ENDFOREACH(d)

  BEGIN_MANAGED_PROPERTY("FileName" GETSET)
    SET(MANAGED_PROPERTY_SUMMARY   "Get/set the name of the file to be read.")
    SET(MANAGED_PROPERTY_TYPE      "String^")
    SET(MANAGED_PROPERTY_GET_BODY  "return gcnew String( m_PointerToNative->GetFileName() );")
    SET(MANAGED_PROPERTY_SET_BODY  "std::string stdvalue; ManagedTypes::ToNativeString( value, stdvalue ); m_PointerToNative->SetFileName( stdvalue.c_str() );")
  END_MANAGED_PROPERTY()
  
  BEGIN_MANAGED_METHOD("SetInput")
    SET(MANAGED_METHOD_SUMMARY         "Set the mesh input of this object.")
    SET(MANAGED_METHOD_RETURN_TYPE     "void")
    SET(MANAGED_METHOD_PARAMS          "itk::itkMeshBase^ input")
    SET(MANAGED_METHOD_TYPE_BODY       "this->m_PointerToNative->SetInput( (NativeType::InputMeshType*)input->NativePointer.ToPointer() );")
    SET(MANAGED_METHOD_WRAPPER_BODY    "iInstance->SetInput( input );")
  END_MANAGED_METHOD()
  
  BEGIN_MANAGED_METHOD("Update")
    SET(MANAGED_METHOD_SUMMARY         "Write the input mesh to the output file.")
    SET(MANAGED_METHOD_RETURN_TYPE     "void")
    SET(MANAGED_METHOD_PARAMS          "void")
    SET(MANAGED_METHOD_TYPE_BODY       "this->m_PointerToNative->Update( );")
    SET(MANAGED_METHOD_WRAPPER_BODY    "iInstance->Update( );")
  END_MANAGED_METHOD()
  
  BEGIN_MANAGED_METHOD("Write")
    SET(MANAGED_METHOD_SUMMARY         "Write the input mesh to the output file.")
    SET(MANAGED_METHOD_RETURN_TYPE     "void")
    SET(MANAGED_METHOD_PARAMS          "void")
    SET(MANAGED_METHOD_TYPE_BODY       "this->m_PointerToNative->Write( );")
    SET(MANAGED_METHOD_WRAPPER_BODY    "iInstance->Write( );")
  END_MANAGED_METHOD()

END_WRAP_CLASS()
