Mesh Oriented datABase  (version 5.4.1)
Array-based unstructured mesh datastructure
WriterIface.hpp
Go to the documentation of this file.
00001 /**
00002  * MOAB, a Mesh-Oriented datABase, is a software component for creating,
00003  * storing and accessing finite element mesh data.
00004  *
00005  * Copyright 2004 Sandia Corporation.  Under the terms of Contract
00006  * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government
00007  * retains certain rights in this software.
00008  *
00009  * This library is free software; you can redistribute it and/or
00010  * modify it under the terms of the GNU Lesser General Public
00011  * License as published by the Free Software Foundation; either
00012  * version 2.1 of the License, or (at your option) any later version.
00013  *
00014  */
00015 
00016 #ifndef MOAB_WRITER_IFACE_HPP
00017 #define MOAB_WRITER_IFACE_HPP
00018 
00019 #include <vector>
00020 #include <string>
00021 #include "moab/Types.hpp"
00022 
00023 namespace moab
00024 {
00025 
00026 class FileOptions;
00027 
00028 /**
00029  *\brief Interface for mesh writer implementations.
00030  *\version 1.00
00031  *\date 2004-4-23
00032  *\author Jason Kraftcheck
00033  */
00034 class WriterIface
00035 {
00036   public:
00037     virtual ~WriterIface() {}
00038 
00039     /**
00040      *\brief Export mesh to a file.
00041      *
00042      * Method all writers must provide to export a mesh.
00043      *
00044      *\param file_name      The name of the file to create.
00045      *\param overwrite      If false, reader should fail if the file already
00046      *                      exists.
00047      *\param meshset_list   A list of meshsets to export, or NULL if the
00048      *                      whole mesh is to be exported.
00049      *\param num_sets       The length of <code>meshset_list</code> or zero
00050      *                      if the whole mesh is to be exported.
00051      *\param qa_records     File history metadata
00052      *\param tag_list       Array of handles for tags to write.  If null,
00053      *                      write all tags.  If non-NULL but num_tags is
00054      *                      zero, write no tags.
00055      *\param requseted_output_dimension  The geometric dimension of the
00056      *                      output mesh (coord values per vertex.)  If
00057      *                      zero, the dimension of the mesh as returned
00058      *                      from Interface should be used.
00059      *\author Jason Kraftcheck
00060      */
00061     virtual ErrorCode write_file( const char* file_name,
00062                                   const bool overwrite,
00063                                   const FileOptions& opts,
00064                                   const EntityHandle* meshset_list,
00065                                   const int num_sets,
00066                                   const std::vector< std::string >& qa_records,
00067                                   const Tag* tag_list            = NULL,
00068                                   int num_tags                   = 0,
00069                                   int requested_output_dimension = 3 ) = 0;
00070 };
00071 
00072 }  // namespace moab
00073 
00074 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines