-/* $Id: libman.h,v 1.18 2009/08/19 12:15:58 kristaps Exp $ */
+/* $Id: libman.h,v 1.21 2009/09/16 14:40:56 kristaps Exp $ */
/*
* Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
*
struct man {
void *data;
struct man_cb cb;
- void *htab;
int pflags;
int flags;
#define MAN_HALT (1 << 0)
#define MAN_ELINE (1 << 1) /* Next-line element scope. */
#define MAN_BLINE (1 << 2) /* Next-line block scope. */
+#define MAN_LITERAL (1 << 3) /* Literal input. */
enum man_next next;
struct man_node *last;
struct man_node *first;
WMACROFORM,
WEXITSCOPE,
WNOSCOPE,
+ WOLITERAL,
+ WNLITERAL,
WERRMAX
};
int (*fp)(MACRO_PROT_ARGS);
int flags;
#define MAN_SCOPED (1 << 0)
-#define MAN_EXPLICIT (1 << 1)
+#define MAN_EXPLICIT (1 << 1) /* See blk_imp(). */
+#define MAN_FSCOPED (1 << 2) /* See blk_imp(). */
};
extern const struct man_macro *const man_macros;
int man_elem_alloc(struct man *, int, int, int);
void man_node_free(struct man_node *);
void man_node_freelist(struct man_node *);
-void *man_hash_alloc(void);
-int man_hash_find(const void *, const char *);
-void man_hash_free(void *);
+void man_hash_init(void);
+int man_hash_find(const char *);
int man_macroend(struct man *);
int man_args(struct man *, int, int *, char *, char **);
#define ARGS_ERROR (-1)
int man_valid_post(struct man *);
int man_valid_pre(struct man *, const struct man_node *);
int man_action_post(struct man *);
+int man_action_pre(struct man *, struct man_node *);
int man_unscope(struct man *, const struct man_node *);
__END_DECLS