gisi: Make subblock iterator use new message API
authorAki Niemi <aki.niemi@nokia.com>
Sun, 14 Nov 2010 16:20:08 +0000 (18:20 +0200)
committerAki Niemi <aki.niemi@nokia.com>
Wed, 22 Dec 2010 15:13:46 +0000 (17:13 +0200)
gisi/iter.c
gisi/iter.h

index 3eef8dd..a0a9b3a 100644 (file)
@@ -45,10 +45,13 @@ static inline void bcd_to_mccmnc(const uint8_t *restrict bcd,
        mnc[3] = '\0';
 }
 
-void g_isi_sb_iter_init_full(GIsiSubBlockIter *iter, const void *restrict data,
-                               size_t len, size_t used, gboolean longhdr,
+void g_isi_sb_iter_init_full(GIsiSubBlockIter *iter, const GIsiMessage *msg,
+                               size_t used, gboolean longhdr,
                                uint16_t sub_blocks)
 {
+       const uint8_t *data = g_isi_msg_data(msg);
+       size_t len = g_isi_msg_data_len(msg);
+
        if (!data)
                len = used = 0;
 
@@ -58,9 +61,12 @@ void g_isi_sb_iter_init_full(GIsiSubBlockIter *iter, const void *restrict data,
        iter->sub_blocks = len > used ? sub_blocks : 0;
 }
 
-void g_isi_sb_iter_init(GIsiSubBlockIter *iter, const void *restrict data,
-                       size_t len, size_t used)
+void g_isi_sb_iter_init(GIsiSubBlockIter *iter, const GIsiMessage *msg,
+                       size_t used)
 {
+       const uint8_t *data = g_isi_msg_data(msg);
+       size_t len = g_isi_msg_data_len(msg);
+
        if (!data)
                len = used = 0;
 
@@ -107,6 +113,7 @@ gboolean g_isi_sb_iter_get_data(const GIsiSubBlockIter *restrict iter,
        if ((size_t)pos > g_isi_sb_iter_get_len(iter)
                || iter->start + pos > iter->end)
                return FALSE;
+
        *data = (void *)iter->start + pos;
        return TRUE;
 }
@@ -117,6 +124,7 @@ gboolean g_isi_sb_iter_get_byte(const GIsiSubBlockIter *restrict iter,
        if ((size_t)pos > g_isi_sb_iter_get_len(iter)
                || iter->start + pos > iter->end)
                return FALSE;
+
        *byte = iter->start[pos];
        return TRUE;
 }
index 6be31d5..74ec593 100644 (file)
@@ -28,22 +28,20 @@ extern "C" {
 
 #include <stdint.h>
 
+#include "message.h"
+
 struct _GIsiSubBlockIter {
        uint8_t *start;
        uint8_t *end;
-       uint16_t longhdr;
+       gboolean longhdr;
        uint16_t sub_blocks;
 };
-
 typedef struct _GIsiSubBlockIter GIsiSubBlockIter;
 
-void g_isi_sb_iter_init(GIsiSubBlockIter *iter,
-                       const void *restrict data,
-                       size_t len, size_t used);
-void g_isi_sb_iter_init_full(GIsiSubBlockIter *iter,
-                               const void *restrict data,
-                               size_t len, size_t used,
-                               gboolean longhdr,
+void g_isi_sb_iter_init(GIsiSubBlockIter *iter, const GIsiMessage *msg,
+                       size_t used);
+void g_isi_sb_iter_init_full(GIsiSubBlockIter *iter, const GIsiMessage *msg,
+                               size_t used, gboolean longhdr,
                                uint16_t sub_blocks);
 gboolean g_isi_sb_iter_is_valid(const GIsiSubBlockIter *iter);