Compilation with egcs when compiling jade (2/3)
avi@baan.nl
avi@baan.nl
Thu Jan 7 07:49:00 GMT 1999
public:
Resource();
Resource( Resource &);
int unref();
void ref();
int count() ;
private:
int count_;
};
Resource::Resource()
: count_(0)
{
}
Resource::Resource( Resource &)
: count_(0)
{
}
int Resource::count()
{
return count_;
}
int Resource::unref()
{
return --count_ <= 0;
}
void Resource::ref()
{
++count_;
}
# 8 "../include/CharMap.h" 2
class CharMapBits {
public:
enum { level1 = 8, level2 = 4, level3 = 4 };
};
template<class T>
class CharMapColumn {
public:
CharMapColumn();
CharMapColumn( CharMapColumn<T> &);
void operator=( CharMapColumn<T> &);
~CharMapColumn();
T *values;
T value;
};
template<class T>
class CharMapPage {
public:
CharMapPage();
CharMapPage( CharMapPage<T> &);
void operator=( CharMapPage<T> &);
~CharMapPage();
void swap(CharMapPage<T> &);
CharMapColumn<T> *values;
T value;
};
template<class T>
class CharMap {
public:
CharMap();
CharMap(T);
T operator[](Char) ;
T getRange(Char from, Char &to) ;
void swap(CharMap<T> &);
void setChar(Char, T);
void setRange(Char from, Char to, T val);
void setAll(T);
private:
CharMapPage<T> pages_[1 << CharMapBits::level1];
};
template<class T>
class CharMapResource : public CharMap<T>, public Resource {
public:
CharMapResource() { }
CharMapResource(T t) : CharMap<T>(t) { }
};
template<class T>
T CharMap<T>::operator[](Char c)
{
CharMapPage<T> &pg = pages_[c >> (CharMapBits::level2 + CharMapBits::level3)];
if (pg.values) {
CharMapColumn<T> &column = pg.values[(c >> CharMapBits::level3) & ((1 << CharMapBits::level2) - 1)];
if (column.values)
return column.values[c & ((1 << CharMapBits::level3) - 1)];
else
return column.value;
}
else
return pg.value;
}
template<class T>
T CharMap<T>::getRange(Char c, Char &max)
{
CharMapPage<T> &pg = pages_[c >> (CharMapBits::level2 + CharMapBits::level3)];
if (pg.values) {
CharMapColumn<T> &column = pg.values[(c >> CharMapBits::level3) & ((1 << CharMapBits::level2) - 1)];
if (column.values) {
max = c;
return column.values[c & ((1 << CharMapBits::level3) - 1)];
}
else {
max = (c & ~((1 << CharMapBits::level3) - 1)) + ((1 << CharMapBits::level3) - 1);
return column.value;
}
}
else {
max = (c & ~((1 << (CharMapBits::level2 + CharMapBits::level3)) - 1)) + ((1 << (CharMapBits::level2 + CharMapBits::level2)) - 1);
return pg.value;
}
}
# 135 "../include/CharMap.h"
# 12 "../include/UnivCharsetDesc.h" 2
# 1 "../include/RangeMap.h" 1
# 1 "../include/Vector.h" 1
# 1 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/stddef.h" 1 3
# 342 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/stddef.h" 3
# 7 "../include/Vector.h" 2
# 1 "../include/xnew.h" 1
# 17 "../include/xnew.h"
# 1 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/new" 1 3
#pragma interface "new"
# 1 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/stddef.h" 1 3
# 342 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/stddef.h" 3
# 8 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/new" 2 3
# 1 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/exception" 1 3
#pragma interface "exception"
extern "C++" {
namespace std {
class exception {
public:
exception () { }
virtual ~exception () { }
virtual char* what () ;
};
class bad_exception : public exception {
public:
bad_exception () { }
virtual ~bad_exception () { }
};
typedef void (*terminate_handler) ();
typedef void (*unexpected_handler) ();
terminate_handler set_terminate (terminate_handler);
void terminate () __attribute__ ((__noreturn__));
unexpected_handler set_unexpected (unexpected_handler);
void unexpected () __attribute__ ((__noreturn__));
bool uncaught_exception ();
}
}
# 9 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/new" 2 3
extern "C++" {
namespace std {
class bad_alloc : public exception {
public:
virtual char* what() throw() { return "bad_alloc"; }
};
struct nothrow_t {};
extern nothrow_t nothrow;
typedef void (*new_handler)();
new_handler set_new_handler (new_handler);
}
void *operator new (size_t) throw (std::bad_alloc);
void *operator new[] (size_t) throw (std::bad_alloc);
void operator delete (void *) throw();
void operator delete[] (void *) throw();
void *operator new (size_t, std::nothrow_t&) throw();
void *operator new[] (size_t, std::nothrow_t&) throw();
void operator delete (void *, std::nothrow_t&) throw();
void operator delete[] (void *, std::nothrow_t&) throw();
void *operator new(size_t, void *place) throw() { return place; }
void *operator new[](size_t, void *place) throw() { return place; }
}
# 20 "../include/xnew.h" 2
# 35 "../include/xnew.h"
# 8 "../include/Vector.h" 2
template<class T>
class Vector {
public:
typedef size_t size_type;
typedef T *iterator;
typedef T *const_iterator;
Vector() : ptr_(0), size_(0), alloc_(0) { }
Vector(size_t n) : ptr_(0), size_(0), alloc_(0) { append(n); }
~Vector();
void resize(size_t n) {
if (n < size_)
erase(ptr_ + n, ptr_ + size_);
else if (n > size_)
append(n - size_);
}
Vector(size_t, T &);
Vector( Vector<T> &);
Vector<T> &operator=( Vector<T> &);
void assign(size_t, T &);
void push_back( T &t) {
reserve(size_ + 1);
(void)new (ptr_ + size_) T(t);
size_++;
}
void insert(const_iterator p, size_t n, T &t);
void insert(const_iterator p, const_iterator q1, const_iterator q2);
void swap(Vector<T> &);
void clear() { erase(ptr_, ptr_ + size_); }
size_t size() { return size_; }
T &operator[](size_t i) { return ptr_[i]; }
T &operator[](size_t i) { return ptr_[i]; }
iterator begin() { return ptr_; }
const_iterator begin() { return ptr_; }
T &back() { return ptr_[size_ - 1]; }
T &back() { return ptr_[size_ - 1]; }
void reserve(size_t n) { if (n > alloc_) reserve1(n); }
iterator erase(const_iterator, const_iterator);
private:
void append(size_t);
void reserve1(size_t);
size_t size_;
T *ptr_;
size_t alloc_;
};
# 7 "../include/RangeMap.h" 2
# 1 "../include/Boolean.h" 1
typedef bool Boolean;
typedef char PackedBoolean;
# 8 "../include/RangeMap.h" 2
# 1 "../include/ISet.h" 1
# 1 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/stddef.h" 1 3
# 342 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/stddef.h" 3
# 8 "../include/ISet.h" 2
# 1 "../include/Vector.h" 1
# 74 "../include/Vector.h"
# 9 "../include/ISet.h" 2
template<class T> class ISetIter;
template<class T>
struct ISetRange {
T min;
T max;
};
template<class T>
class ISet {
public:
ISet();
ISet( T *, size_t);
~ISet();
Boolean contains(T) ;
void remove(T);
void add(T x) { addRange(x, x); }
void addRange(T, T);
void check();
void operator+=(T x) { addRange(x, x); }
void clear();
Boolean isSingleton() {
return r_.size() == 1 && r_[0].min == r_[0].max;
}
Boolean isEmpty() { return r_.size() == 0; }
void swap(ISet<T> &x) { r_.swap(x.r_); }
friend class ISetIter<T>;
private:
Vector<ISetRange<T> > r_;
};
# 9 "../include/RangeMap.h" 2
# 1 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/stddef.h" 1 3
# 342 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/stddef.h" 3
# 11 "../include/RangeMap.h" 2
template<class From, class To>
struct RangeMapRange {
From fromMin;
From fromMax;
To toMin;
};
template<class From, class To> class RangeMapIter;
template<class From, class To>
class RangeMap {
public:
RangeMap();
Boolean map(From, To &, From &alsoMax) ;
unsigned inverseMap(To, From &, ISet<WideChar> &, WideChar &count) ;
void addRange(From, From, To);
private:
Vector<RangeMapRange<From,To> > ranges_;
friend class RangeMapIter<From,To>;
};
template<class From, class To>
class RangeMapIter {
public:
RangeMapIter( RangeMap<From,To> &map);
Boolean next(From &fromMin, From &fromMax, To &toMin) {
if (!count_)
return 0;
else {
fromMin = ptr_->fromMin;
fromMax = ptr_->fromMax;
toMin = ptr_->toMin;
ptr_++;
count_--;
return 1;
}
}
private:
size_t count_;
Vector<RangeMapRange<From,To> >::const_iterator ptr_;
};
# 13 "../include/UnivCharsetDesc.h" 2
# 1 "../include/ISet.h" 1
# 54 "../include/ISet.h"
# 15 "../include/UnivCharsetDesc.h" 2
# 1 "../include/constant.h" 1
Char charMax = Char(-1);
WideChar wideCharMax = WideChar(-1);
UnivChar univCharMax = UnivChar(-1);
SyntaxChar syntaxCharMax = SyntaxChar(-1);
# 16 "../include/UnivCharsetDesc.h" 2
class UnivCharsetDesc {
public:
struct Range {
WideChar descMin;
unsigned long count;
UnivChar univMin;
};
enum {
zero = 48,
A = 65,
a = 97,
tab = 9,
rs = 10,
re = 13,
space = 32,
exclamation = 33,
lessThan = 60,
greaterThan = 62
};
UnivCharsetDesc();
UnivCharsetDesc( Range *, size_t);
void set( Range *, size_t);
Boolean descToUniv(WideChar from, UnivChar &to) ;
Boolean descToUniv(WideChar from, UnivChar &to, WideChar &alsoMax) ;
unsigned univToDesc(UnivChar from, WideChar &to, ISet<WideChar> &toSet)
;
unsigned univToDesc(UnivChar from, WideChar &to, ISet<WideChar> &toSet,
WideChar &count)
;
void addRange(WideChar descMin, WideChar descMax, UnivChar univMin);
void addBaseRange( UnivCharsetDesc &baseSet,
WideChar descMin,
WideChar descMax,
WideChar baseMin,
ISet<WideChar> &baseMissing);
private:
static Boolean noDesc(Unsigned32 n) {
return (n & (unsigned(1) << 31));
}
static UnivChar extractChar(Unsigned32 n, Char ch) {
return UnivChar((n + ch) & ((unsigned(1) << 31) - 1));
}
static Unsigned32 wrapChar(UnivChar univ, Char ch) {
return Unsigned32((univ - ch) & ((unsigned(1) << 31) - 1));
}
CharMap<Unsigned32> charMap_;
RangeMap<WideChar,UnivChar> rangeMap_;
friend class UnivCharsetDescIter;
};
class UnivCharsetDescIter {
public:
UnivCharsetDescIter( UnivCharsetDesc &);
Boolean next(WideChar &descMin, WideChar &descMax, UnivChar &univMin);
void skipTo(WideChar);
private:
CharMap<Unsigned32> *charMap_;
Char nextChar_;
Boolean doneCharMap_;
RangeMapIter<WideChar,UnivChar> rangeMapIter_;
};
Boolean UnivCharsetDesc::descToUniv(WideChar from, UnivChar &to)
{
if (from > charMax) {
WideChar tem;
return rangeMap_.map(from, to, tem);
}
else {
Unsigned32 tem = charMap_[from];
if (noDesc(tem))
return 0;
else {
to = extractChar(tem, from);
return 1;
}
}
}
Boolean UnivCharsetDesc::descToUniv(WideChar from, UnivChar &to,
WideChar &alsoMax)
{
if (from > charMax)
return rangeMap_.map(from, to, alsoMax);
else {
Char max;
Unsigned32 tem = charMap_.getRange(from, max);
alsoMax = max;
if (noDesc(tem))
return 0;
else {
to = extractChar(tem, from);
return 1;
}
}
}
unsigned UnivCharsetDesc::univToDesc(UnivChar from, WideChar &to,
ISet<WideChar> &toSet)
{
WideChar tem;
return univToDesc(from, to, toSet, tem);
}
void UnivCharsetDescIter::skipTo(WideChar ch)
{
if (ch > charMax)
doneCharMap_ = 1;
else
nextChar_ = ch;
}
# 11 "../include/CharsetInfo.h" 2
# 1 "../include/StringC.h" 1
# 1 "../include/StringOf.h" 1
# 1 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/stddef.h" 1 3
# 342 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/stddef.h" 3
# 14 "../include/StringOf.h" 2
# 1 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/string.h" 1 3
extern "C" {
extern int memcmp( void *, void *, size_t);
extern char *strncat(char *, char *, size_t);
extern int strncmp( char *, char *, size_t);
extern void *memmove(void *, void *, size_t);
extern char *strcpy(char *, char *);
extern char *strncpy(char *, char *, size_t);
extern char *strcat(char *, char *);
extern int strcmp( char *, char *);
extern int strcoll( char *, char *);
extern size_t strxfrm(char *, char *, size_t);
extern char *strchr( char *, int);
extern char *strpbrk( char *, char *);
extern char *strrchr( char *, int);
extern char *strstr( char *, char *);
extern char *strtok(char *, char *);
extern char *strerror(int);
# 65 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/string.h" 3
extern void *memcpy(void *, void *, size_t);
extern void *memchr( void *, int, size_t);
extern void *memset(void *, int, size_t);
extern size_t strcspn( char *, char *);
extern size_t strspn( char *, char *);
extern size_t strlen( char *);
# 107 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/string.h" 3
# 141 "/usr/local/lib/gcc-lib/hppa2.0-hp-hpux10.20/egcs-2.92.34/include/string.h" 3
}
# 15 "../include/StringOf.h" 2
template<class T>
class String {
public:
typedef size_t size_type;
typedef T *iterator;
typedef T *const_iterator;
String();
~String() { if (ptr_) delete [] ptr_; }
String( T *, size_t);
String( String<T> &);
String<T> &operator=( String<T> &);
size_t size() { return length_; }
String<T> &assign( T *, size_t);
String<T> &insert(size_t i, String<T> &s);
void swap(String<T> &str);
T operator[](size_t i) { return ptr_[i]; }
T &operator[](size_t i) { return ptr_[i]; }
iterator begin() { return ptr_; }
const_iterator begin() { return ptr_; }
T *data() { return ptr_; }
String<T> &operator+=(T c) {
if (length_ >= alloc_)
grow(1);
ptr_[length_++] = c;
return *this;
}
String<T> &operator+=( String<T> &s) {
append(s.ptr_, s.length_);
return *this;
}
String<T> &append( T *, size_t);
Boolean operator==( String<T> &s) {
return (length_ == s.length_
&& (length_ == 0
|| (*ptr_ == *s.ptr_
&& (memcmp(ptr_ + 1, s.ptr_ + 1, (length_ - 1)*sizeof(T))
== 0))));
}
Boolean operator!=( String<T> &str) {
return !(*this == str);
}
void resize(size_t n);
private:
void grow(size_t);
T *ptr_;
size_t length_;
size_t alloc_;
};
# 8 "../include/StringC.h" 2
typedef String<Char> StringC;
# 14 "../include/CharsetInfo.h" 2
# 1 "../include/ISet.h" 1
# 54 "../include/ISet.h"
# 15 "../include/CharsetInfo.h" 2
# 1 "../include/CharMap.h" 1
# 141 "../include/CharMap.h"
# 16 "../include/CharsetInfo.h" 2
class CharsetInfo {
public:
CharsetInfo();
CharsetInfo( UnivCharsetDesc &);
void set( UnivCharsetDesc &);
Char execToDesc(char) ;
StringC execToDesc( char *s) ;
Boolean descToUniv(WideChar from, UnivChar &to) ;
Boolean descToUniv(WideChar from, UnivChar &to, WideChar &alsoMax) ;
unsigned univToDesc(UnivChar from, WideChar &to, ISet<WideChar> &toSet)
;
unsigned univToDesc(UnivChar from, WideChar &to, ISet<WideChar> &toSet,
WideChar &count)
;
void getDescSet(ISet<Char> &) ;
int digitWeight(Char) ;
int hexDigitWeight(Char) ;
UnivCharsetDesc &desc() ;
private:
void init();
UnivCharsetDesc desc_;
CharMap<Unsigned32> inverse_;
Char execToDesc_[255 + 1];
};
unsigned CharsetInfo::univToDesc(UnivChar from, WideChar &to,
ISet<WideChar> &toSet)
{
if (from <= Char(-1)) {
Unsigned32 n = inverse_[from];
if (n == Unsigned32(-1))
More information about the Gcc-bugs
mailing list