From: Albert C. <ope...@ml...> - 2003-06-09 22:34:39
|
openjade 1.3.2 fails on AIX 4.3.2 and 5.1 with: ... In file included from GroveApp.cxx:9: GroveApp.h: In function `OpenSP::OutputCharStream& OpenSP::operator<<(OpenSP::OutputCharStream&, OpenJade_Grove::GroveString&) ': GroveApp.h:52: error: no matching function for call to ` OpenSP::OutputCharStream::write(const GroveChar*, size_t)' /opt/TWWfsw/opensp15/include/OutputCharStream.h:26: error: candidates are: OpenSP::OutputCharStream& OpenSP::OutputCharStream::write(const Char*, long unsigned int) On AIX 4.3 and 5.1, <sys/types.h> has: typedef unsigned short wchar_t; So, from OpenSP's <config.h>, we have: #if (SIZEOF_WCHAR_T == SIZEOF_UNSIGNED_SHORT) #define SP_WCHAR_T_USHORT #endif class GroveString has: ... public: typedef const GroveChar *const_iterator; GroveString() : data_(0), size_(0) { } GroveString(const GroveChar *data, size_t size) : data_(data), size_(size) { } size_t size() const { return size_; } const GroveChar *data() const { return data_; } ... GroveChar, because of SP_WCHAR_T_USHORT, is defined to wchar_t because of the following code in grove/Node.h: #ifdef SP_MULTI_BYTE #ifdef SP_WCHAR_T_USHORT typedef wchar_t GroveChar; #else typedef unsigned int GroveChar; #endif #else /* not SP_MULTI_BYTE */ typedef unsigned char GroveChar; #endif /* not SP_MULTI_BYTE */ spgrove/GroveApp.h has: inline OutputCharStream &operator<<(OutputCharStream &os, #ifdef GROVE_NAMESPACE GROVE_NAMESPACE:: #endif GroveString &str) { return os.write(str.data(), str.size()); } OpenSP::OutputCharStream::write has only one prototype: OutputCharStream &write(const Char *, size_t); If GroveChar was defined as: typedef unsigned int GroveChar; then everything would be OK. This is because: ... typedef unsigned int Unsigned32; ... typedef Unsigned32 Char; Any ideas on a fix? Should I add a --disable-multi-byte option to disable SP_MULTI_BYTE? -- albert chin (ch...@th...) |