-
Notifications
You must be signed in to change notification settings - Fork 5
/
tglib.h
62 lines (49 loc) · 1.68 KB
/
tglib.h
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
/* Copyright 2017 PrismTech Limited
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. */
#ifndef __ospli_osplo__tglib__
#define __ospli_osplo__tglib__
#include <stddef.h>
#include <dds_dcps.h>
struct tgtype;
struct tgtopic_key {
char *name; /* field name */
size_t off; /* from start of data */
const struct tgtype *type; /* aliases tgtopic::type */
};
struct tgtopic {
char *name;
size_t size;
struct tgtype *type;
unsigned nkeys;
struct tgtopic_key *keys;
};
enum tgprint_mode {
TGPM_DENSE,
TGPM_SPACE,
TGPM_FIELDS,
TGPM_MULTILINE
};
struct tgstring {
char *buf;
size_t pos;
size_t size;
size_t chop;
int chopped;
};
void tgstring_init(struct tgstring *s, size_t chop);
void tgstring_fini(struct tgstring *s);
struct tgtopic *tgnew(DDS_Topic tp, int printtype);
void tgfree(struct tgtopic *tp);
int tgprint(struct tgstring *s, const struct tgtopic *tp, const void *data, enum tgprint_mode mode);
int tgprintkey(struct tgstring *s, const struct tgtopic *tp, const void *keydata, enum tgprint_mode mode);
void *tgscan(const struct tgtopic *tp, const char *src, char **endp);
void tgfreedata(const struct tgtopic *tp, void *data);
#endif /* defined(__ospli_osplo__tglib__) */