Add bitfield functions wrapping actual macros
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Mon, 25 May 2015 23:44:23 +0000 (19:44 -0400)
committerPhilippe Proulx <eeppeliteloop@gmail.com>
Tue, 26 May 2015 00:18:25 +0000 (20:18 -0400)
Not inlining macro expansions should save some space in
the program section.

barectf/cli.py
barectf/templates.py
doc/examples/simple/Makefile

index 3dd87fa0a8f4fcb40f0a7d144e278b37e7505955..8aea22e9bd3dcd2042dff551beb9c05745a92ece 100644 (file)
@@ -863,11 +863,11 @@ class BarectfCodeGenerator:
     #   integer:  TSDL integer
     def _write_field_integer(self, fname, src_name, integer, scope_prefix=None):
         bo = self._BO_SUFFIXES_MAP[integer.byte_order]
-        t = self._get_obj_param_ctype(integer)
         length = self._get_obj_size(integer)
+        signed = 'signed' if integer.signed else 'unsigned'
 
         return self._template_to_clines(barectf.templates.WRITE_INTEGER,
-                                        sz=length, bo=bo, type=t,
+                                        signed=signed, sz=length, bo=bo,
                                         src_name=src_name)
 
     # Returns the C lines for writing a TSDL enumeration field.
@@ -898,7 +898,7 @@ class BarectfCodeGenerator:
         src_name_casted = '*(({}*) &{})'.format(t, src_name)
 
         return self._template_to_clines(barectf.templates.WRITE_INTEGER,
-                                        sz=length, bo=bo, type=t,
+                                        signed='unsigned', sz=length, bo=bo,
                                         src_name=src_name_casted)
 
     # Returns the C lines for writing either a TSDL array field or a
index 4e5209820ec5b798bce654028c1b4c8564f6e328..2723f91c82df4ed4aa1aeb7e00e11a499d2ed0c1 100644 (file)
@@ -37,7 +37,7 @@ FUNC_TRACE = """{si}int {prefix}{sid}_trace_{evname}(
 )"""
 
 WRITE_INTEGER = """{ucprefix}_CHK_OFFSET_V(ctx->at, ctx->packet_size, {sz});
-{prefix}_bt_bitfield_write_{bo}(ctx->buf, uint8_t, ctx->at, {sz}, {src_name});
+{prefix}_write_integer_{signed}_{bo}(ctx->buf, ctx->at, {sz}, {src_name});
 ctx->at += {sz};"""
 
 HEADER = """#ifndef _{ucprefix}_H
@@ -322,5 +322,29 @@ do {                                                                       \\
 
 #endif
 
+static
+void $prefix$_write_integer_signed_le(void *ptr, uint32_t at, uint32_t len, int64_t v)
+{
+       $prefix$_bt_bitfield_write_le(ptr, uint8_t, at, len, v);
+}
+
+static
+void $prefix$_write_integer_unsigned_le(void *ptr, uint32_t at, uint32_t len, uint64_t v)
+{
+       $prefix$_bt_bitfield_write_le(ptr, uint8_t, at, len, v);
+}
+
+static
+void $prefix$_write_integer_signed_be(void *ptr, uint32_t at, uint32_t len, int64_t v)
+{
+       $prefix$_bt_bitfield_write_be(ptr, uint8_t, at, len, v);
+}
+
+static
+void $prefix$_write_integer_unsigned_be(void *ptr, uint32_t at, uint32_t len, uint64_t v)
+{
+       $prefix$_bt_bitfield_write_be(ptr, uint8_t, at, len, v);
+}
+
 #endif /* _$PREFIX$_BITFIELD_H */
 """
index 058f0383c24aa200270c35f4ca7e9fe860945a09..6f04559f4f85b5cb1478eec7c3bdd4a8920b5aff 100644 (file)
@@ -1,7 +1,7 @@
 BARECTF ?= barectf
 RM = rm -rf
 
-CFLAGS = -O2 -Wall
+CFLAGS = -O2
 
 TARGET = simple
 OBJS = $(TARGET).o barectf.o
This page took 0.027934 seconds and 4 git commands to generate.