text: /*****************************************************************************
  *
  * Copyright (c) 2011 - 2013, CEA
  * All rights reserved.
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
  *
  *     * Redistributions of source code must retain the above copyright
  *       notice, this list of conditions and the following disclaimer.
  *     * Redistributions in binary form must reproduce the above copyright
  *       notice, this list of conditions and the following disclaimer in the
  *       documentation and/or other materials provided with the distribution.
  *     * Neither the name of CEA, nor the
  *       names of its contributors may be used to endorse or promote products
  *       derived from this software without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  *****************************************************************************/
  
  #ifndef LataWriter_H
  #define LataWriter_H
  #include <LataDB.h>
  class Domain;
  class LataField_base;
  
  // This class provides general services to write lata files
  //  from the "high level" objects Domain and Field (the LataDB class provides
  //  only low level services to write arrays)
  class LataWriter
  {
  public:
    enum FileSplittingOption { MULTIPLE_FILES, SINGLE_FILE };
    void init_file(const Nom & path, const Nom & basename,
                   const LataDBDataType & default_int_format, 
                   LataDBDataType::Type default_float_type);
  
    void write_time(double t);
    void write_geometry(const Domain & dom);
    void write_component(const LataField_base & field);
  
    void finish();
    enum ERRORS { InternalError };
  
  protected:
    // This is the database where we put all data...
    LataDB db_;
    // Basename for files and lata master file:
    Nom basename_;
    // FileSplittingOption split_;
  };
  #endif
  