diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2013-10-05 22:08:12 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2013-10-05 22:08:12 +0000 |
commit | a572afd89f35bf2a05cba26f422436714a0de4de (patch) | |
tree | d357d349c277f8b918065cab513078e2e229d0a6 /libmandoc.h | |
parent | a8f58a55c9e1fd8a3804c52ca3873c8291135319 (diff) | |
download | mandoc-a572afd89f35bf2a05cba26f422436714a0de4de.tar.gz mandoc-a572afd89f35bf2a05cba26f422436714a0de4de.tar.zst mandoc-a572afd89f35bf2a05cba26f422436714a0de4de.zip |
Support setting arbitrary roff(7) number registers,
preserving read support for the ".nr nS" SYNOPSIS state register.
Inspired by NetBSD roff.c rev. 1.18 (Christos Zoulas, March 21, 2013),
but implemented differently. I don't want to have yet another different
implementation of a hash table in mandoc - it would be the second one
in roff.c alone and the fifth one in mandoc grand total.
Instead, i designed and implemented roff_setreg() and roff_getreg()
to be similar to roff_setstrn() and roff_getstrn().
Once we feel the need to optimize, we can introduce one common
hash table implementation for everything in mandoc.
Diffstat (limited to 'libmandoc.h')
-rw-r--r-- | libmandoc.h | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/libmandoc.h b/libmandoc.h index 9b3ffee1..df2c8fc6 100644 --- a/libmandoc.h +++ b/libmandoc.h @@ -1,6 +1,7 @@ -/* $Id: libmandoc.h,v 1.32 2012/11/19 17:57:23 schwarze Exp $ */ +/* $Id: libmandoc.h,v 1.33 2013/10/05 22:08:12 schwarze Exp $ */ /* * Copyright (c) 2009, 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv> + * Copyright (c) 2013 Ingo Schwarze <schwarze@openbsd.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -29,11 +30,6 @@ enum rofferr { ROFF_ERR /* badness: puke and stop */ }; -enum regs { - REG_nS = 0, /* nS register */ - REG__MAX -}; - __BEGIN_DECLS struct roff; @@ -72,9 +68,8 @@ void roff_reset(struct roff *); enum rofferr roff_parseln(struct roff *, int, char **, size_t *, int, int *); void roff_endparse(struct roff *); -int roff_regisset(const struct roff *, enum regs); -unsigned int roff_regget(const struct roff *, enum regs); -void roff_regunset(struct roff *, enum regs); +void roff_setreg(struct roff *, const char *, unsigned int); +unsigned int roff_getreg(const struct roff *, const char *); char *roff_strdup(const struct roff *, const char *); int roff_getcontrol(const struct roff *, const char *, int *); |