/usr/include/sfi/sfistore.hh is in libbse-dev 0.7.8-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html
#ifndef __SFI_STORE_H__
#define __SFI_STORE_H__
#include <sfi/sfivalues.hh>
#include <sfi/sfiring.hh>
G_BEGIN_DECLS
/* --- typedefs and structures --- */
typedef gint /* -errno || length */ (*SfiStoreReadBin) (gpointer data,
void *buffer,
guint blength);
typedef struct
{
GString *text;
guint indent;
SfiRing *bblocks;
guint needs_break : 1;
guint flushed : 1;
gchar comment_start;
} SfiWStore;
#define SFI_TOKEN_UNMATCHED ((GTokenType) (G_TOKEN_LAST + 1))
#define SFI_TOKEN_LAST ((GTokenType) (SFI_TOKEN_UNMATCHED + 1))
typedef struct _SfiRStore SfiRStore;
typedef GTokenType (*SfiStoreParser) (gpointer context_data,
SfiRStore *rstore, /* parser_this */
GScanner *scanner,
gpointer user_data);
struct _SfiRStore
{
GScanner *scanner;
gchar *fname;
gint close_fd;
gpointer parser_this;
SfiNum bin_offset;
};
/* --- writable store --- */
SfiWStore* sfi_wstore_new (void);
void sfi_wstore_destroy (SfiWStore *wstore);
void sfi_wstore_push_level (SfiWStore *wstore);
void sfi_wstore_pop_level (SfiWStore *wstore);
void sfi_wstore_break (SfiWStore *wstore);
void sfi_wstore_puts (SfiWStore *wstore,
const gchar *string);
void sfi_wstore_putc (SfiWStore *wstore,
gchar character);
void sfi_wstore_printf (SfiWStore *wstore,
const gchar *format,
...) G_GNUC_PRINTF (2, 3);
void sfi_wstore_putf (SfiWStore *wstore,
gfloat vfloat);
void sfi_wstore_putd (SfiWStore *wstore,
gdouble vdouble);
void sfi_wstore_put_value (SfiWStore *wstore,
const GValue *value);
void sfi_wstore_put_param (SfiWStore *wstore,
const GValue *value,
GParamSpec *pspec);
void sfi_wstore_put_binary (SfiWStore *wstore,
SfiStoreReadBin reader,
gpointer data,
GDestroyNotify destroy);
gint /*-errno*/ sfi_wstore_flush_fd (SfiWStore *wstore,
gint fd);
const gchar* sfi_wstore_peek_text (SfiWStore *wstore,
guint *length);
/* --- readable store --- */
SfiRStore* sfi_rstore_new (void);
SfiRStore* sfi_rstore_new_open (const gchar *fname);
void sfi_rstore_destroy (SfiRStore *rstore);
void sfi_rstore_input_fd (SfiRStore *rstore,
gint fd,
const gchar *fname);
void sfi_rstore_input_text (SfiRStore *rstore,
const gchar *text,
const gchar *text_name);
gboolean sfi_rstore_eof (SfiRStore *rstore);
GTokenType sfi_rstore_parse_param (SfiRStore *rstore,
GValue *value,
GParamSpec *pspec);
GTokenType sfi_rstore_ensure_bin_offset (SfiRStore *rstore);
guint64 sfi_rstore_get_bin_offset (SfiRStore *rstore);
GTokenType sfi_rstore_parse_binary (SfiRStore *rstore,
SfiNum *offset_p,
SfiNum *length_p);
GTokenType sfi_rstore_parse_zbinary (SfiRStore *rstore,
SfiNum *offset_p,
SfiNum *length_p);
GTokenType sfi_rstore_parse_until (SfiRStore *rstore,
GTokenType closing_token,
gpointer context_data,
SfiStoreParser try_statement,
gpointer user_data);
guint sfi_rstore_parse_all (SfiRStore *rstore,
gpointer context_data,
SfiStoreParser try_statement,
gpointer user_data);
void sfi_rstore_error (SfiRStore *rstore,
const gchar *format,
...) G_GNUC_PRINTF (2,3);
void sfi_rstore_unexp_token (SfiRStore *rstore,
GTokenType expected_token);
void sfi_rstore_warn (SfiRStore *rstore,
const gchar *format,
...) G_GNUC_PRINTF (2,3);
GTokenType sfi_rstore_warn_skip (SfiRStore *rstore,
const gchar *format,
...) G_GNUC_PRINTF (2,3);
typedef gboolean (SfiRStoreQuickScan) (SfiRStore *rstore,
gpointer data);
void sfi_rstore_quick_scan (SfiRStore *rstore,
const gchar *identifier,
SfiRStoreQuickScan qcheck,
gpointer data);
/* --- convenience --- */
#define sfi_scanner_parse_or_return(scanner, token) G_STMT_START { \
GTokenType _t = GTokenType (token); \
if (g_scanner_get_next_token (scanner) != _t) \
return _t; \
} G_STMT_END
#define sfi_scanner_peek_or_return(scanner, token) G_STMT_START { \
GTokenType _t = GTokenType (token); \
GScanner *__s = (scanner); \
if (g_scanner_peek_next_token (__s) != _t) \
{ \
g_scanner_get_next_token (__s); /* advance to error pos */ \
return _t; \
} \
} G_STMT_END
G_END_DECLS
#endif /* __SFI_STORE_H__ */
/* vim:set ts=8 sts=2 sw=2: */
|