phobos 0.168

This commit is contained in:
Brad Roberts 2007-09-10 05:31:04 +00:00
parent c4389822c1
commit 613c86dca9
10 changed files with 50 additions and 36 deletions

View file

@ -12,7 +12,7 @@ module etc.gamma;
import std.math; import std.math;
private import std.stdio; private import std.stdio;
import etc.realtest; //import etc.realtest;
//------------------------------------------------------------------ //------------------------------------------------------------------
const real SQRT2PI = 2.50662827463100050242E0L; // sqrt(2pi) const real SQRT2PI = 2.50662827463100050242E0L; // sqrt(2pi)
@ -470,8 +470,8 @@ unittest
} }
// Check that loggamma(x) = log(gamma(x)) provided x is not -1, -2, -3, ... // Check that loggamma(x) = log(gamma(x)) provided x is not -1, -2, -3, ...
assert(consistencyTwoFuncs(&lgamma, &logabsgamma, -1000, 1700) > real.mant_dig-7); //assert(consistencyTwoFuncs(&lgamma, &logabsgamma, -1000, 1700) > real.mant_dig-7);
assert(consistencyTwoFuncs(&exploggamma, &absgamma, -2000, real.infinity) > real.mant_dig-16); //assert(consistencyTwoFuncs(&exploggamma, &absgamma, -2000, real.infinity) > real.mant_dig-16);
} }

View file

