/*
$Id: CollectArchitecture.hh 1562 2006-06-08 10:27:20Z suzuki $
*/


#ifndef COLLECTARCHITECTURE
#define COLLECTARCHITECTURE
#include "Header.hh"
//#include <sys/utsname.h>


//!Collect machine architecture
/*!This class collects machine architecture parameters
  by using C-language struct of "utsname".
  You can get system name, node name, the version of OS,
  release information and machine architecture from this class
  object.

  "PutEndian()" will return a string, "little" or "big".
  The framework can judge automatically which the class of SwapBytes
  should be used or not from the return value of the method.

 */

class CollectArchitecture
{
private:
  //struct utsname uts;
  //std::string SysName, NodeName, Release, Version, Machine;
protected:

public:
  CollectArchitecture();
 ~CollectArchitecture();

  /*
  std::string PutSysName() { return SysName;  }
  std::string PutNodeName(){ return NodeName; }
  std::string PutRelease() { return Release;  }
  std::string PutVersion() { return Version;  }
  std::string PutMachine() { return Machine;  }
  */
  /*!<returns machine architecture. */

  std::string PutEndian();
  /*!<return a string, "little" or "big".
    See the manual of this class.
    If you receive warning messages from this method,
    this method cannot detect your machine architecture
    and return a "big-endian flag" as a default flag.
  */

  //void DumpAllInfo();
  /*!<Dump all information collected by this class. */
};

#endif

