//=============================================================================
//
//  Copyright (c) Kitware, Inc.
//  All rights reserved.
//  See LICENSE.txt for details.
//
//  This software is distributed WITHOUT ANY WARRANTY; without even
//  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
//  PURPOSE.  See the above copyright notice for more information.
//
//=============================================================================


#ifndef __smtk_mesh_moab_Readers_h
#define __smtk_mesh_moab_Readers_h

#include "smtk/PublicPointerDefs.h"

namespace smtk {
namespace mesh {
namespace moab
{

//construct an interface to a given file. will load all meshes inside the
//file. If the file given fails to load we will return a invalid Collection
smtk::mesh::CollectionPtr read(const std::string& path,
                               const smtk::mesh::ManagerPtr& manager);

//construct an interface to a given file. will load only meshes which are in
//the material set.
//file. If the file given fails to load we will return a invalid Collection
smtk::mesh::CollectionPtr read_domain(const std::string& path,
                                      const smtk::mesh::ManagerPtr& manager);

//construct an interface to a given file. will load only meshes which are in
//the neumann set.
//file. If the file given fails to load we will return a invalid Collection
smtk::mesh::CollectionPtr read_neumann(const std::string& path,
                                       const smtk::mesh::ManagerPtr& manager);

//construct an interface to a given file. will load only meshes which are in
//the dirichlet set.
//file. If the file given fails to load we will return a invalid Collection
smtk::mesh::CollectionPtr read_dirichlet(const std::string& path,
                                       const smtk::mesh::ManagerPtr& manager);

//Import everything in a file into an existing collection.
bool import(const std::string& path, const smtk::mesh::CollectionPtr& c);

//Import all the material sets in a file into an existing collection
bool import_domain(const std::string& path, const smtk::mesh::CollectionPtr& c);

//Import all the neumann sets in a file into an existing collection
bool import_neumann(const std::string& path, const smtk::mesh::CollectionPtr& c);

//Import all the dirichlet sets in a file into an existing collection
bool import_dirichlet(const std::string& path, const smtk::mesh::CollectionPtr& c);



}
}
}

#endif
