[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] Decouple pk-utils from output functions
From: |
Jose E. Marchesi |
Subject: |
Re: [PATCH] Decouple pk-utils from output functions |
Date: |
Sat, 02 May 2020 19:31:01 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
Hi Tim.
This is OK for master.
Thanks!
2020-05-02 Tim Rühsen <address@hidden>
* lib/pk-utils.c: Remove pkt.h from includes.
(pk_print_binary): Add string output function as first param.
* lib/pk-utils.h (pk_print_binary): Likewise.
* lib/pvm-val.c (pvm_print_val_1): Add pk_puts as first param
when calling pk_print_binary.
* lib/pvm.jitter: Likewise.
---
ChangeLog | 9 +++++++++
lib/pk-utils.c | 39 +++++++++++++--------------------------
lib/pk-utils.h | 4 ++--
lib/pvm-val.c | 8 ++++----
lib/pvm.jitter | 4 ++--
5 files changed, 30 insertions(+), 34 deletions(-)
diff --git a/lib/pk-utils.c b/lib/pk-utils.c
index 106761e5..55ba03d4 100644
--- a/lib/pk-utils.c
+++ b/lib/pk-utils.c
@@ -31,7 +31,6 @@
#include <string.h> /* strcpy */
#include <xalloc.h> /* xmalloc */
-#include "pkt.h"
#include "pk-utils.h"
char *
@@ -86,47 +85,35 @@ PK_POW (pk_upow, uint64_t)
#undef PK_POW
void
-pk_print_binary (uint64_t val, int size, int sign)
+pk_print_binary (
+ void (*puts_fn) (const char *str),
+ uint64_t val, int size, int sign)
{
char b[65];
if (size != 64 && size != 32 && size != 16 && size != 8
&& size != 4)
- pk_printf ("(%sint<%d>) ", sign ? "" : "u", size);
+ {
+ snprintf (b, sizeof(b), "(%sint<%d>) ", sign ? "" : "u", size);
+ puts_fn (b);
+ }
for (int z = 0; z < size; z++) {
b[size-1-z] = ((val >> z) & 0x1) + '0';
}
b[size] = '\0';
- pk_printf ("0b%s", b);
+ puts_fn ("0b");
+ puts_fn (b);
if (size == 64)
- {
- if (!sign)
- pk_puts ("U");
- pk_puts ("L");
- }
+ puts_fn (sign ? "L" : "UL");
else if (size == 16)
- {
- if (!sign)
- pk_puts ("U");
- pk_puts ("H");
- }
+ puts_fn (sign ? "H" : "UH");
else if (size == 8)
- {
- if (!sign)
- pk_puts ("U");
- pk_puts ("B");
- }
+ puts_fn (sign ? "B" : "UB");
else if (size == 4)
- {
- {
- if (!sign)
- pk_puts ("U");
- }
- pk_puts ("N");
- }
+ puts_fn (sign ? "N" : "UN");
}
/* Concatenate 2+ strings.
diff --git a/lib/pk-utils.h b/lib/pk-utils.h
index 53d5d032..b08d42da 100644
--- a/lib/pk-utils.h
+++ b/lib/pk-utils.h
@@ -47,8 +47,8 @@ char *pk_file_readable (const char *filename);
int64_t pk_ipow (int64_t base, uint32_t exp);
uint64_t pk_upow (uint64_t base, uint32_t exp);
-/* Print the give unsigned 64-bit integer in binary. */
-void pk_print_binary (uint64_t val, int size, int sign);
+/* Print the given unsigned 64-bit integer in binary. */
+void pk_print_binary (void (*puts_fn) (const char *str), uint64_t val, int
size, int sign);
/* Concatenate string arguments into an malloc'ed string. */
char *pk_str_concat(const char *s0, ...);
diff --git a/lib/pvm-val.c b/lib/pvm-val.c
index b9b173fb..41737959 100644
--- a/lib/pvm-val.c
+++ b/lib/pvm-val.c
@@ -648,7 +648,7 @@ pvm_print_val_1 (pvm vm, int depth, int mode, int base,
int indent,
ulongval = (uint64_t) longval & ((((uint64_t) 1) << size) - 1);
if (base == 2)
- pk_print_binary (ulongval, size, 1);
+ pk_print_binary (pk_puts, ulongval, size, 1);
else
{
if (size == 64)
@@ -674,7 +674,7 @@ pvm_print_val_1 (pvm vm, int depth, int mode, int base,
int indent,
uintval = (uint32_t) intval & ((((uint32_t) 1) << size) - 1);
if (base == 2)
- pk_print_binary ((uint64_t) uintval, size, 1);
+ pk_print_binary (pk_puts, (uint64_t) uintval, size, 1);
else
{
if (size == 32)
@@ -700,7 +700,7 @@ pvm_print_val_1 (pvm vm, int depth, int mode, int base,
int indent,
pk_term_class ("integer");
if (base == 2)
- pk_print_binary (ulongval, size, 0);
+ pk_print_binary (pk_puts, ulongval, size, 0);
else
{
if (size == 64)
@@ -719,7 +719,7 @@ pvm_print_val_1 (pvm vm, int depth, int mode, int base,
int indent,
pk_term_class ("integer");
if (base == 2)
- pk_print_binary (uintval, size, 0);
+ pk_print_binary (pk_puts, uintval, size, 0);
else
{
if (size == 32)
diff --git a/lib/pvm.jitter b/lib/pvm.jitter
index ffb4e391..f6ed0f1f 100644
--- a/lib/pvm.jitter
+++ b/lib/pvm.jitter
@@ -393,7 +393,7 @@ late-header-c
}
\
else if (JITTER_ARGN1 == 2)
\
{
\
- pk_print_binary (val, JITTER_ARGN0, 1);
\
+ pk_print_binary (pk_puts, val, JITTER_ARGN0, 1);
\
JITTER_DROP_STACK ();
\
break;
\
}
\
@@ -438,7 +438,7 @@ late-header-c
}
\
else if (JITTER_ARGN1 == 2)
\
{
\
- pk_print_binary (val, JITTER_ARGN0, 1);
\
+ pk_print_binary (pk_puts, val, JITTER_ARGN0, 1);
\
JITTER_DROP_STACK ();
\
break;
\
}
\
--
2.26.2