/*
  Copyright (C) 2000-2004

  Code contributed by Greg Collecutt, Joseph Hope and Paul Cochrane

  This file is part of xmds.
 
  This program is free software; you can redistribute it and/or
  modify it under the terms of the GNU General Public License
  as published by the Free Software Foundation; either version 2
  of the License, or (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/

/*
  $Id: xsilfield.h,v 1.11 2005/04/24 04:31:47 joehope Exp $
*/

/*! @file xsilfield.h
  @brief Header which defines classes for xsil
*/

//! Enumerator of output formats
enum outputFormatEnum {
  FORMAT_NONE,
  FORMAT_MATLAB,
  FORMAT_SCILAB};

// ******************************************************************************
// ******************************************************************************
//                              xsilField
// ******************************************************************************
// ******************************************************************************

//! xsilField class
class xsilField : public xmdsUtility {

public :

  //! Constructor for xsilField object
  xsilField();

  //! Destructor
  ~xsilField();

  //! Processes the element yourElement
  void processElement(
		      const Element *const yourElement);

  //! Writes the output to outfile as format
  void writeAsFormat(
		     FILE *const outfile,
		     const outputFormatEnum& format,
		     const long& iD,
		     const char *datFileNameBase);

private :

  //! Looks like it returns the dimension of the lattice at the given index but am not sure
  unsigned long lattice(
			const unsigned long& index) const;

  //! Looks like it returns the variable name at the given index
  const XMLString* variableName(
				const unsigned long& index) const;

  XMLString           fieldName;             //!< The name of the field
  unsigned long	      nIndependentVariables; //!< The number of independent variables in simulation
  list<XMLString>     variableNamesList;     //!< The list of variable names
  //! The list of lattices
  /*! 
    (which I think is a list of the dimensions of each lattice in the sim)
  */
  list<unsigned long> latticeList;           
  XMLString           streamFormat;    //!< Format of the data stream, either Text or Binary
  XMLString	      data;           //!< A data string
  XMLString	      binDatFname;    //!< The filename of the binary data file
  XMLString           binEncoding;    //!< The binary encoding (i.e. big or little endian)
  XMLString           binPrecision;    //!< The binary data precision (i.e. single or double)
  XMLString           ulongType;    //!< The explicit type for ulong (i.e. ulong, uint32 or uint64)
};



syntax highlighted by Code2HTML, v. 0.9.1