Ersatz fuer <values.h> gesucht

From: Thomas Schwarzkopf <tschwarzkopf(at)t-online.de>
Date: Sat, 4 Oct 2003 18:24:06 +0200

Hallo,

ich moechte mir gerne mal die Programmiersprache Oz ansehen.
Ein entprechender Port (lang/mozart) existiert, ist allerdings als
"broken" markiert. Ich versuche nun trotzdem diesem Port zu
installieren und habe auch schon einen Fehler beseitigen koennen.
Nun komme ich bis zu folgender Stelle:

/usr/ports/lang/mozart/work/mozart-1.2.4.20020829/platform/emulator/mozart_cpi.hh:1531:
warning: `
   OZ_Filter<PROPAGATOR>::_actions_t::_action_params_t' is implicitly a
   typename
/usr/ports/lang/mozart/work/mozart-1.2.4.20020829/platform/emulator/mozart_cpi.hh:1531:
warning: implicit
   typename is deprecated, please see the documentation for details
std.cc:47:20: values.h: No such file or directory
std.cc: In function `void warn_inexact(double)':
std.cc:57: error: `DMAXPOWTWO' undeclared (first use this function)
std.cc:57: error: (Each undeclared identifier is reported only once for
each
   function it appears in.)
gmake[3]: *** [std.lo] Error 1
gmake[3]: Leaving directory
`/usr/ports/lang/mozart/work/mozart-1.2.4.20020829/platform/emulator/libfd'
gmake[2]: *** [libFDP.a] Error 2
gmake[2]: Leaving directory
`/usr/ports/lang/mozart/work/mozart-1.2.4.20020829/platform/emulator'
gmake[1]: *** [bootstrap] Error 1
gmake[1]: Leaving directory
`/usr/ports/lang/mozart/work/mozart-1.2.4.20020829/platform'
gmake: *** [bootstrap] Error 1
*** Error code 2

Stop in /usr/ports/lang/mozart.

Das entsprechende Codestueck in std.cc sieht so aus:

#include "conf.h"
#include "std.hh"
#include <stdlib.h>
#include <math.h>

#if __GLIBC__ == 2 || defined(WINDOWS) || defined(NETBSD) ||
defined(RHAPSODY) || defined(OPENBSD)

/* the following have been copied from linux's values.h */
#define _DEXPLEN 11
#define _HIDDENBIT 1
#define DSIGNIF (DOUBLEBITS - _DEXPLEN + _HIDDENBIT - 1)
#define BITSPERBYTE 8
#define BITS(type) (BITSPERBYTE * (int)sizeof(type))
#define LONGBITS BITS(long)
#define DOUBLEBITS BITS(double)
#define DMAXPOWTWO ((double)(1L << LONGBITS -2)*(1L << DSIGNIF -
LONGBITS +1))

#else

#include <values.h>

#endif

//-----------------------------------------------------------------------------

inline
void warn_inexact(double v)
{
  if (DMAXPOWTWO < v) {
    printf("System warning (finite domain module): \n");
    printf("\tThe produced result might be incorrect due to\n");
    printf("\tlimited precision of internal computation.");
  }
}

Die gesuchte Headerdatei values.h existiert unter FreeBSD-5.1-current
nicht (mehr). Nach etwas googeln habe ich herausgefunden, dass diese
durch limits.h bzw. float.h ersetzt worden ist. Es bleibt jedoch das
Problem, dass keine von diesen Dateien eine Konstante DMAXPOWTWO
enthaelt. In einem Dokument fuer AIX habe ich gefunden, dass DMAXPOWTWO
die "Largest power of two that can be exactly represented as a
double-precision floating-point number" definiert.

Gibt es in FreeBSD irgendeine Entsprechung hierfuer, die ich verwenden
koennte?

Da ich alles andere als ein C-Hacker bin, kann das was ich bisher
geschrieben habe auch einfach nur Bloedsinn sein. In diesem Fall
bitte ignorieren ;-)

Danke

Thomas

To Unsubscribe: send mail to majordomo.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sat 04 Oct 2003 - 18:32:33 CEST

search this site