aboutsummaryrefslogtreecommitdiff
path: root/src/solvers/coord/common.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/solvers/coord/common.h')
-rw-r--r--src/solvers/coord/common.h25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/solvers/coord/common.h b/src/solvers/coord/common.h
index d570b6d..8553658 100644
--- a/src/solvers/coord/common.h
+++ b/src/solvers/coord/common.h
@@ -4,9 +4,9 @@ coord_t *all_coordinates[] = {
4}; 4};
5 5
6STATIC void append_coord_name(const coord_t *, char *); 6STATIC void append_coord_name(const coord_t *, char *);
7STATIC coord_t *parse_coord(const char *, int); 7STATIC coord_t *parse_coord(size_t n, const char [n]);
8STATIC uint8_t parse_axis(const char *, int); 8STATIC uint8_t parse_axis(size_t n, const char [n]);
9STATIC void parse_coord_and_axis(const char *, int, coord_t **, uint8_t *); 9STATIC void parse_coord_and_axis(size_t n, const char [n], coord_t **, uint8_t *);
10STATIC int64_t dataid_coord(const char *, char [static NISSY_DATAID_SIZE]); 10STATIC int64_t dataid_coord(const char *, char [static NISSY_DATAID_SIZE]);
11 11
12STATIC void 12STATIC void
@@ -22,7 +22,7 @@ append_coord_name(const coord_t *coord, char *str)
22} 22}
23 23
24STATIC coord_t * 24STATIC coord_t *
25parse_coord(const char *coord, int n) 25parse_coord(size_t n, const char coord[n])
26{ 26{
27 int i; 27 int i;
28 28
@@ -34,7 +34,7 @@ parse_coord(const char *coord, int n)
34} 34}
35 35
36STATIC uint8_t 36STATIC uint8_t
37parse_axis(const char *axis, int n) 37parse_axis(size_t n, const char axis[n])
38{ 38{
39 if (!strncmp(axis, "UD", n) || !strncmp(axis, "DU", n)) { 39 if (!strncmp(axis, "UD", n) || !strncmp(axis, "DU", n)) {
40 return AXIS_UD; 40 return AXIS_UD;
@@ -48,19 +48,24 @@ parse_axis(const char *axis, int n)
48} 48}
49 49
50STATIC void 50STATIC void
51parse_coord_and_axis(const char *str, int n, coord_t **coord, uint8_t *axis) 51parse_coord_and_axis(
52 size_t n,
53 const char str[n],
54 coord_t **coord,
55 uint8_t *axis
56)
52{ 57{
53 int i; 58 size_t i;
54 59
55 for (i = 0; i < n; i++) 60 for (i = 0; i < n; i++)
56 if (str[i] == '_') 61 if (str[i] == '_')
57 break; 62 break;
58 63
59 if (coord != NULL) 64 if (coord != NULL)
60 *coord = parse_coord(str, i); 65 *coord = parse_coord(i, str);
61 66
62 if (axis != NULL) 67 if (axis != NULL)
63 *axis = i == n ? UINT8_ERROR : parse_axis(str+i+1, n-i-1); 68 *axis = i == n ? UINT8_ERROR : parse_axis(n-i-1, str+i+1);
64} 69}
65 70
66STATIC int64_t 71STATIC int64_t
@@ -68,7 +73,7 @@ dataid_coord(const char *ca, char dataid[static NISSY_DATAID_SIZE])
68{ 73{
69 coord_t *c; 74 coord_t *c;
70 75
71 parse_coord_and_axis(ca, strlen(ca), &c, NULL); 76 parse_coord_and_axis(strlen(ca), ca, &c, NULL);
72 77
73 if (c == NULL) { 78 if (c == NULL) {
74 LOG("dataid_coord: cannot parse coordinate from '%s'\n", ca); 79 LOG("dataid_coord: cannot parse coordinate from '%s'\n", ca);

Generated with cgit - Back to sebastiano.tronto.net