Use statically known types, use hash for formats
[babeltrace.git] / include / babeltrace / format.h
CommitLineData
fc93b2bd
MD
1#ifndef _BABELTRACE_FORMAT_H
2#define _BABELTRACE_FORMAT_H
3
4/*
5 * BabelTrace
6 *
7 * Trace Format Header
8 *
9 * Copyright (c) 2010 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 *
11 * This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Lesser General Public
13 * License as published by the Free Software Foundation; either
14 * version 2.1 of the License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 * Lesser General Public License for more details.
20 *
21 * You should have received a copy of the GNU Lesser General Public
22 * License along with this library; if not, write to the Free Software
23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 */
25
26#include <stdint.h>
27#include <glib.h>
28
29struct format {
30 GQuark name;
31
32 uint64_t (*uint_read)(const uint8_t *ptr, size_t len, int byte_order);
33 int64_t (*int_read)(const uint8_t *ptr, size_t len, int byte_order);
34 size_t (*uint_write)(uint8_t *ptr, size_t len, int byte_order, uint64_t v);
35 size_t (*int_write)(uint8_t *ptr, size_t len, int byte_order, int64_t v);
36
37 uint64_t (*bitfield_unsigned_read)(const unsigned char *ptr,
38 unsigned long start, unsigned long len,
39 int byte_order);
40 int64_t (*bitfield_signed_read)(const unsigned char *ptr,
41 unsigned long start, unsigned long len,
42 int byte_order);
43 size_t (*bitfield_unsigned_write)(unsigned char *ptr,
44 unsigned long start, unsigned long len,
45 int byte_order, uint64_t v);
46 size_t (*bitfield_signed_write)(unsigned char *ptr,
47 unsigned long start, unsigned long len,
48 int byte_order, int64_t v);
49
50
51 void (*float_copy)(unsigned char *destp, const struct type_class_float *dest,
52 const unsigned char *srcp, const struct type_class_float *src);
53
54 size_t (*string_copy)(unsigned char *dest, const unsigned char *src);
55
56 GQuark (*enum_uint_to_quark)(const struct enum_table *table, uint64_t v);
57 GQuark (*enum_int_to_quark)(const struct enum_table *table, uint64_t v);
58 uint64_t (*enum_quark_to_uint)(size_t len, int byte_order, GQuark q);
59 int64_t (*enum_quark_to_int)(size_t len, int byte_order, GQuark q);
60};
61
62struct format *bt_lookup_format(GQuark qname);
63int bt_register_format(const struct format *format);
64
65/* TBD: format unregistration */
66
67#endif /* _BABELTRACE_FORMAT_H */
This page took 0.024418 seconds and 4 git commands to generate.