]> git.lizzy.rs Git - dragonstd.git/commitdiff
Add vectors with 4 elements
authorElias Fleckenstein <eliasfleckenstein@web.de>
Fri, 24 Sep 2021 11:54:37 +0000 (13:54 +0200)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Fri, 24 Sep 2021 11:54:37 +0000 (13:54 +0200)
number.c
number.h

index 5835e9a577a4fdf6baecda61a4476b8d294151b3..54a4f9fa421927ae1c8b8a02390b8304eeb35a96 100644 (file)
--- a/number.c
+++ b/number.c
@@ -76,6 +76,28 @@ bool read_full(int fd, char *buffer, size_t size)
        v3 ## type v3 ## type ## _add(v3 ## type a, v3 ## type b) \
        { \
                return (v3 ## type) {a.x + b.x, a.y + b.y, a.z + b.z}; \
+       } \
+       bool read_v4 ## type(int fd, v4 ## type *ptr) \
+       { \
+               READVEC(type, 4) \
+               ptr->x = buf[0]; \
+               ptr->y = buf[1]; \
+               ptr->z = buf[2]; \
+               ptr->w = buf[3]; \
+               return true; \
+       } \
+       bool write_v4 ## type(int fd, v4 ## type val) \
+       { \
+               type vec[4] = {val.x, val.y, val.z, val.w}; \
+               WRITEVEC(type, 4) \
+       } \
+       bool v4 ## type ## _equals(v4 ## type a, v4 ## type b) \
+       { \
+               return a.x == b.x && a.y == b.y && a.z == b.z && a.w == b.w; \
+       } \
+       v4 ## type v4 ## type ## _add(v4 ## type a, v4 ## type b) \
+       { \
+               return (v4 ## type) {a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w}; \
        }
 
 #define DEFTYP(type, bits) \
index 57a000bca90b0c37d418a6c6dc41d38755400c5b..4bca5762c1e922aac83df720fade192ef05be8b2 100644 (file)
--- a/number.h
+++ b/number.h
@@ -24,7 +24,12 @@ bool read_full(int fd, char *buffer, size_t size);
        DEFRW(v3 ## type) \
        DEFBOX(3 ## type) \
        bool v3 ## type ## _equals(v3 ## type a, v3 ## type b); \
-       v3 ## type v3 ## type ## _add(v3 ## type a, v3 ## type b);
+       v3 ## type v3 ## type ## _add(v3 ## type a, v3 ## type b); \
+       typedef struct {type x, y, z, w;} v4 ## type; \
+       DEFRW(v4 ## type) \
+       DEFBOX(4 ## type) \
+       bool v4 ## type ## _equals(v4 ## type a, v4 ## type b); \
+       v4 ## type v4 ## type ## _add(v4 ## type a, v4 ## type b);
 
 #define DEFTYP(from, to) \
        typedef from to; \