/* -*- mode:c++; coding: koi8-r -*- */

/* $Id: ExternalEnthropy.cpp,v 1.1 2003/04/14 20:53:07 cher Exp $ */
/* Copyright (C) 2003 Alexander Chernov <cher@unicorn.cmc.msu.ru> */

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

 This library 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
 Lesser General Public License for more details.

 See the `COPYING' file for the full terms and conditions.
*/

#include "ExternalEnthropy.hpp"

#include <sys/types.h>
//#include <sys/fcntl.h>
#include <stdlib.h>
#include <errno.h>

ExternalEnthropy::ExternalEnthropy(ByteSource *bsrc)
  throw (BadArgsError)
{
  if (!bsrc) throw BadArgsError();
  this->src = new BitSource(bsrc);
}

ExternalEnthropy::~ExternalEnthropy()
  throw ()
{
  delete this->src;
}

double
ExternalEnthropy::getDouble()
  throw (ReadError)
{
  union un_dll
  {
    unsigned long long ll;
    double d;
  } u;

  u.d = 1.0;
  src->read(52, (void*) &u.ll, 0);
  return u.d - 1.0;
}

/*
 * Local variables:
 *  compile-command: "make -C .."
 *  c++-font-lock-extra-types: ("[A-Z]\\sw*[a-z]\\sw*")
 * End:
 */
