27 #ifndef NVTABLE_SERIALIZE_ENDIANUTILS_H_
28 #define NVTABLE_SERIALIZE_ENDIANUTILS_H_
30 static inline guint8 reverse(guint8 b)
32 b = (b & 0xF0) >> 4 | (b & 0x0F) << 4;
33 b = (b & 0xCC) >> 2 | (b & 0x33) << 2;
34 b = (b & 0xAA) >> 1 | (b & 0x55) << 1;
39 nv_table_swap_entry_flags(NVEntry *entry)
41 entry->flags = reverse(entry->flags);
45 nv_entry_swap_bytes(NVEntry *entry)
47 nv_table_swap_entry_flags(entry);
48 entry->alloc_len = GUINT32_SWAP_LE_BE(entry->alloc_len);
52 entry->vdirect.value_len = GUINT32_SWAP_LE_BE(entry->vdirect.value_len);
56 entry->vindirect.handle = GUINT32_SWAP_LE_BE(entry->vindirect.handle);
57 entry->vindirect.ofs = GUINT32_SWAP_LE_BE(entry->vindirect.ofs);
58 entry->vindirect.len = GUINT32_SWAP_LE_BE(entry->vindirect.len);
63 nv_table_dyn_value_swap_bytes(NVIndexEntry *
self)
65 self->handle = GUINT32_SWAP_LE_BE(
self->handle);
66 self->ofs = GUINT32_SWAP_LE_BE(
self->handle);
70 nv_table_data_swap_bytes(NVTable *
self)
72 NVIndexEntry *index_table;
76 for (i = 0; i <
self->num_static_entries; i++)
78 entry = nv_table_get_entry_at_ofs(
self,
self->static_entries[i]);
81 nv_entry_swap_bytes(entry);
84 index_table = nv_table_get_index(
self);
85 for (i = 0; i <
self->index_size; i++)
87 entry = nv_table_get_entry_at_ofs(
self, index_table[i].ofs);
91 nv_entry_swap_bytes(entry);
96 nv_table_struct_swap_bytes(NVTable *
self)
99 NVIndexEntry *index_table;
101 self->size = GUINT16_SWAP_LE_BE(
self->size);
102 self->used = GUINT16_SWAP_LE_BE(
self->used);
103 self->index_size = GUINT16_SWAP_LE_BE(
self->index_size);
105 for (i = 0; i <
self->num_static_entries; i++)
107 self->static_entries[i] = GUINT16_SWAP_LE_BE(
self->static_entries[i]);
109 index_table = nv_table_get_index(
self);
111 for (i = 0; i <
self->index_size; i++)
113 nv_table_dyn_value_swap_bytes(&index_table[i]);
#define self
Definition: rcptid.c:38