projects
/
babeltrace.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Integer base update
[babeltrace.git]
/
formats
/
ctf-text
/
types
/
integer.c
diff --git
a/formats/ctf-text/types/integer.c
b/formats/ctf-text/types/integer.c
index a01284583f6ecdd64e83cc2a9d34c31b00bc0a8f..34a899ddd0e901dab98141133f71c1c2526e92c2 100644
(file)
--- a/
formats/ctf-text/types/integer.c
+++ b/
formats/ctf-text/types/integer.c
@@
-20,6
+20,7
@@
#include <stdio.h>
#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>
#include <inttypes.h>
#include <stdint.h>
+#include <babeltrace/bitfield.h>
int ctf_text_integer_write(struct stream_pos *ppos, struct definition *definition)
{
int ctf_text_integer_write(struct stream_pos *ppos, struct definition *definition)
{
@@
-40,37
+41,60
@@
int ctf_text_integer_write(struct stream_pos *ppos, struct definition *definitio
g_quark_to_string(definition->name));
switch (integer_declaration->base) {
g_quark_to_string(definition->name));
switch (integer_declaration->base) {
+ case 0: /* default */
+ case 10:
+ if (!integer_declaration->signedness) {
+ fprintf(pos->fp, "%" PRIu64,
+ integer_definition->value._unsigned);
+ } else {
+ fprintf(pos->fp, "%" PRId64,
+ integer_definition->value._signed);
+ }
+ break;
case 2:
{
int bitnr;
case 2:
{
int bitnr;
- uint64_t v = integer_definition->value._unsigned;
+ uint64_t v;
+
+ if (!integer_declaration->signedness)
+ v = integer_definition->value._unsigned;
+ else
+ v = (uint64_t) integer_definition->value._signed;
fprintf(pos->fp, "b");
fprintf(pos->fp, "b");
- for (bitnr = 0; bitnr < integer_declaration->len; bitnr++)
- v <<= 1;
- for (; bitnr < sizeof(v) * CHAR_BIT; bitnr++) {
- fprintf(pos->fp, "%u", ((v & 1ULL) << 63) ? 1 : 0);
- v <<= 1;
+ v = _bt_piecewise_lshift(v, 64 - integer_declaration->len);
+ for (bitnr = 0; bitnr < integer_declaration->len; bitnr++) {
+ fprintf(pos->fp, "%u", (v & (1ULL << 63)) ? 1 : 0);
+ v = _bt_piecewise_lshift(v, 1);
}
break;
}
case 8:
}
break;
}
case 8:
+ {
+ uint64_t v;
+
+ if (!integer_declaration->signedness)
+ v = integer_definition->value._unsigned;
+ else
+ v = (uint64_t) integer_definition->value._signed;
+
fprintf(pos->fp, "0%" PRIo64,
integer_definition->value._unsigned);
break;
fprintf(pos->fp, "0%" PRIo64,
integer_definition->value._unsigned);
break;
- case 10:
- if (!integer_declaration->signedness) {
- fprintf(pos->fp, "%" PRIu64,
- integer_definition->value._unsigned);
- } else {
- fprintf(pos->fp, "%" PRId64,
- integer_definition->value._signed);
- }
- break;
+ }
case 16:
case 16:
+ {
+ uint64_t v;
+
+ if (!integer_declaration->signedness)
+ v = integer_definition->value._unsigned;
+ else
+ v = (uint64_t) integer_definition->value._signed;
+
fprintf(pos->fp, "0x%" PRIX64,
integer_definition->value._unsigned);
break;
fprintf(pos->fp, "0x%" PRIX64,
integer_definition->value._unsigned);
break;
+ }
default:
return -EINVAL;
}
default:
return -EINVAL;
}
This page took
0.025057 seconds
and
4
git commands to generate.