[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Porting xtl to DEC Alpha
- To: XTL list <xtl@lsd.di.uminho.pt>
- Subject: Porting xtl to DEC Alpha
- From: Angus Leeming <a.leeming@ic.ac.uk>
- Date: Mon, 17 Apr 2000 12:48:04 +0100
- Delivered-To: mailing list xtl@lsd.di.uminho.pt
- Mailing-List: contact xtl-help@lsd.di.uminho.pt; run by ezmlm
José,
Having fought off an attack of flu, I have now tweaked the xtl headers so that I
can now run compile (with gcc-2.95.2) and run the "xdr" program in the
examples/tests directory.
The code now compiles successfully on both linux and non-linux boxes.
Ie, I've resolved the problems with
#include <endian.h>
#include <byteswap.h>
that are linux-specific.
The code "xdr" now returns PASSED on completion. (Previously, it FAILED.)
In getting it to do so on the Alpha, I tracked down a bug in <byteswap.h> on
Alpha's.
I have resolved almost all of the unaligned access errors I was getting before.
Some still remain, however. I'm trying to track these down. In the meantime, I
have two quick questions:
1. The code fragment below (output_simple()) suggests that "bool" is cast
to an "int" for storage in the xtl character string. Am I right?
2. What does the !! in input_simple() mean? I can find no reference to it in my
books. Is it not a double-negative?
Best wishes,
Angus
template <class Buffer>
class XDR_format: public generic_format<Buffer> {
...
void input_simple(bool& data)
{data=!!XDR_format_bswap_l((char*)require(4));}
void output_simple(bool const& data)
{XDR_format_bswap_l(data?1:0, (char*)require(4));}
...
}