mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-10-27 04:07:25 +01:00
Merged 1.075 frontend.
This commit is contained in:
+2
-116
@@ -1,5 +1,5 @@
|
||||
|
||||
// Copyright (c) 1999-2011 by Digital Mars
|
||||
// Copyright (c) 1999-2012 by Digital Mars
|
||||
// All Rights Reserved
|
||||
// written by Walter Bright
|
||||
// http://www.digitalmars.com
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#if (defined (__SVR4) && defined (__sun))
|
||||
#include <alloca.h>
|
||||
@@ -49,7 +50,6 @@
|
||||
|
||||
#include "port.h"
|
||||
#include "root.h"
|
||||
#include "dchar.h"
|
||||
#include "rmem.h"
|
||||
#include "mars.h"
|
||||
|
||||
@@ -143,22 +143,6 @@ void error(const char *format, ...)
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
#if M_UNICODE
|
||||
void error(const dchar *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, format);
|
||||
printf("Error: ");
|
||||
vwprintf(format, ap);
|
||||
va_end( ap );
|
||||
printf("\n");
|
||||
fflush(stdout);
|
||||
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
#endif
|
||||
|
||||
void error_mem()
|
||||
{
|
||||
error("out of memory");
|
||||
@@ -207,15 +191,6 @@ char *Object::toChars()
|
||||
return (char *)"Object";
|
||||
}
|
||||
|
||||
dchar *Object::toDchars()
|
||||
{
|
||||
#if M_UNICODE
|
||||
return L"Object";
|
||||
#else
|
||||
return toChars();
|
||||
#endif
|
||||
}
|
||||
|
||||
int Object::dyncast()
|
||||
{
|
||||
return 0;
|
||||
@@ -1620,30 +1595,6 @@ void OutBuffer::writestring(const char *string)
|
||||
write(string,strlen(string));
|
||||
}
|
||||
|
||||
void OutBuffer::writedstring(const char *string)
|
||||
{
|
||||
#if M_UNICODE
|
||||
for (; *string; string++)
|
||||
{
|
||||
writedchar(*string);
|
||||
}
|
||||
#else
|
||||
write(string,strlen(string));
|
||||
#endif
|
||||
}
|
||||
|
||||
void OutBuffer::writedstring(const wchar_t *string)
|
||||
{
|
||||
#if M_UNICODE
|
||||
write(string,wcslen(string) * sizeof(wchar_t));
|
||||
#else
|
||||
for (; *string; string++)
|
||||
{
|
||||
writedchar(*string);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void OutBuffer::prependstring(const char *string)
|
||||
{ unsigned len;
|
||||
|
||||
@@ -1657,18 +1608,10 @@ void OutBuffer::prependstring(const char *string)
|
||||
void OutBuffer::writenl()
|
||||
{
|
||||
#if _WIN32
|
||||
#if M_UNICODE
|
||||
write4(0x000A000D); // newline is CR,LF on Microsoft OS's
|
||||
#else
|
||||
writeword(0x0A0D); // newline is CR,LF on Microsoft OS's
|
||||
#endif
|
||||
#else
|
||||
#if M_UNICODE
|
||||
writeword('\n');
|
||||
#else
|
||||
writeByte('\n');
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
void OutBuffer::writeByte(unsigned b)
|
||||
@@ -1730,13 +1673,6 @@ void OutBuffer::writeUTF8(unsigned b)
|
||||
assert(0);
|
||||
}
|
||||
|
||||
void OutBuffer::writedchar(unsigned b)
|
||||
{
|
||||
reserve(Dchar_mbmax * sizeof(dchar));
|
||||
offset = (unsigned char *)Dchar::put((dchar *)(this->data + offset), (dchar)b) -
|
||||
this->data;
|
||||
}
|
||||
|
||||
void OutBuffer::prependbyte(unsigned b)
|
||||
{
|
||||
reserve(1);
|
||||
@@ -1884,46 +1820,6 @@ void OutBuffer::vprintf(const char *format, va_list args)
|
||||
write(p,count);
|
||||
}
|
||||
|
||||
#if M_UNICODE
|
||||
void OutBuffer::vprintf(const wchar_t *format, va_list args)
|
||||
{
|
||||
dchar buffer[128];
|
||||
dchar *p;
|
||||
unsigned psize;
|
||||
int count;
|
||||
|
||||
WORKAROUND_C99_SPECIFIERS_BUG(wstring, fmt, format);
|
||||
|
||||
p = buffer;
|
||||
psize = sizeof(buffer) / sizeof(buffer[0]);
|
||||
for (;;)
|
||||
{
|
||||
#if _WIN32
|
||||
count = _vsnwprintf(p,psize,format,args);
|
||||
if (count != -1)
|
||||
break;
|
||||
psize *= 2;
|
||||
#elif POSIX
|
||||
va_list va;
|
||||
va_copy(va, args);
|
||||
count = vsnwprintf(p,psize,format,va);
|
||||
va_end(va);
|
||||
|
||||
if (count == -1)
|
||||
psize *= 2;
|
||||
else if (count >= psize)
|
||||
psize = count + 1;
|
||||
else
|
||||
break;
|
||||
#else
|
||||
assert(0);
|
||||
#endif
|
||||
p = (dchar *) alloca(psize * 2); // buffer too small, try again with larger size
|
||||
}
|
||||
write(p,count * 2);
|
||||
}
|
||||
#endif
|
||||
|
||||
void OutBuffer::printf(const char *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
@@ -1932,16 +1828,6 @@ void OutBuffer::printf(const char *format, ...)
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
#if M_UNICODE
|
||||
void OutBuffer::printf(const wchar_t *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
vprintf(format,ap);
|
||||
va_end(ap);
|
||||
}
|
||||
#endif
|
||||
|
||||
void OutBuffer::bracket(char left, char right)
|
||||
{
|
||||
reserve(2);
|
||||
|
||||
Reference in New Issue
Block a user