[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2] libpoke, poke, poked, pokefmt: add `pk_compiler' to terminal
From: |
Mohammad-Reza Nabipoor |
Subject: |
[PATCH v2] libpoke, poke, poked, pokefmt: add `pk_compiler' to terminal interface |
Date: |
Tue, 21 Nov 2023 00:55:52 +0100 |
This commit adds `pk_compiler' as the first parameter to all terminal
interface functions. In conjunction with `pk_{s,g}et_user_data'
functions, users can share the same set of terminal interface functions
in different compiler instances.
2023-11-18 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
* libpoke/libpoke.h (struct pk_term_if): Add `pk_compiler' parameter
to all function pointers.
* libpoke/libpoke.c (include "libpoke.h"): Move to the top.
(libpoke_term_if): Change the type to `struct pk_term_if_internal'.
(pk_compiler_new_with_flags): Populate `libpoke_term_if'.
* libpoke/pkt.h (PKT_IF): New macro to convey the terminal interface
function pointers.
(PK_PKC): New macro to convey the instance of current incremental
compiler.
(pk_*): Re-write the macro definitions to new paradigm.
(struct pk_term_if_internal): New data type.
(libpoke_term_if): Change the type of the variable.
* poke/pk-term.h (pk_puts): Define as a macro.
(pk_term_indent): Likewise.
(pk_term_class): Likewise.
(pk_term_end_class): Likewise.
(pk_term_hyperlink): Likewise.
(pk_term_end_hyperlink): Likewise.
(pk_term_get_color): Likewise.
(pk_term_get_bgcolor): Likewise.
(pk_term_set_color): Likewise.
(pk_term_set_bgcolor): Likewise.
(pk_term_flush_1): New terminal interface function with `pk_compiler'
parameter.
(pk_puts_1): Likewise.
(pk_printf_1): Likewise.
(pk_term_indent_1): Likewise.
(pk_term_class_1): Likewise.
(pk_term_end_class_1): Likewise.
(pk_term_hyperlink_1): Likewise.
(pk_term_end_hyperlink_1): Likewise.
(pk_term_get_color_1): Likewise.
(pk_term_get_bgcolor_1): Likewise.
(pk_term_set_color_1): Likewise.
(pk_term_set_bgcolor_1): Likewise.
* poke/pk-term.c (pk_term_flush_1): Likewise.
(pk_puts_1): Likewise.
(pk_printf_1): Likewise.
(pk_term_indent_1): Likewise.
(pk_term_class_1): Likewise.
(pk_term_end_class_1): Likewise.
(pk_term_hyperlink_1): Likewise.
(pk_term_end_hyperlink_1): Likewise.
(pk_term_get_color_1): Likewise.
(pk_term_get_bgcolor_1): Likewise.
(pk_term_set_color_1): Likewise.
(pk_term_set_bgcolor_1): Likewise.
(pk_term_flush_1): Likewise.
(pk_puts): Remove.
(pk_term_indent): Likewise.
(pk_term_class): Likewise.
(pk_term_end_class): Likewise.
(pk_term_hyperlink): Likewise.
(pk_term_end_hyperlink): Likewise.
(pk_term_get_color): Likewise.
(pk_term_get_bgcolor): Likewise.
(pk_term_set_color): Likewise.
(pk_term_set_bgcolor): Likewise.
* poked/poked.c (tif_flush): Add `pk_compiler' parameter.
(tif_puts): Likewise.
(tif_printf): Likewise.
(tif_indent): Likewise.
(tif_class): Likewise.
(tif_class_end): Likewise.
(tif_hlink): Likewise.
(tif_hlink_end): Likewise.
(tif_color): Likewise.
(tif_bgcolor): Likewise.
(tif_color_set): Likewise.
(tif_bgcolor_set): Likewise.
* pokefmt/pokefmt.l (tif_flush): Likewise.
(tif_puts): Likewise.
(tif_printf): Likewise.
(tif_indent): Likewise.
(tif_class): Likewise.
(tif_class_end): Likewise.
(tif_hlink): Likewise.
(tif_hlink_end): Likewise.
(tif_color): Likewise.
(tif_bgcolor): Likewise.
(tif_color_set): Likewise.
(tif_bgcolor_set): Likewise.
* testsutie/poke.libpoke/term-if.h (pk_term_flush): Likewise.
(pk_puts): Likewise.
(pk_printf): Likewise.
(pk_term_indent): Likewise.
(pk_term_class): Likewise.
(pk_term_end_class): Likewise.
(pk_term_hyperlink): Likewise.
(pk_term_end_hyperlink): Likewise.
(pk_term_get_color): Likewise.
(pk_term_get_bgcolor): Likewise.
(pk_term_set_color): Likewise.
(pk_term_set_bgcolor): Likewise.
---
Hi Jose.
On Mon, Nov 20, 2023 at 02:10:32PM +0100, Jose E. Marchesi wrote:
>
> > On Sun, Nov 19, 2023 at 02:36:56AM +0100, Mohammad-Reza Nabipoor wrote:
> >> > Hmm, the functions pk_printf and friends are defined by the poke app.
> >> >
> >> > What about having pk_printf_1 versions that get the pk_compiler
> >> > argument, and also the pk_printf versions that use the global
> >> > poke_compiler? We can then register the _1 variants in libpoke while
> >> > continuing the shorter versions in the app.
> >>
> >>
> >> Very good idea.
> >> Implemented.
> >
> >
> > We could also use macros in `poke/pk-term.h' which is even better.
> > WDYT?
>
> Can you elaborate?
>
This patch is the elaboration :)
Now you can choose between these two patches.
Regards,
Mohammad-Reza
ChangeLog | 97 ++++++++++++++++++++++++++++++++
libpoke/libpoke.c | 7 ++-
libpoke/libpoke.h | 24 ++++----
libpoke/pkt.h | 46 +++++++++------
poke/pk-term.c | 36 ++++++------
poke/pk-term.h | 46 ++++++++++-----
poke/poke.c | 24 ++++----
poked/poked.c | 26 +++++----
pokefmt/pokefmt.l | 26 +++++----
testsuite/poke.libpoke/term-if.h | 36 ++++++------
10 files changed, 251 insertions(+), 117 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index cc2aad80..2dea6cca 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,100 @@
+2023-11-18 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
+
+ * libpoke/libpoke.h (struct pk_term_if): Add `pk_compiler' parameter
+ to all function pointers.
+ * libpoke/libpoke.c (include "libpoke.h"): Move to the top.
+ (libpoke_term_if): Change the type to `struct pk_term_if_internal'.
+ (pk_compiler_new_with_flags): Populate `libpoke_term_if'.
+ * libpoke/pkt.h (PKT_IF): New macro to convey the terminal interface
+ function pointers.
+ (PK_PKC): New macro to convey the instance of current incremental
+ compiler.
+ (pk_*): Re-write the macro definitions to new paradigm.
+ (struct pk_term_if_internal): New data type.
+ (libpoke_term_if): Change the type of the variable.
+ * poke/pk-term.h (pk_puts): Define as a macro.
+ (pk_term_indent): Likewise.
+ (pk_term_class): Likewise.
+ (pk_term_end_class): Likewise.
+ (pk_term_hyperlink): Likewise.
+ (pk_term_end_hyperlink): Likewise.
+ (pk_term_get_color): Likewise.
+ (pk_term_get_bgcolor): Likewise.
+ (pk_term_set_color): Likewise.
+ (pk_term_set_bgcolor): Likewise.
+ (pk_term_flush_1): New terminal interface function with `pk_compiler'
+ parameter.
+ (pk_puts_1): Likewise.
+ (pk_printf_1): Likewise.
+ (pk_term_indent_1): Likewise.
+ (pk_term_class_1): Likewise.
+ (pk_term_end_class_1): Likewise.
+ (pk_term_hyperlink_1): Likewise.
+ (pk_term_end_hyperlink_1): Likewise.
+ (pk_term_get_color_1): Likewise.
+ (pk_term_get_bgcolor_1): Likewise.
+ (pk_term_set_color_1): Likewise.
+ (pk_term_set_bgcolor_1): Likewise.
+ * poke/pk-term.c (pk_term_flush_1): Likewise.
+ (pk_puts_1): Likewise.
+ (pk_printf_1): Likewise.
+ (pk_term_indent_1): Likewise.
+ (pk_term_class_1): Likewise.
+ (pk_term_end_class_1): Likewise.
+ (pk_term_hyperlink_1): Likewise.
+ (pk_term_end_hyperlink_1): Likewise.
+ (pk_term_get_color_1): Likewise.
+ (pk_term_get_bgcolor_1): Likewise.
+ (pk_term_set_color_1): Likewise.
+ (pk_term_set_bgcolor_1): Likewise.
+ (pk_term_flush_1): Likewise.
+ (pk_puts): Remove.
+ (pk_term_indent): Likewise.
+ (pk_term_class): Likewise.
+ (pk_term_end_class): Likewise.
+ (pk_term_hyperlink): Likewise.
+ (pk_term_end_hyperlink): Likewise.
+ (pk_term_get_color): Likewise.
+ (pk_term_get_bgcolor): Likewise.
+ (pk_term_set_color): Likewise.
+ (pk_term_set_bgcolor): Likewise.
+ * poked/poked.c (tif_flush): Add `pk_compiler' parameter.
+ (tif_puts): Likewise.
+ (tif_printf): Likewise.
+ (tif_indent): Likewise.
+ (tif_class): Likewise.
+ (tif_class_end): Likewise.
+ (tif_hlink): Likewise.
+ (tif_hlink_end): Likewise.
+ (tif_color): Likewise.
+ (tif_bgcolor): Likewise.
+ (tif_color_set): Likewise.
+ (tif_bgcolor_set): Likewise.
+ * pokefmt/pokefmt.l (tif_flush): Likewise.
+ (tif_puts): Likewise.
+ (tif_printf): Likewise.
+ (tif_indent): Likewise.
+ (tif_class): Likewise.
+ (tif_class_end): Likewise.
+ (tif_hlink): Likewise.
+ (tif_hlink_end): Likewise.
+ (tif_color): Likewise.
+ (tif_bgcolor): Likewise.
+ (tif_color_set): Likewise.
+ (tif_bgcolor_set): Likewise.
+ * testsutie/poke.libpoke/term-if.h (pk_term_flush): Likewise.
+ (pk_puts): Likewise.
+ (pk_printf): Likewise.
+ (pk_term_indent): Likewise.
+ (pk_term_class): Likewise.
+ (pk_term_end_class): Likewise.
+ (pk_term_hyperlink): Likewise.
+ (pk_term_end_hyperlink): Likewise.
+ (pk_term_get_color): Likewise.
+ (pk_term_get_bgcolor): Likewise.
+ (pk_term_set_color): Likewise.
+ (pk_term_set_bgcolor): Likewise.
+
2023-11-18 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
* common/pk-utils.h (PK_INTEGRAL_SUFFIX): New macro.
diff --git a/libpoke/libpoke.c b/libpoke/libpoke.c
index f1d896ae..5b58becb 100644
--- a/libpoke/libpoke.c
+++ b/libpoke/libpoke.c
@@ -21,6 +21,7 @@
#include <string.h>
#include <stdlib.h>
+#include "libpoke.h"
#include "pk-utils.h"
#include "pkt.h"
#include "pkl.h"
@@ -28,7 +29,6 @@
#include "pkl-env.h" /* XXX */
#include "pvm.h"
#include "pvm-val.h" /* XXX */
-#include "libpoke.h"
#include "ios-dev.h" /* for struct ios_dev_if */
#include "configmake.h"
@@ -47,7 +47,7 @@ struct _pk_compiler
void *user_data;
};
-struct pk_term_if libpoke_term_if;
+struct pk_term_if_internal libpoke_term_if;
#define PK_RETURN(code) do { return pkc->status = (code); } while (0)
@@ -84,7 +84,8 @@ pk_compiler_new_with_flags (struct pk_term_if *term_if,
uint32_t flags)
if (libpoke_datadir == NULL)
libpoke_datadir = PKGDATADIR;
- libpoke_term_if = *term_if;
+ libpoke_term_if.term_if = *term_if;
+ libpoke_term_if.pkc = pkc;
pkc->vm = pvm_init ();
if (pkc->vm == NULL)
diff --git a/libpoke/libpoke.h b/libpoke/libpoke.h
index 0085b8e3..acced2e3 100644
--- a/libpoke/libpoke.h
+++ b/libpoke/libpoke.h
@@ -83,46 +83,46 @@ struct pk_color
struct pk_term_if
{
/* Flush the output in the terminal. */
- void (*flush_fn) (void);
+ void (*flush_fn) (pk_compiler pkc);
/* Output a NULL-terminated C string. */
- void (*puts_fn) (const char *str);
+ void (*puts_fn) (pk_compiler pkc, const char *str);
/* Output a formatted string. */
- void (*printf_fn) (const char *format, ...);
+ void (*printf_fn) (pk_compiler pkc, const char *format, ...);
/* Output LVL levels of indentation, using STEP white chars in each
indentation level. */
- void (*indent_fn) (unsigned int lvl, unsigned int step);
+ void (*indent_fn) (pk_compiler pkc, unsigned int lvl, unsigned int step);
/* Mark the beginning of a styling class with name CLASS. */
- void (*class_fn) (const char *aclass);
+ void (*class_fn) (pk_compiler pkc, const char *aclass);
/* Mark the end of a styling class with name CLASS. This function
returns 0 if the given class is not active and therefore can't be
ended. 1 otherwise. */
- int (*end_class_fn) (const char *aclass);
+ int (*end_class_fn) (pk_compiler pkc, const char *aclass);
/* Mark the beginning of an hyperlink with url URL and identifier
ID. The identifier can be NULL. */
- void (*hyperlink_fn) (const char *url, const char *id);
+ void (*hyperlink_fn) (pk_compiler pkc, const char *url, const char *id);
/* Mark the end of the current hyperlink. This function returns 0
if there is no currently an hyperlink open to close. 1
otherwise. */
- int (*end_hyperlink_fn) (void);
+ int (*end_hyperlink_fn) (pk_compiler pkc);
/* Get the current foreground color. */
- struct pk_color (*get_color_fn) (void);
+ struct pk_color (*get_color_fn) (pk_compiler pkc);
/* Get the current background color. */
- struct pk_color (*get_bgcolor_fn) (void);
+ struct pk_color (*get_bgcolor_fn) (pk_compiler pkc);
/* Set the foreground color. */
- void (*set_color_fn) (struct pk_color color);
+ void (*set_color_fn) (pk_compiler pkc, struct pk_color color);
/* Set the background color. */
- void (*set_bgcolor_fn) (struct pk_color color);
+ void (*set_bgcolor_fn) (pk_compiler pkc, struct pk_color color);
};
/* Create and return a new Poke incremental compiler.
diff --git a/libpoke/pkt.h b/libpoke/pkt.h
index 5be77f68..ac49ba29 100644
--- a/libpoke/pkt.h
+++ b/libpoke/pkt.h
@@ -21,21 +21,35 @@
#include <config.h>
-#include "libpoke.h" /* For struct pk_term_if */
-
-extern struct pk_term_if libpoke_term_if;
-
-#define pk_puts libpoke_term_if.puts_fn
-#define pk_printf libpoke_term_if.printf_fn
-#define pk_term_flush libpoke_term_if.flush_fn
-#define pk_term_indent libpoke_term_if.indent_fn
-#define pk_term_class libpoke_term_if.class_fn
-#define pk_term_end_class libpoke_term_if.end_class_fn
-#define pk_term_hyperlink libpoke_term_if.hyperlink_fn
-#define pk_term_end_hyperlink libpoke_term_if.end_hyperlink_fn
-#define pk_term_get_color libpoke_term_if.get_color_fn
-#define pk_term_set_color libpoke_term_if.set_color_fn
-#define pk_term_get_bgcolor libpoke_term_if.get_bgcolor_fn
-#define pk_term_set_bgcolor libpoke_term_if.set_bgcolor_fn
+#include "libpoke.h" /* For struct pk_term_if, pk_compiler. */
+
+struct pk_term_if_internal
+{
+ struct pk_term_if term_if;
+ pk_compiler pkc;
+};
+
+extern struct pk_term_if_internal libpoke_term_if;
+
+#define PKT_IF (&libpoke_term_if.term_if)
+#define PKT_PKC (libpoke_term_if.pkc)
+
+/* Terminal interface for Poke compiler. */
+
+#define pk_puts(STR) (PKT_IF)->puts_fn ((PKT_PKC), (STR))
+#define pk_printf(...) (PKT_IF)->printf_fn ((PKT_PKC), __VA_ARGS__)
+#define pk_term_flush() (PKT_IF)->flush_fn (PKT_PKC)
+#define pk_term_indent(LVL, STEP) \
+ (PKT_IF)->indent_fn ((PKT_PKC), (LVL), (STEP))
+#define pk_term_class(CLS) (PKT_IF)->class_fn ((PKT_PKC), (CLS))
+#define pk_term_end_class(CLS) (PKT_IF)->end_class_fn ((PKT_PKC), (CLS))
+#define pk_term_hyperlink(URL, ID) \
+ (PKT_IF)->hyperlink_fn ((PKT_PKC), (URL), ID)
+#define pk_term_end_hyperlink() (PKT_IF)->end_hyperlink_fn (PKT_PKC)
+#define pk_term_get_color() (PKT_IF)->get_color_fn (PKT_PKC)
+#define pk_term_set_color(COLOR) (PKT_IF)->set_color_fn ((PKT_PKC), (COLOR))
+#define pk_term_get_bgcolor() (PKT_IF)->get_bgcolor_fn (PKT_PKC)
+#define pk_term_set_bgcolor(COLOR) \
+ (PKT_IF)->set_bgcolor_fn ((PKT_PKC), (COLOR))
#endif /* ! PKT_H */
diff --git a/poke/pk-term.c b/poke/pk-term.c
index 71f83a7a..7c410792 100644
--- a/poke/pk-term.c
+++ b/poke/pk-term.c
@@ -364,12 +364,11 @@ pk_term_shutdown ()
}
void
-pk_term_flush ()
+pk_term_flush_1 (pk_compiler pkc __attribute__ ((unused)))
{
ostream_flush (pk_ostream, FLUSH_THIS_STREAM);
}
-
void
pk_term_start_pager (void)
{
@@ -470,7 +469,7 @@ pk_puts_paged (const char *lines)
}
void
-pk_puts (const char *str)
+pk_puts_1 (pk_compiler pkc __attribute__ ((unused)), const char *str)
{
if (pager_active_p)
pk_puts_paged (str);
@@ -478,9 +477,9 @@ pk_puts (const char *str)
ostream_write_str (pk_ostream, str);
}
-__attribute__ ((__format__ (__printf__, 1, 2)))
+__attribute__ ((__format__ (__printf__, 2, 3)))
void
-pk_printf (const char *format, ...)
+pk_printf_1 (pk_compiler pkc, const char *format, ...)
{
va_list ap;
char *str;
@@ -491,7 +490,7 @@ pk_printf (const char *format, ...)
assert (r != -1);
va_end (ap);
- pk_puts (str);
+ pk_puts_1 (pkc, str);
free (str);
}
@@ -508,23 +507,21 @@ pk_vprintf (const char *format, va_list ap)
free (str);
}
-
void
-pk_term_indent (unsigned int lvl,
- unsigned int step)
+pk_term_indent_1 (pk_compiler pkc, unsigned int lvl, unsigned int step)
{
- pk_printf ("\n%*s", (step * lvl), "");
+ pk_printf_1 (pkc, "\n%*s", (step * lvl), "");
}
void
-pk_term_class (const char *class)
+pk_term_class_1 (pk_compiler pkc __attribute__ ((unused)), const char *class)
{
styled_ostream_begin_use_class (pk_ostream, class);
push_active_class (class);
}
int
-pk_term_end_class (const char *class)
+pk_term_end_class_1 (pk_compiler pkc __attribute__ ((unused)), const char
*class)
{
if (!pop_active_class (class))
return 0;
@@ -537,7 +534,8 @@ pk_term_end_class (const char *class)
static int hlcount = 0;
void
-pk_term_hyperlink (const char *url, const char *id)
+pk_term_hyperlink_1 (pk_compiler pkc __attribute__ ((unused)),
+ const char *url, const char *id)
{
#ifdef HAVE_TEXTSTYLE_HYPERLINK_SUPPORT
styled_ostream_set_hyperlink (pk_ostream, url, id);
@@ -546,7 +544,7 @@ pk_term_hyperlink (const char *url, const char *id)
}
int
-pk_term_end_hyperlink (void)
+pk_term_end_hyperlink_1 (pk_compiler pkc __attribute__ ((unused)))
{
#ifdef HAVE_TEXTSTYLE_HYPERLINK_SUPPORT
if (hlcount == 0)
@@ -568,7 +566,7 @@ pk_term_color_p (void)
}
struct pk_color
-pk_term_get_color (void)
+pk_term_get_color_1 (pk_compiler pkc __attribute__ ((unused)))
{
#if defined HAVE_TEXTSTYLE_ACCESSORS_SUPPORT
if (color_mode != color_html
@@ -591,7 +589,7 @@ pk_term_get_color (void)
}
struct pk_color
-pk_term_get_bgcolor ()
+pk_term_get_bgcolor_1 (pk_compiler pkc __attribute__ ((unused)))
{
#if defined HAVE_TEXTSTYLE_ACCESSORS_SUPPORT
if (color_mode != color_html
@@ -614,7 +612,8 @@ pk_term_get_bgcolor ()
}
void
-pk_term_set_color (struct pk_color color)
+pk_term_set_color_1 (pk_compiler pkc __attribute__ ((unused)),
+ struct pk_color color)
{
#if defined HAVE_TEXTSTYLE_ACCESSORS_SUPPORT
if (color_mode != color_html)
@@ -642,7 +641,8 @@ pk_term_set_color (struct pk_color color)
}
void
-pk_term_set_bgcolor (struct pk_color color)
+pk_term_set_bgcolor_1 (pk_compiler pkc __attribute__ ((unused)),
+ struct pk_color color)
{
#if defined HAVE_TEXTSTYLE_ACCESSORS_SUPPORT
if (color_mode != color_html)
diff --git a/poke/pk-term.h b/poke/pk-term.h
index 8516dc30..205d1211 100644
--- a/poke/pk-term.h
+++ b/poke/pk-term.h
@@ -23,6 +23,12 @@
#include <textstyle.h>
+/* From libpoke.h. */
+typedef struct _pk_compiler *pk_compiler;
+
+/* Defined in poke.c. */
+extern pk_compiler poke_compiler;
+
/* Initialize and finalize the terminal subsystem. */
void pk_term_init (int argc, char *argv[]);
void pk_term_shutdown (void);
@@ -32,33 +38,45 @@ void pk_term_shutdown (void);
extern int pk_term_color_p (void);
/* Flush the terminal output. */
-extern void pk_term_flush (void);
+extern void pk_term_flush_1 (pk_compiler pkc);
+#define pk_term_flush() pk_term_flush_1 (poke_compiler)
/* Print a string to the terminal. */
-extern void pk_puts (const char *str);
+extern void pk_puts_1 (pk_compiler pkc, const char *str);
+#define pk_puts(STR) pk_puts_1 (poke_compiler, (STR))
/* Print a formatted string to the terminal. */
-extern void pk_printf (const char *format, ...)
- __attribute__ ((format (printf, 1, 2)));
+extern void pk_printf_1 (pk_compiler pkc, const char *format, ...)
+ __attribute__ ((format (printf, 2, 3)));
extern void pk_vprintf (const char *format, va_list ap);
+#define pk_printf(...) pk_printf_1 (poke_compiler, __VA_ARGS__)
/* Print indentation. */
-extern void pk_term_indent (unsigned int lvl,
- unsigned int step);
+extern void pk_term_indent_1 (pk_compiler pkc, unsigned int lvl,
+ unsigned int step);
+#define pk_term_indent(LVL, STEP) pk_term_indent_1 (poke_compiler, (LVL),
(STEP))
/* Class handling. */
-extern void pk_term_class (const char *class);
-extern int pk_term_end_class (const char *class);
+extern void pk_term_class_1 (pk_compiler pkc, const char *class);
+extern int pk_term_end_class_1 (pk_compiler pkc, const char *class);
+#define pk_term_class(CLS) pk_term_class_1 (poke_compiler, (CLS))
+#define pk_term_end_class(CLS) pk_term_end_class_1 (poke_compiler, (CLS))
/* Hyperlinks. */
-extern void pk_term_hyperlink (const char *url, const char *id);
-extern int pk_term_end_hyperlink (void);
+extern void pk_term_hyperlink_1 (pk_compiler pkc, const char *url, const char
*id);
+extern int pk_term_end_hyperlink_1 (pk_compiler pkc);
+#define pk_term_hyperlink(URL, ID) pk_term_hyperlink_1 (poke_compiler, (URL),
(ID))
+#define pk_term_end_hyperlink() pk_term_end_hyperlink_1 (poke_compiler)
/* Color handling. */
-extern struct pk_color pk_term_get_color (void);
-extern struct pk_color pk_term_get_bgcolor (void);
-extern void pk_term_set_color (struct pk_color color);
-extern void pk_term_set_bgcolor (struct pk_color color);
+extern struct pk_color pk_term_get_color_1 (pk_compiler pkc);
+extern struct pk_color pk_term_get_bgcolor_1 (pk_compiler pkc);
+extern void pk_term_set_color_1 (pk_compiler pkc, struct pk_color color);
+extern void pk_term_set_bgcolor_1 (pk_compiler pkc, struct pk_color color);
+#define pk_term_get_color() pk_term_get_color_1 (poke_compiler)
+#define pk_term_get_bgcolor() pk_term_get_bgcolor_1 (poke_compiler)
+#define pk_term_set_color(COLOR) pk_term_set_color_1 (COLOR)
+#define pk_term_set_bgcolor(COLOR) pk_term_set_bgcolor_1 (COLOR)
/* Paging. */
extern void pk_term_start_pager (void);
diff --git a/poke/poke.c b/poke/poke.c
index ee3b2857..2e2e1c96 100644
--- a/poke/poke.c
+++ b/poke/poke.c
@@ -296,18 +296,18 @@ finalize (void)
static struct pk_term_if poke_term_if =
{
- .flush_fn = pk_term_flush,
- .puts_fn = pk_puts,
- .printf_fn = pk_printf,
- .indent_fn = pk_term_indent,
- .class_fn = pk_term_class,
- .end_class_fn = pk_term_end_class,
- .hyperlink_fn = pk_term_hyperlink,
- .end_hyperlink_fn = pk_term_end_hyperlink,
- .get_color_fn = pk_term_get_color,
- .set_color_fn = pk_term_set_color,
- .get_bgcolor_fn = pk_term_get_bgcolor,
- .set_bgcolor_fn = pk_term_set_bgcolor,
+ .flush_fn = pk_term_flush_1,
+ .puts_fn = pk_puts_1,
+ .printf_fn = pk_printf_1,
+ .indent_fn = pk_term_indent_1,
+ .class_fn = pk_term_class_1,
+ .end_class_fn = pk_term_end_class_1,
+ .hyperlink_fn = pk_term_hyperlink_1,
+ .end_hyperlink_fn = pk_term_end_hyperlink_1,
+ .get_color_fn = pk_term_get_color_1,
+ .set_color_fn = pk_term_set_color_1,
+ .get_bgcolor_fn = pk_term_get_bgcolor_1,
+ .set_bgcolor_fn = pk_term_set_bgcolor_1,
};
const char *
diff --git a/poked/poked.c b/poked/poked.c
index 6320714d..18de8c47 100644
--- a/poked/poked.c
+++ b/poked/poked.c
@@ -702,18 +702,18 @@ tifbuf_init(void)
#endif
static void
-tif_flush (void)
+tif_flush (pk_compiler pkc __attribute__ ((unused)))
{
}
static void
-tif_puts (const char *s)
+tif_puts (pk_compiler pkc __attribute__ ((unused)), const char *s)
{
if (poked_options.debug_p)
printf (">(p) '%s'\n", s);
usock_out (srv, termout_chan, termout_cmdkind, s, strlen (s) + 1);
}
static void
-tif_printf (const char *fmt, ...)
+tif_printf (pk_compiler pkc __attribute__ ((unused)), const char *fmt, ...)
{
va_list ap;
char *data = NULL;
@@ -731,7 +731,8 @@ tif_printf (const char *fmt, ...)
free (data);
}
static void
-tif_indent (unsigned int level, unsigned int step)
+tif_indent (pk_compiler pkc __attribute__ ((unused)), unsigned int level,
+ unsigned int step)
{
size_t len = /*newline*/ 1u + step * level;
char *data;
@@ -744,31 +745,32 @@ tif_indent (unsigned int level, unsigned int step)
free (data);
}
static void
-tif_class (const char *name)
+tif_class (pk_compiler pkc __attribute__ ((unused)), const char *name)
{
if (termout_chan == USOCK_CHAN_OUT_OUT)
usock_out (srv, termout_chan, OUTCMD_CLS_BEGIN, name, strlen (name) + 1);
}
static int
-tif_class_end (const char *name)
+tif_class_end (pk_compiler pkc __attribute__ ((unused)), const char *name)
{
if (termout_chan == USOCK_CHAN_OUT_OUT)
usock_out (srv, termout_chan, OUTCMD_CLS_END, name, strlen (name) + 1);
return 1;
}
static void
-tif_hlink (const char *name, const char *id)
+tif_hlink (pk_compiler pkc __attribute__ ((unused)), const char *name,
+ const char *id)
{
(void)name;
(void)id;
}
static int
-tif_hlink_end (void)
+tif_hlink_end (pk_compiler pkc __attribute__ ((unused)))
{
return 1;
}
static struct pk_color
-tif_color (void)
+tif_color (pk_compiler pkc __attribute__ ((unused)))
{
static struct pk_color c = {
.red = 0,
@@ -778,7 +780,7 @@ tif_color (void)
return c;
}
static struct pk_color
-tif_bgcolor (void)
+tif_bgcolor (pk_compiler pkc __attribute__ ((unused)))
{
static struct pk_color c = {
.red = 255,
@@ -788,12 +790,12 @@ tif_bgcolor (void)
return c;
}
static void
-tif_color_set (struct pk_color c)
+tif_color_set (pk_compiler pkc __attribute__ ((unused)), struct pk_color c)
{
(void)c;
}
static void
-tif_bgcolor_set (struct pk_color c)
+tif_bgcolor_set (pk_compiler pkc __attribute__ ((unused)), struct pk_color c)
{
(void)c;
}
diff --git a/pokefmt/pokefmt.l b/pokefmt/pokefmt.l
index fe57fbf7..74505134 100644
--- a/pokefmt/pokefmt.l
+++ b/pokefmt/pokefmt.l
@@ -362,17 +362,17 @@ pokefmt_opts_free ()
// terminal IO functions
static void
-tif_flush (void)
+tif_flush (pk_compiler pkc __attribute__ ((unused)))
{
fflush (stdout);
}
static void
-tif_puts (const char *s)
+tif_puts (pk_compiler pkc __attribute__ ((unused)), const char *s)
{
printf ("%s", s);
}
static void
-tif_printf (const char *fmt, ...)
+tif_printf (pk_compiler pkc __attribute__ ((unused)), const char *fmt, ...)
{
va_list ap;
@@ -381,36 +381,38 @@ tif_printf (const char *fmt, ...)
va_end (ap);
}
static void
-tif_indent (unsigned int level, unsigned int step)
+tif_indent (pk_compiler pkc __attribute__ ((unused)), unsigned int level,
+ unsigned int step)
{
putchar ('\n');
for (unsigned int i = 0; i < step * level; ++i)
putchar (' ');
}
static void
-tif_class (const char *name)
+tif_class (pk_compiler pkc __attribute__ ((unused)), const char *name)
{
(void)name;
}
static int
-tif_class_end (const char *name)
+tif_class_end (pk_compiler pkc __attribute__ ((unused)), const char *name)
{
(void)name;
return 1;
}
static void
-tif_hlink (const char *name, const char *id)
+tif_hlink (pk_compiler pkc __attribute__ ((unused)), const char *name,
+ const char *id)
{
(void)name;
(void)id;
}
static int
-tif_hlink_end (void)
+tif_hlink_end (pk_compiler pkc __attribute__ ((unused)))
{
return 1;
}
static struct pk_color
-tif_color (void)
+tif_color (pk_compiler pkc __attribute__ ((unused)))
{
static struct pk_color c = {
.red = 0,
@@ -420,7 +422,7 @@ tif_color (void)
return c;
}
static struct pk_color
-tif_bgcolor (void)
+tif_bgcolor (pk_compiler pkc __attribute__ ((unused)))
{
static struct pk_color c = {
.red = 255,
@@ -430,12 +432,12 @@ tif_bgcolor (void)
return c;
}
static void
-tif_color_set (struct pk_color c)
+tif_color_set (pk_compiler pkc __attribute__ ((unused)), struct pk_color c)
{
(void)c;
}
static void
-tif_bgcolor_set (struct pk_color c)
+tif_bgcolor_set (pk_compiler pkc __attribute__ ((unused)), struct pk_color c)
{
(void)c;
}
diff --git a/testsuite/poke.libpoke/term-if.h b/testsuite/poke.libpoke/term-if.h
index dfcece14..0f9d20e6 100644
--- a/testsuite/poke.libpoke/term-if.h
+++ b/testsuite/poke.libpoke/term-if.h
@@ -20,19 +20,18 @@
#include <stdio.h>
static void
-pk_term_flush ()
+pk_term_flush (pk_compiler pkc __attribute__ ((unused)))
{
}
void
-pk_puts (const char *str)
+pk_puts (pk_compiler pkc __attribute__ ((unused)), const char *str)
{
printf ("%s", str);
}
-__attribute__ ((__format__ (__printf__, 1, 2)))
-void
-pk_printf (const char *format, ...)
+__attribute__ ((__format__ (__printf__, 2, 3))) void
+pk_printf (pk_compiler pkc __attribute__ ((unused)), const char *format, ...)
{
va_list ap;
@@ -42,58 +41,59 @@ pk_printf (const char *format, ...)
}
void
-pk_term_indent (unsigned int lvl,
+pk_term_indent (pk_compiler pkc __attribute__ ((unused)), unsigned int lvl,
unsigned int step)
{
printf ("\n%*s", (step * lvl), "");
}
void
-pk_term_class (const char *class)
+pk_term_class (pk_compiler pkc __attribute__ ((unused)), const char *class)
{
}
int
-pk_term_end_class (const char *class)
+pk_term_end_class (pk_compiler pkc __attribute__ ((unused)), const char *class)
{
return 1;
}
void
-pk_term_hyperlink (const char *url, const char *id)
+pk_term_hyperlink (pk_compiler pkc __attribute__ ((unused)), const char *url,
+ const char *id)
{
}
int
-pk_term_end_hyperlink (void)
+pk_term_end_hyperlink (pk_compiler pkc __attribute__ ((unused)))
{
return 1;
}
struct pk_color
-pk_term_get_color (void)
+pk_term_get_color (pk_compiler pkc __attribute__ ((unused)))
{
- struct pk_color inv = {-1,-1,-1};
+ struct pk_color inv = { -1, -1, -1 };
return inv;
}
struct pk_color
-pk_term_get_bgcolor (void)
+pk_term_get_bgcolor (pk_compiler pkc __attribute__ ((unused)))
{
- struct pk_color inv = {-1,-1,-1};
+ struct pk_color inv = { -1, -1, -1 };
return inv;
}
void
-pk_term_set_color (struct pk_color color)
+pk_term_set_color (pk_compiler pkc __attribute__ ((unused)),
+ struct pk_color color)
{
-
}
void
-pk_term_set_bgcolor (struct pk_color color)
+pk_term_set_bgcolor (pk_compiler pkc __attribute__ ((unused)),
+ struct pk_color color)
{
-
}
static struct pk_term_if poke_term_if =
--
2.42.1
- Re: [PATCH 2/3] libpoke: add `pk_{s,g}et_user_data' functions, (continued)
- Re: [PATCH 2/3] libpoke: add `pk_{s,g}et_user_data' functions, Mohammad-Reza Nabipoor, 2023/11/14
- [PATCH 3/3] libpoke, poke, poked, pokefmt: add `pk_compiler' to terminal interface, Mohammad-Reza Nabipoor, 2023/11/13
- Re: [PATCH 3/3] libpoke,poke,poked,pokefmt: add `pk_compiler' to terminal interface, Jose E. Marchesi, 2023/11/14
- Re: [PATCH 1/3] pk-utils: change pk_print_binary func to macro, Jose E. Marchesi, 2023/11/14
- Re: [PATCH 1/3] pk-utils: change pk_print_binary func to macro, Mohammad-Reza Nabipoor, 2023/11/14
- Re: [PATCH 1/3] pk-utils: change pk_print_binary func to macro, Jose E. Marchesi, 2023/11/15
- Re: [PATCH 1/3] pk-utils: change pk_print_binary func to macro, Mohammad-Reza Nabipoor, 2023/11/15
[PATCH] libpoke, poke, poked, pokefmt: add `pk_compiler' to terminal interface, Mohammad-Reza Nabipoor, 2023/11/18
- Re: [PATCH] libpoke, poke, poked, pokefmt: add `pk_compiler' to terminal interface, Mohammad-Reza Nabipoor, 2023/11/20
- Re: [PATCH] libpoke, poke, poked, pokefmt: add `pk_compiler' to terminal interface, Jose E. Marchesi, 2023/11/20
- [PATCH v2] libpoke, poke, poked, pokefmt: add `pk_compiler' to terminal interface,
Mohammad-Reza Nabipoor <=
- Re: [PATCH v2] libpoke,poke,poked,pokefmt: add `pk_compiler' to terminal interface, Jose E. Marchesi, 2023/11/20
- Re: [PATCH v2] libpoke,poke,poked,pokefmt: add `pk_compiler' to terminal interface, Mohammad-Reza Nabipoor, 2023/11/21
- Re: [PATCH v2] libpoke,poke,poked,pokefmt: add `pk_compiler' to terminal interface, Mohammad-Reza Nabipoor, 2023/11/21