diff --git a/libkc3/tag_band.c b/libkc3/tag_band.c
index 214640b..e58f562 100644
--- a/libkc3/tag_band.c
+++ b/libkc3/tag_band.c
@@ -14,81 +14,81 @@
#include "integer.h"
#include "tag.h"
-s_tag * tag_band (const s_tag *a, const s_tag *b, s_tag *result)
+s_tag * tag_band (const s_tag *a, const s_tag *b, s_tag *dest)
{
s_integer tmp = {0};
s_integer tmp2 = {0};
assert(a);
assert(b);
- assert(result);
+ assert(dest);
switch (a->type) {
case TAG_INTEGER:
switch (b->type) {
case TAG_INTEGER:
- result->type = TAG_INTEGER;
+ dest->type = TAG_INTEGER;
integer_band(&a->data.integer, &b->data.integer,
- &result->data.integer);
- return result;
+ &dest->data.integer);
+ return tag_integer_reduce(dest);
case TAG_SW:
integer_init_sw(&tmp, b->data.sw);
- result->type = TAG_INTEGER;
- integer_band(&a->data.integer, &tmp, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&a->data.integer, &tmp, &dest->data.integer);
integer_clean(&tmp);
- return result;
+ return tag_integer_reduce(dest);
case TAG_S64:
integer_init_s64(&tmp, b->data.s64);
- result->type = TAG_INTEGER;
- integer_band(&a->data.integer, &tmp, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&a->data.integer, &tmp, &dest->data.integer);
integer_clean(&tmp);
- return result;
+ return tag_integer_reduce(dest);
case TAG_S32:
integer_init_s32(&tmp, b->data.s32);
- result->type = TAG_INTEGER;
- integer_band(&a->data.integer, &tmp, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&a->data.integer, &tmp, &dest->data.integer);
integer_clean(&tmp);
- return result;
+ return tag_integer_reduce(dest);
case TAG_S16:
integer_init_s16(&tmp, b->data.s16);
- result->type = TAG_INTEGER;
- integer_band(&a->data.integer, &tmp, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&a->data.integer, &tmp, &dest->data.integer);
integer_clean(&tmp);
- return result;
+ return tag_integer_reduce(dest);
case TAG_S8:
integer_init_s8(&tmp, b->data.s8);
- result->type = TAG_INTEGER;
- integer_band(&a->data.integer, &tmp, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&a->data.integer, &tmp, &dest->data.integer);
integer_clean(&tmp);
- return result;
+ return tag_integer_reduce(dest);
case TAG_U8:
integer_init_u8(&tmp, b->data.u8);
- result->type = TAG_INTEGER;
- integer_band(&a->data.integer, &tmp, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&a->data.integer, &tmp, &dest->data.integer);
integer_clean(&tmp);
- return result;
+ return tag_integer_reduce(dest);
case TAG_U16:
integer_init_u16(&tmp, b->data.u16);
- result->type = TAG_INTEGER;
- integer_band(&a->data.integer, &tmp, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&a->data.integer, &tmp, &dest->data.integer);
integer_clean(&tmp);
- return result;
+ return tag_integer_reduce(dest);
case TAG_U32:
integer_init_u32(&tmp, b->data.u32);
- result->type = TAG_INTEGER;
- integer_band(&a->data.integer, &tmp, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&a->data.integer, &tmp, &dest->data.integer);
integer_clean(&tmp);
- return result;
+ return tag_integer_reduce(dest);
case TAG_U64:
integer_init_u64(&tmp, b->data.u64);
- result->type = TAG_INTEGER;
- integer_band(&a->data.integer, &tmp, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&a->data.integer, &tmp, &dest->data.integer);
integer_clean(&tmp);
- return result;
+ return tag_integer_reduce(dest);
case TAG_UW:
integer_init_uw(&tmp, b->data.uw);
- result->type = TAG_INTEGER;
- integer_band(&a->data.integer, &tmp, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&a->data.integer, &tmp, &dest->data.integer);
integer_clean(&tmp);
- return result;
+ return tag_integer_reduce(dest);
default:
goto error;
}
@@ -98,30 +98,40 @@ s_tag * tag_band (const s_tag *a, const s_tag *b, s_tag *result)
case TAG_INTEGER:
integer_init_sw(&tmp, a->data.sw);
integer_band(&tmp, &b->data.integer, &tmp2);
- tag_init_sw(result, integer_to_sw(&tmp2));
+ tag_init_sw(dest, integer_to_sw(&tmp2));
integer_clean(&tmp);
integer_clean(&tmp2);
- return result;
+ return tag_integer_reduce(dest);
case TAG_SW:
- return tag_init_sw(result, a->data.sw & b->data.sw);
+ tag_init_sw(dest, a->data.sw & b->data.sw);
+ return tag_integer_reduce(dest);
case TAG_S64:
- return tag_init_sw(result, a->data.sw & b->data.s64);
+ tag_init_sw(dest, a->data.sw & b->data.s64);
+ return tag_integer_reduce(dest);
case TAG_S32:
- return tag_init_sw(result, a->data.sw & b->data.s32);
+ tag_init_sw(dest, a->data.sw & b->data.s32);
+ return tag_integer_reduce(dest);
case TAG_S16:
- return tag_init_sw(result, a->data.sw & b->data.s16);
+ tag_init_sw(dest, a->data.sw & b->data.s16);
+ return tag_integer_reduce(dest);
case TAG_S8:
- return tag_init_sw(result, a->data.sw & b->data.s8);
+ tag_init_sw(dest, a->data.sw & b->data.s8);
+ return tag_integer_reduce(dest);
case TAG_U8:
- return tag_init_sw(result, a->data.sw & b->data.u8);
+ tag_init_sw(dest, a->data.sw & b->data.u8);
+ return tag_integer_reduce(dest);
case TAG_U16:
- return tag_init_sw(result, a->data.sw & b->data.u16);
+ tag_init_sw(dest, a->data.sw & b->data.u16);
+ return tag_integer_reduce(dest);
case TAG_U32:
- return tag_init_sw(result, a->data.sw & b->data.u32);
+ tag_init_sw(dest, a->data.sw & b->data.u32);
+ return tag_integer_reduce(dest);
case TAG_U64:
- return tag_init_sw(result, a->data.sw & b->data.u64);
+ tag_init_sw(dest, a->data.sw & b->data.u64);
+ return tag_integer_reduce(dest);
case TAG_UW:
- return tag_init_sw(result, a->data.sw & b->data.uw);
+ tag_init_sw(dest, a->data.sw & b->data.uw);
+ return tag_integer_reduce(dest);
default:
goto error;
}
@@ -130,42 +140,50 @@ s_tag * tag_band (const s_tag *a, const s_tag *b, s_tag *result)
switch (b->type) {
case TAG_INTEGER:
integer_init_s64(&tmp, a->data.s64);
- result->type = TAG_INTEGER;
- integer_band(&tmp, &b->data.integer, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&tmp, &b->data.integer, &dest->data.integer);
integer_clean(&tmp);
- return result;
+ return tag_integer_reduce(dest);
case TAG_SW:
- return tag_init_s64(result, a->data.s64 & b->data.sw);
+ tag_init_s64(dest, a->data.s64 & b->data.sw);
+ return tag_integer_reduce(dest);
case TAG_S64:
- return tag_init_s64(result, a->data.s64 & b->data.s64);
+ tag_init_s64(dest, a->data.s64 & b->data.s64);
+ return tag_integer_reduce(dest);
case TAG_S32:
- return tag_init_s64(result, a->data.s64 & b->data.s32);
+ tag_init_s64(dest, a->data.s64 & b->data.s32);
+ return tag_integer_reduce(dest);
case TAG_S16:
- return tag_init_s64(result, a->data.s64 & b->data.s16);
+ tag_init_s64(dest, a->data.s64 & b->data.s16);
+ return tag_integer_reduce(dest);
case TAG_S8:
- return tag_init_s64(result, a->data.s64 & b->data.s8);
+ tag_init_s64(dest, a->data.s64 & b->data.s8);
+ return tag_integer_reduce(dest);
case TAG_U8:
- return tag_init_s64(result, a->data.s64 & b->data.u8);
+ tag_init_s64(dest, a->data.s64 & b->data.u8);
+ return tag_integer_reduce(dest);
case TAG_U16:
- return tag_init_s64(result, a->data.s64 & b->data.u16);
+ tag_init_s64(dest, a->data.s64 & b->data.u16);
+ return tag_integer_reduce(dest);
case TAG_U32:
- return tag_init_s64(result, a->data.s64 & b->data.u32);
+ tag_init_s64(dest, a->data.s64 & b->data.u32);
+ return tag_integer_reduce(dest);
case TAG_U64:
integer_init_s64(&tmp, a->data.s64);
integer_init_u64(&tmp2, b->data.u64);
- result->type = TAG_INTEGER;
- integer_band(&tmp, &tmp2, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&tmp, &tmp2, &dest->data.integer);
integer_clean(&tmp);
integer_clean(&tmp2);
- return result;
+ return tag_integer_reduce(dest);
case TAG_UW:
integer_init_s64(&tmp, a->data.s64);
integer_init_uw(&tmp2, b->data.uw);
- result->type = TAG_INTEGER;
- integer_band(&tmp, &tmp2, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&tmp, &tmp2, &dest->data.integer);
integer_clean(&tmp);
integer_clean(&tmp2);
- return result;
+ return tag_integer_reduce(dest);
default:
goto error;
}
@@ -174,42 +192,50 @@ s_tag * tag_band (const s_tag *a, const s_tag *b, s_tag *result)
switch (b->type) {
case TAG_INTEGER:
integer_init_s32(&tmp, a->data.s32);
- result->type = TAG_INTEGER;
- integer_band(&tmp, &b->data.integer, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&tmp, &b->data.integer, &dest->data.integer);
integer_clean(&tmp);
- return result;
+ return tag_integer_reduce(dest);
case TAG_SW:
- return tag_init_sw(result, a->data.s32 & b->data.sw);
+ tag_init_sw(dest, a->data.s32 & b->data.sw);
+ return tag_integer_reduce(dest);
case TAG_S64:
- return tag_init_s64(result, a->data.s32 & b->data.s64);
+ tag_init_s64(dest, a->data.s32 & b->data.s64);
+ return tag_integer_reduce(dest);
case TAG_S32:
- return tag_init_s32(result, a->data.s32 & b->data.s32);
+ tag_init_s32(dest, a->data.s32 & b->data.s32);
+ return tag_integer_reduce(dest);
case TAG_S16:
- return tag_init_s32(result, a->data.s32 & b->data.s16);
+ tag_init_s32(dest, a->data.s32 & b->data.s16);
+ return tag_integer_reduce(dest);
case TAG_S8:
- return tag_init_s32(result, a->data.s32 & b->data.s8);
+ tag_init_s32(dest, a->data.s32 & b->data.s8);
+ return tag_integer_reduce(dest);
case TAG_U8:
- return tag_init_s32(result, a->data.s32 & b->data.u8);
+ tag_init_s32(dest, a->data.s32 & b->data.u8);
+ return tag_integer_reduce(dest);
case TAG_U16:
- return tag_init_s32(result, a->data.s32 & b->data.u16);
+ tag_init_s32(dest, a->data.s32 & b->data.u16);
+ return tag_integer_reduce(dest);
case TAG_U32:
- return tag_init_s64(result, a->data.s32 & b->data.u32);
+ tag_init_s64(dest, a->data.s32 & b->data.u32);
+ return tag_integer_reduce(dest);
case TAG_U64:
integer_init_s32(&tmp, a->data.s32);
integer_init_u64(&tmp2, b->data.u64);
- result->type = TAG_INTEGER;
- integer_band(&tmp, &tmp2, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&tmp, &tmp2, &dest->data.integer);
integer_clean(&tmp);
integer_clean(&tmp2);
- return result;
+ return tag_integer_reduce(dest);
case TAG_UW:
integer_init_s32(&tmp, a->data.s32);
integer_init_uw(&tmp2, b->data.uw);
- result->type = TAG_INTEGER;
- integer_band(&tmp, &tmp2, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&tmp, &tmp2, &dest->data.integer);
integer_clean(&tmp);
integer_clean(&tmp2);
- return result;
+ return tag_integer_reduce(dest);
default:
goto error;
}
@@ -218,42 +244,50 @@ s_tag * tag_band (const s_tag *a, const s_tag *b, s_tag *result)
switch (b->type) {
case TAG_INTEGER:
integer_init_s16(&tmp, a->data.s16);
- result->type = TAG_INTEGER;
- integer_band(&tmp, &b->data.integer, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&tmp, &b->data.integer, &dest->data.integer);
integer_clean(&tmp);
- return result;
+ return tag_integer_reduce(dest);
case TAG_SW:
- return tag_init_sw(result, a->data.s16 & b->data.sw);
+ tag_init_sw(dest, a->data.s16 & b->data.sw);
+ return tag_integer_reduce(dest);
case TAG_S64:
- return tag_init_s64(result, a->data.s16 & b->data.s64);
+ tag_init_s64(dest, a->data.s16 & b->data.s64);
+ return tag_integer_reduce(dest);
case TAG_S32:
- return tag_init_s32(result, a->data.s16 & b->data.s32);
+ tag_init_s32(dest, a->data.s16 & b->data.s32);
+ return tag_integer_reduce(dest);
case TAG_S16:
- return tag_init_s16(result, a->data.s16 & b->data.s16);
+ tag_init_s16(dest, a->data.s16 & b->data.s16);
+ return tag_integer_reduce(dest);
case TAG_S8:
- return tag_init_s16(result, a->data.s16 & b->data.s8);
+ tag_init_s16(dest, a->data.s16 & b->data.s8);
+ return tag_integer_reduce(dest);
case TAG_U8:
- return tag_init_s16(result, a->data.s16 & b->data.u8);
+ tag_init_s16(dest, a->data.s16 & b->data.u8);
+ return tag_integer_reduce(dest);
case TAG_U16:
- return tag_init_s32(result, a->data.s16 & b->data.u16);
+ tag_init_s32(dest, a->data.s16 & b->data.u16);
+ return tag_integer_reduce(dest);
case TAG_U32:
- return tag_init_s64(result, a->data.s16 & b->data.u32);
+ tag_init_s64(dest, a->data.s16 & b->data.u32);
+ return tag_integer_reduce(dest);
case TAG_U64:
integer_init_s16(&tmp, a->data.s16);
integer_init_u64(&tmp2, b->data.u64);
- result->type = TAG_INTEGER;
- integer_band(&tmp, &tmp2, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&tmp, &tmp2, &dest->data.integer);
integer_clean(&tmp);
integer_clean(&tmp2);
- return result;
+ return tag_integer_reduce(dest);
case TAG_UW:
integer_init_s16(&tmp, a->data.s16);
integer_init_uw(&tmp2, b->data.uw);
- result->type = TAG_INTEGER;
- integer_band(&tmp, &tmp2, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&tmp, &tmp2, &dest->data.integer);
integer_clean(&tmp);
integer_clean(&tmp2);
- return result;
+ return tag_integer_reduce(dest);
default:
goto error;
}
@@ -262,42 +296,50 @@ s_tag * tag_band (const s_tag *a, const s_tag *b, s_tag *result)
switch (b->type) {
case TAG_INTEGER:
integer_init_s8(&tmp, a->data.s8);
- result->type = TAG_INTEGER;
- integer_band(&tmp, &b->data.integer, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&tmp, &b->data.integer, &dest->data.integer);
integer_clean(&tmp);
- return result;
+ return tag_integer_reduce(dest);
case TAG_SW:
- return tag_init_sw(result, a->data.s8 & b->data.sw);
+ tag_init_sw(dest, a->data.s8 & b->data.sw);
+ return tag_integer_reduce(dest);
case TAG_S64:
- return tag_init_s64(result, a->data.s8 & b->data.s64);
+ tag_init_s64(dest, a->data.s8 & b->data.s64);
+ return tag_integer_reduce(dest);
case TAG_S32:
- return tag_init_s32(result, a->data.s8 & b->data.s32);
+ tag_init_s32(dest, a->data.s8 & b->data.s32);
+ return tag_integer_reduce(dest);
case TAG_S16:
- return tag_init_s16(result, a->data.s8 & b->data.s16);
+ tag_init_s16(dest, a->data.s8 & b->data.s16);
+ return tag_integer_reduce(dest);
case TAG_S8:
- return tag_init_s8(result, a->data.s8 & b->data.s8);
+ tag_init_s8(dest, a->data.s8 & b->data.s8);
+ return tag_integer_reduce(dest);
case TAG_U8:
- return tag_init_s16(result, a->data.s8 & b->data.u8);
+ tag_init_s16(dest, a->data.s8 & b->data.u8);
+ return tag_integer_reduce(dest);
case TAG_U16:
- return tag_init_s32(result, a->data.s8 & b->data.u16);
+ tag_init_s32(dest, a->data.s8 & b->data.u16);
+ return tag_integer_reduce(dest);
case TAG_U32:
- return tag_init_s64(result, a->data.s8 & b->data.u32);
+ tag_init_s64(dest, a->data.s8 & b->data.u32);
+ return tag_integer_reduce(dest);
case TAG_U64:
integer_init_s8(&tmp, a->data.s8);
integer_init_u64(&tmp2, b->data.u64);
- result->type = TAG_INTEGER;
- integer_band(&tmp, &tmp2, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&tmp, &tmp2, &dest->data.integer);
integer_clean(&tmp);
integer_clean(&tmp2);
- return result;
+ return tag_integer_reduce(dest);
case TAG_UW:
integer_init_s8(&tmp, a->data.s8);
integer_init_uw(&tmp2, b->data.uw);
- result->type = TAG_INTEGER;
- integer_band(&tmp, &tmp2, &result->data.integer);
+ dest->type = TAG_INTEGER;
+ integer_band(&tmp, &tmp2, &dest->data.integer);
integer_clean(&tmp);
integer_clean(&tmp2);
- return result;
+ return tag_integer_reduce(dest);
default:
goto error;
}
@@ -307,30 +349,40 @@ s_tag * tag_band (const s_tag *a, const s_tag *b, s_tag *result)
case TAG_INTEGER:
integer_init_u8(&tmp, a->data.u8);
integer_band(&tmp, &b->data.integer, &tmp2);
- tag_init_u8(result, integer_to_u8(&tmp2));
+ tag_init_u8(dest, integer_to_u8(&tmp2));
integer_clean(&tmp);
integer_clean(&tmp2);
- return result;
+ return tag_integer_reduce(dest);
case TAG_SW:
- return tag_init_u8(result, a->data.u8 & b->data.sw);
+ tag_init_u8(dest, a->data.u8 & b->data.sw);
+ return tag_integer_reduce(dest);
case TAG_S64:
- return tag_init_u8(result, a->data.u8 & b->data.s64);
+ tag_init_u8(dest, a->data.u8 & b->data.s64);
+ return tag_integer_reduce(dest);
case TAG_S32:
- return tag_init_u8(result, a->data.u8 & b->data.s32);
+ tag_init_u8(dest, a->data.u8 & b->data.s32);
+ return tag_integer_reduce(dest);
case TAG_S16:
- return tag_init_u8(result, a->data.u8 & b->data.s16);
+ tag_init_u8(dest, a->data.u8 & b->data.s16);
+ return tag_integer_reduce(dest);
case TAG_S8:
- return tag_init_u8(result, a->data.u8 & b->data.s8);
+ tag_init_u8(dest, a->data.u8 & b->data.s8);
+ return tag_integer_reduce(dest);
case TAG_U8:
- return tag_init_u8(result, a->data.u8 & b->data.u8);
+ tag_init_u8(dest, a->data.u8 & b->data.u8);
+ return tag_integer_reduce(dest);
case TAG_U16:
- return tag_init_u8(result, a->data.u8 & b->data.u16);
+ tag_init_u8(dest, a->data.u8 & b->data.u16);
+ return tag_integer_reduce(dest);
case TAG_U32:
- return tag_init_u8(result, a->data.u8 & b->data.u32);
+ tag_init_u8(dest, a->data.u8 & b->data.u32);
+ return tag_integer_reduce(dest);
case TAG_U64:
- return tag_init_u8(result, a->data.u8 & b->data.u64);
+ tag_init_u8(dest, a->data.u8 & b->data.u64);
+ return tag_integer_reduce(dest);
case TAG_UW:
- return tag_init_u8(result, a->data.u8 & b->data.uw);
+ tag_init_u8(dest, a->data.u8 & b->data.uw);
+ return tag_integer_reduce(dest);
default:
goto error;
}
@@ -340,30 +392,40 @@ s_tag * tag_band (const s_tag *a, const s_tag *b, s_tag *result)
case TAG_INTEGER:
integer_init_u16(&tmp, a->data.u16);
integer_band(&tmp, &b->data.integer, &tmp2);
- tag_init_u16(result, integer_to_u16(&tmp2));
+ tag_init_u16(dest, integer_to_u16(&tmp2));
integer_clean(&tmp);
integer_clean(&tmp2);
- return result;
+ return tag_integer_reduce(dest);
case TAG_SW:
- return tag_init_u16(result, a->data.u16 & b->data.sw);
+ tag_init_u16(dest, a->data.u16 & b->data.sw);
+ return tag_integer_reduce(dest);
case TAG_S64:
- return tag_init_u16(result, a->data.u16 & b->data.s64);
+ tag_init_u16(dest, a->data.u16 & b->data.s64);
+ return tag_integer_reduce(dest);
case TAG_S32:
- return tag_init_u16(result, a->data.u16 & b->data.s32);
+ tag_init_u16(dest, a->data.u16 & b->data.s32);
+ return tag_integer_reduce(dest);
case TAG_S16:
- return tag_init_u16(result, a->data.u16 & b->data.s16);
+ tag_init_u16(dest, a->data.u16 & b->data.s16);
+ return tag_integer_reduce(dest);
case TAG_S8:
- return tag_init_u16(result, a->data.u16 & b->data.s8);
+ tag_init_u16(dest, a->data.u16 & b->data.s8);
+ return tag_integer_reduce(dest);
case TAG_U8:
- return tag_init_u16(result, a->data.u16 & b->data.u8);
+ tag_init_u16(dest, a->data.u16 & b->data.u8);
+ return tag_integer_reduce(dest);
case TAG_U16:
- return tag_init_u16(result, a->data.u16 & b->data.u16);
+ tag_init_u16(dest, a->data.u16 & b->data.u16);
+ return tag_integer_reduce(dest);
case TAG_U32:
- return tag_init_u16(result, a->data.u16 & b->data.u32);
+ tag_init_u16(dest, a->data.u16 & b->data.u32);
+ return tag_integer_reduce(dest);
case TAG_U64:
- return tag_init_u16(result, a->data.u16 & b->data.u64);
+ tag_init_u16(dest, a->data.u16 & b->data.u64);
+ return tag_integer_reduce(dest);
case TAG_UW:
- return tag_init_u16(result, a->data.u16 & b->data.uw);
+ tag_init_u16(dest, a->data.u16 & b->data.uw);
+ return tag_integer_reduce(dest);
default:
goto error;
}
@@ -373,30 +435,40 @@ s_tag * tag_band (const s_tag *a, const s_tag *b, s_tag *result)
case TAG_INTEGER:
integer_init_u32(&tmp, a->data.u32);
integer_band(&tmp, &b->data.integer, &tmp2);
- tag_init_u32(result, integer_to_u32(&tmp2));
+ tag_init_u32(dest, integer_to_u32(&tmp2));
integer_clean(&tmp);
integer_clean(&tmp2);
- return result;
+ return tag_integer_reduce(dest);
case TAG_SW:
- return tag_init_u32(result, a->data.u32 & b->data.sw);
+ tag_init_u32(dest, a->data.u32 & b->data.sw);
+ return tag_integer_reduce(dest);
case TAG_S64:
- return tag_init_u32(result, a->data.u32 & b->data.s64);
+ tag_init_u32(dest, a->data.u32 & b->data.s64);
+ return tag_integer_reduce(dest);
case TAG_S32:
- return tag_init_u32(result, a->data.u32 & b->data.s32);
+ tag_init_u32(dest, a->data.u32 & b->data.s32);
+ return tag_integer_reduce(dest);
case TAG_S16:
- return tag_init_u32(result, a->data.u32 & b->data.s16);
+ tag_init_u32(dest, a->data.u32 & b->data.s16);
+ return tag_integer_reduce(dest);
case TAG_S8:
- return tag_init_u32(result, a->data.u32 & b->data.s8);
+ tag_init_u32(dest, a->data.u32 & b->data.s8);
+ return tag_integer_reduce(dest);
case TAG_U8:
- return tag_init_u32(result, a->data.u32 & b->data.u8);
+ tag_init_u32(dest, a->data.u32 & b->data.u8);
+ return tag_integer_reduce(dest);
case TAG_U16:
- return tag_init_u32(result, a->data.u32 & b->data.u16);
+ tag_init_u32(dest, a->data.u32 & b->data.u16);
+ return tag_integer_reduce(dest);
case TAG_U32:
- return tag_init_u32(result, a->data.u32 & b->data.u32);
+ tag_init_u32(dest, a->data.u32 & b->data.u32);
+ return tag_integer_reduce(dest);
case TAG_U64:
- return tag_init_u32(result, a->data.u32 & b->data.u64);
+ tag_init_u32(dest, a->data.u32 & b->data.u64);
+ return tag_integer_reduce(dest);
case TAG_UW:
- return tag_init_u32(result, a->data.u32 & b->data.uw);
+ tag_init_u32(dest, a->data.u32 & b->data.uw);
+ return tag_integer_reduce(dest);
default:
goto error;
}
@@ -406,30 +478,40 @@ s_tag * tag_band (const s_tag *a, const s_tag *b, s_tag *result)
case TAG_INTEGER:
integer_init_u64(&tmp, a->data.u64);
integer_band(&tmp, &b->data.integer, &tmp2);
- tag_init_u64(result, integer_to_u64(&tmp2));
+ tag_init_u64(dest, integer_to_u64(&tmp2));
integer_clean(&tmp);
integer_clean(&tmp2);
- return result;
+ return tag_integer_reduce(dest);
case TAG_SW:
- return tag_init_u64(result, a->data.u64 & b->data.sw);
+ tag_init_u64(dest, a->data.u64 & b->data.sw);
+ return tag_integer_reduce(dest);
case TAG_S64:
- return tag_init_u64(result, a->data.u64 & b->data.s64);
+ tag_init_u64(dest, a->data.u64 & b->data.s64);
+ return tag_integer_reduce(dest);
case TAG_S32:
- return tag_init_u64(result, a->data.u64 & b->data.s32);
+ tag_init_u64(dest, a->data.u64 & b->data.s32);
+ return tag_integer_reduce(dest);
case TAG_S16:
- return tag_init_u64(result, a->data.u64 & b->data.s16);
+ tag_init_u64(dest, a->data.u64 & b->data.s16);
+ return tag_integer_reduce(dest);
case TAG_S8:
- return tag_init_u64(result, a->data.u64 & b->data.s8);
+ tag_init_u64(dest, a->data.u64 & b->data.s8);
+ return tag_integer_reduce(dest);
case TAG_U8:
- return tag_init_u64(result, a->data.u64 & b->data.u8);
+ tag_init_u64(dest, a->data.u64 & b->data.u8);
+ return tag_integer_reduce(dest);
case TAG_U16:
- return tag_init_u64(result, a->data.u64 & b->data.u16);
+ tag_init_u64(dest, a->data.u64 & b->data.u16);
+ return tag_integer_reduce(dest);
case TAG_U32:
- return tag_init_u64(result, a->data.u64 & b->data.u32);
+ tag_init_u64(dest, a->data.u64 & b->data.u32);
+ return tag_integer_reduce(dest);
case TAG_U64:
- return tag_init_u64(result, a->data.u64 & b->data.u64);
+ tag_init_u64(dest, a->data.u64 & b->data.u64);
+ return tag_integer_reduce(dest);
case TAG_UW:
- return tag_init_u64(result, a->data.u64 & b->data.uw);
+ tag_init_u64(dest, a->data.u64 & b->data.uw);
+ return tag_integer_reduce(dest);
default:
goto error;
}
@@ -439,30 +521,40 @@ s_tag * tag_band (const s_tag *a, const s_tag *b, s_tag *result)
case TAG_INTEGER:
integer_init_uw(&tmp, a->data.uw);
integer_band(&tmp, &b->data.integer, &tmp2);
- tag_init_uw(result, integer_to_uw(&tmp2));
+ tag_init_uw(dest, integer_to_uw(&tmp2));
integer_clean(&tmp);
integer_clean(&tmp2);
- return result;
+ return tag_integer_reduce(dest);
case TAG_SW:
- return tag_init_uw(result, a->data.uw & b->data.sw);
+ tag_init_uw(dest, a->data.uw & b->data.sw);
+ return tag_integer_reduce(dest);
case TAG_S64:
- return tag_init_uw(result, a->data.uw & b->data.s64);
+ tag_init_uw(dest, a->data.uw & b->data.s64);
+ return tag_integer_reduce(dest);
case TAG_S32:
- return tag_init_uw(result, a->data.uw & b->data.s32);
+ tag_init_uw(dest, a->data.uw & b->data.s32);
+ return tag_integer_reduce(dest);
case TAG_S16:
- return tag_init_uw(result, a->data.uw & b->data.s16);
+ tag_init_uw(dest, a->data.uw & b->data.s16);
+ return tag_integer_reduce(dest);
case TAG_S8:
- return tag_init_uw(result, a->data.uw & b->data.s8);
+ tag_init_uw(dest, a->data.uw & b->data.s8);
+ return tag_integer_reduce(dest);
case TAG_U8:
- return tag_init_uw(result, a->data.uw & b->data.u8);
+ tag_init_uw(dest, a->data.uw & b->data.u8);
+ return tag_integer_reduce(dest);
case TAG_U16:
- return tag_init_uw(result, a->data.uw & b->data.u16);
+ tag_init_uw(dest, a->data.uw & b->data.u16);
+ return tag_integer_reduce(dest);
case TAG_U32:
- return tag_init_uw(result, a->data.uw & b->data.u32);
+ tag_init_uw(dest, a->data.uw & b->data.u32);
+ return tag_integer_reduce(dest);
case TAG_U64:
- return tag_init_uw(result, a->data.uw & b->data.u64);
+ tag_init_uw(dest, a->data.uw & b->data.u64);
+ return tag_integer_reduce(dest);
case TAG_UW:
- return tag_init_uw(result, a->data.uw & b->data.uw);
+ tag_init_uw(dest, a->data.uw & b->data.uw);
+ return tag_integer_reduce(dest);
default:
goto error;
}