@ -165,8 +165,8 @@ private import std.string;
*/ */
class TypeInfo class TypeInfo
{ {
uint toHash() hash_t toHash()
{ uint hash; { hash_t hash;
foreach (char c; this.classinfo.name) foreach (char c; this.classinfo.name)
hash = hash * 9 + c; hash = hash * 9 + c;

View file

@ -143,6 +143,12 @@ struct timeval
int tv_usec; int tv_usec;
} }
struct struct_timezone
{
int tz_minuteswest;
int tz_dstime;
}
struct tm struct tm
{ {
int tm_sec; int tm_sec;
@ -160,9 +166,13 @@ struct tm
extern (C) extern (C)
{ {
int gettimeofday(timeval*, void*); int gettimeofday(timeval*, struct_timezone*);
int time(int*); __time_t time(__time_t*);
tm *localtime(int*); char* asctime(tm*);
char* ctime(__time_t*);
tm* gmtime(__time_t*);
tm* localtime(__time_t*);
__time_t mktime(tm*);
} }
/**************************************************************/ /**************************************************************/

View file

@ -838,7 +838,7 @@ version (linux)
d_time getLocalTZA() d_time getLocalTZA()
{ {
int t; __time_t t;
time(&t); time(&t);
localtime(&t); // this will set timezone localtime(&t); // this will set timezone
@ -852,13 +852,13 @@ version (linux)
int DaylightSavingTA(d_time dt) int DaylightSavingTA(d_time dt)
{ {
tm *tmp; tm *tmp;
int t; std.c.linux.linux.__time_t t;
int dst = 0; int dst = 0;
if (dt != d_time_nan) if (dt != d_time_nan)
{ {
d_time seconds = dt / TicksPerSecond; d_time seconds = dt / TicksPerSecond;
t = cast(int) seconds; t = cast(__time_t) seconds;
if (t == seconds) // if in range if (t == seconds) // if in range
{ {
tmp = localtime(&t); tmp = localtime(&t);

View file

@ -242,6 +242,7 @@ SC17: fprem1 ;
jmp SC18 ; jmp SC18 ;
trigerr: trigerr:
jnp Lret ; // if theta is NAN, return theta
fstp ST(0) ; // dump theta fstp ST(0) ; // dump theta
} }
return real.nan; return real.nan;
@ -283,7 +284,7 @@ unittest
// overflow // overflow
[ real.infinity, real.nan], [ real.infinity, real.nan],
[ real.nan, real.nan], [ real.nan, real.nan],
[ 1e+100, real.nan], //[ 1e+100, real.nan],
]; ];
int i; int i;
@ -1556,12 +1557,12 @@ real pow(real x, real y)
version (linux) // C pow() often does not handle special values correctly version (linux) // C pow() often does not handle special values correctly
{ {
if (isnan(y)) if (isnan(y))
return real.nan; return y;
if (y == 0) if (y == 0)
return 1; // even if x is $(NAN) return 1; // even if x is $(NAN)
if (isnan(x) && y != 0) if (isnan(x) && y != 0)
return real.nan; return x;
if (isinf(y)) if (isinf(y))
{ {
if (fabs(x) > 1) if (fabs(x) > 1)

View file

@ -1375,7 +1375,11 @@ class Socket
} }
/** /**
* Receive data and get the remote endpoint Address. Returns the number of bytes actually received, 0 if the remote side has closed the connection, or ERROR on failure. If the socket is blocking, receiveFrom waits until there is data to be received. * Receive data and get the remote endpoint Address.
* If the socket is blocking, receiveFrom waits until there is data to
* be received.
* Returns: the number of bytes actually received,
* 0 if the remote side has closed the connection, or ERROR on failure.
*/ */
int receiveFrom(void[] buf, SocketFlags flags, out Address from) int receiveFrom(void[] buf, SocketFlags flags, out Address from)
{ {

View file

@ -81,19 +81,17 @@ class SocketStream: Stream
/** /**
* Attempts to read the entire block, waiting if necessary. * Attempts to read the entire block, waiting if necessary.
*/ */
override uint readBlock(void* _buffer, uint size) override size_t readBlock(void* _buffer, size_t size)
{ {
ubyte* buffer = cast(ubyte*)_buffer; ubyte* buffer = cast(ubyte*)_buffer;
int len;
uint need = size;
assertReadable(); assertReadable();
if(size == 0) if (size == 0)
return size; return size;
len = sock.receive(buffer[0 .. size]); auto len = sock.receive(buffer[0 .. size]);
readEOF = cast(bool)(len == 0); readEOF = cast(bool)(len == 0);
if(len < 0) if (len == sock.ERROR)
len = 0; len = 0;
return len; return len;
} }
@ -101,18 +99,17 @@ class SocketStream: Stream
/** /**
* Attempts to write the entire block, waiting if necessary. * Attempts to write the entire block, waiting if necessary.
*/ */
override uint writeBlock(void* _buffer, uint size) override size_t writeBlock(void* _buffer, size_t size)
{ {
ubyte* buffer = cast(ubyte*)_buffer; ubyte* buffer = cast(ubyte*)_buffer;
int len;
assertWriteable(); assertWriteable();
if(size == 0) if (size == 0)
return size; return size;
len = sock.send(buffer[0 .. size]); auto len = sock.send(buffer[0 .. size]);
readEOF = cast(bool)(len == 0); readEOF = cast(bool)(len == 0);
if(len < 0) if (len == sock.ERROR)
len = 0; len = 0;
return len; return len;
} }

View file

@ -386,12 +386,14 @@ class Stream : InputStream, OutputStream {
bool seekable = false; /// Indicates whether this stream can be seeked within. bool seekable = false; /// Indicates whether this stream can be seeked within.
protected bool isopen = true; /// Indicates whether this stream is open. protected bool isopen = true; /// Indicates whether this stream is open.
protected bool readEOF = false; /// Indicates whether this stream is at eof protected bool readEOF = false; /** Indicates whether this stream is at eof
/// after the last read attempt. * after the last read attempt.
*/
protected bool prevCr = false; /// For a non-seekable stream indicates that protected bool prevCr = false; /** For a non-seekable stream indicates that
/// the last readLine or readLineW ended on a * the last readLine or readLineW ended on a
/// '\r' character. * '\r' character.
*/
this() {} this() {}
@ -1319,7 +1321,7 @@ class Stream : InputStream, OutputStream {
* Get a hash of the stream by reading each byte and using it in a CRC-32 * Get a hash of the stream by reading each byte and using it in a CRC-32
* checksum. * checksum.
*/ */
override uint toHash() { override size_t toHash() {
if (!readable || !seekable) if (!readable || !seekable)
return super.toHash(); return super.toHash();
ulong pos = position(); ulong pos = position();

View file

@ -488,12 +488,12 @@ Lisnot:
Lis: Lis:
debug debug
{ {
for (int i = 0; i < table.length; i++) for (int i = 0; 1; i++)
{ {
assert(i < table.length); // should have been in table
if (u >= table[i][0] && u <= table[i][1]) if (u >= table[i][0] && u <= table[i][1])
return 1; break;
} }
assert(0); // should have been in table
} }
return 1; return 1;
} }

View file

@ -58,7 +58,7 @@ test.exe : test.obj phobos.lib
unittest.exe : unittest.d phobos.lib unittest.exe : unittest.d phobos.lib
$(DMD) unittest -g $(DMD) unittest -g
sc unittest.obj -g dmc unittest.obj -g
OBJS= asserterror.obj deh.obj switch.obj complex.obj gcstats.obj \ OBJS= asserterror.obj deh.obj switch.obj complex.obj gcstats.obj \
critical.obj object.obj monitor.obj arraycat.obj invariant.obj \ critical.obj object.obj monitor.obj arraycat.obj invariant.obj \