diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2010-12-31 11:49:34 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2010-12-31 11:49:34 (GMT) |
commit | 651c94450df8619c26e26a133289dbaa197616f4 (patch) | |
tree | 1a81a2625687116d205cb5c6583497cb657f8460 /src/common/endianness.h | |
parent | dbec8e8af5f296f0b95cd9c07e7d96b1a4277137 (diff) |
Supported a first basic packet of the Java Debug Wire Protocol.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@204 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/common/endianness.h')
-rwxr-xr-x | src/common/endianness.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/common/endianness.h b/src/common/endianness.h index 0664d6a..e4aca6e 100755 --- a/src/common/endianness.h +++ b/src/common/endianness.h @@ -65,6 +65,33 @@ bool read_u64(uint64_t *, const bin_t *, off_t *, off_t, SourceEndian); #define read_s64(target, data, pos, len, endian) read_u64((uint64_t *)target, data, pos, len, endian) + +/* Ecrit un nombre non signé sur n octets. */ +bool _write_un(const bin_t *, size_t, bin_t *, off_t *, off_t, SourceEndian); + + +#define write_un(value, data, pos, len, endian, type) \ + ({ \ + type __tmp; \ + (void)(value == &__tmp); \ + _write_un((bin_t *)value, sizeof(type), data, pos, len, endian); \ + }) + + +#define write_u8(value, data, pos, len, endian) write_un(value, data, pos, len, endian, uint8_t) +#define write_u16(value, data, pos, len, endian) write_un(value, data, pos, len, endian, uint16_t) +#define write_u32(value, data, pos, len, endian) write_un(value, data, pos, len, endian, uint32_t) +#define write_u64(value, data, pos, len, endian) write_un(value, data, pos, len, endian, uint64_t) + +#define write_s8(value, data, pos, len, endian) write_un(value, data, pos, len, endian, sint8_t) +#define write_s16(value, data, pos, len, endian) write_un(value, data, pos, len, endian, sint16_t) +#define write_s32(value, data, pos, len, endian) write_un(value, data, pos, len, endian, sint32_t) +#define write_s64(value, data, pos, len, endian) write_un(value, data, pos, len, endian, sint64_t) + + + + + /* Lit un nombre hexadécimal non signé sur deux octets. */ bool strtou8(uint8_t *, const char *, size_t *, size_t, SourceEndian); |