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;
private import std.stdio;
import etc.realtest;
//import etc.realtest;
//------------------------------------------------------------------
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, ...
assert(consistencyTwoFuncs(&lgamma, &logabsgamma, -1000, 1700) > real.mant_dig-7);
assert(consistencyTwoFuncs(&exploggamma, &absgamma, -2000, real.infinity) > real.mant_dig-16);
//assert(consistencyTwoFuncs(&lgamma, &logabsgamma, -1000, 1700) > real.mant_dig-7);
//assert(consistencyTwoFuncs(&exploggamma, &absgamma, -2000, real.infinity) > real.mant_dig-16);
}

View file

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

View file

@ -143,6 +143,12 @@ struct timeval
int tv_usec;
}
struct struct_timezone
{
int tz_minuteswest;
int tz_dstime;
}
struct tm
{
int tm_sec;
@ -160,9 +166,13 @@ struct tm
extern (C)
{
int gettimeofday(timeval*, void*);
int time(int*);
tm *localtime(int*);
int gettimeofday(timeval*, struct_timezone*);
__time_t time(__time_t*);
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()
{
int t;
__time_t t;
time(&t);
localtime(&t); // this will set timezone
@ -852,13 +852,13 @@ version (linux)
int DaylightSavingTA(d_time dt)
{
tm *tmp;
int t;
std.c.linux.linux.__time_t t;
int dst = 0;
if (dt != d_time_nan)
{
d_time seconds = dt / TicksPerSecond;
t = cast(int) seconds;
t = cast(__time_t) seconds;
if (t == seconds) // if in range
{
tmp = localtime(&t);

View file

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

View file

@ -81,19 +81,17 @@ class SocketStream: Stream
/**
* 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;
int len;
uint need = size;
assertReadable();
if (size == 0)
return size;
len = sock.receive(buffer[0 .. size]);
auto len = sock.receive(buffer[0 .. size]);
readEOF = cast(bool)(len == 0);
if(len < 0)
if (len == sock.ERROR)
len = 0;
return len;
}
@ -101,18 +99,17 @@ class SocketStream: Stream
/**
* 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;
int len;
assertWriteable();
if (size == 0)
return size;
len = sock.send(buffer[0 .. size]);
auto len = sock.send(buffer[0 .. size]);
readEOF = cast(bool)(len == 0);
if(len < 0)
if (len == sock.ERROR)
len = 0;
return len;
}

View file

@ -386,12 +386,14 @@ class Stream : InputStream, OutputStream {
bool seekable = false; /// Indicates whether this stream can be seeked within.
protected bool isopen = true; /// Indicates whether this stream is open.
protected bool readEOF = false; /// Indicates whether this stream is at eof
/// after the last read attempt.
protected bool readEOF = false; /** Indicates whether this stream is at eof
* after the last read attempt.
*/
protected bool prevCr = false; /// For a non-seekable stream indicates that
/// the last readLine or readLineW ended on a
/// '\r' character.
protected bool prevCr = false; /** For a non-seekable stream indicates that
* the last readLine or readLineW ended on a
* '\r' character.
*/
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
* checksum.
*/
override uint toHash() {
override size_t toHash() {
if (!readable || !seekable)
return super.toHash();
ulong pos = position();

View file

@ -488,12 +488,12 @@ Lisnot:
Lis:
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])
return 1;
break;
}
assert(0); // should have been in table
}
return 1;
}

View file

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