1 /**
2 * MOAB, a Mesh-Oriented datABase, is a software component for creating,
3 * storing and accessing finite element mesh data.
4 *
5 * Copyright 2004 Sandia Corporation. Under the terms of Contract
6 * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government
7 * retains certain rights in this software.
8 *
9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public
11 * License as published by the Free Software Foundation; either
12 * version 2.1 of the License, or (at your option) any later version.
13 *
14 */
15
16 #ifndef MOAB_WRITER_IFACE_HPP
17 #define MOAB_WRITER_IFACE_HPP
18
19 #include <vector>
20 #include <string>
21 #include "moab/Types.hpp"
22
23 namespace moab
24 {
25
26 class FileOptions;
27
28 /**
29 *\brief Interface for mesh writer implementations.
30 *\version 1.00
31 *\date 2004-4-23
32 *\author Jason Kraftcheck
33 */
34 class WriterIface
35 {
36 public:
37 virtual ~WriterIface() {}
38
39 /**
40 *\brief Export mesh to a file.
41 *
42 * Method all writers must provide to export a mesh.
43 *
44 *\param file_name The name of the file to create.
45 *\param overwrite If false, reader should fail if the file already
46 * exists.
47 *\param meshset_list A list of meshsets to export, or NULL if the
48 * whole mesh is to be exported.
49 *\param num_sets The length of <code>meshset_list</code> or zero
50 * if the whole mesh is to be exported.
51 *\param qa_records File history metadata
52 *\param tag_list Array of handles for tags to write. If null,
53 * write all tags. If non-NULL but num_tags is
54 * zero, write no tags.
55 *\param requseted_output_dimension The geometric dimension of the
56 * output mesh (coord values per vertex.) If
57 * zero, the dimension of the mesh as returned
58 * from Interface should be used.
59 *\author Jason Kraftcheck
60 */
61 virtual ErrorCode write_file( const char* file_name,
62 const bool overwrite,
63 const FileOptions& opts,
64 const EntityHandle* meshset_list,
65 const int num_sets,
66 const std::vector< std::string >& qa_records,
67 const Tag* tag_list = NULL,
68 int num_tags = 0,
69 int requested_output_dimension = 3 ) = 0;
70 };
71
72 } // namespace moab
73
74 #endif