From 78514cfc953085958bce896e79c8e52613fbdc29 Mon Sep 17 00:00:00 2001 From: sfbeyond Date: Sun, 24 Mar 2013 20:49:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3table=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E5=80=BC=E7=B4=A2=E5=BC=95=E9=95=BF=E5=BA=A6=E5=A4=A7=E4=BA=8E?= =?UTF-8?q?10=E4=BA=A7=E7=94=9F=E7=9A=84=E7=B4=A2=E5=BC=95=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E9=97=AE=E9=A2=98.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- serialize.c | 51 ++++++++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/serialize.c b/serialize.c index 94e5a1a..5ada2fb 100644 --- a/serialize.c +++ b/serialize.c @@ -214,29 +214,34 @@ wb_boolean(struct write_block *wb, int boolean) { } static inline void -wb_integer(struct write_block *wb, int v) { - if (v == 0) { - int n = COMBINE_TYPE(TYPE_NUMBER , 0); - wb_push(wb, &n, 1); - } else if (v<0) { - int n = COMBINE_TYPE(TYPE_NUMBER , 4); - wb_push(wb, &n, 1); - wb_push(wb, &v, 4); - } else if (v<0x100) { - int n = COMBINE_TYPE(TYPE_NUMBER , 1); - wb_push(wb, &n, 1); - uint8_t byte = (uint8_t)v; - wb_push(wb, &byte, 1); - } else if (v<0x10000) { - int n = COMBINE_TYPE(TYPE_NUMBER , 2); - wb_push(wb, &n, 1); - uint16_t word = (uint16_t)v; - wb_push(wb, &word, 2); - } else { - int n = COMBINE_TYPE(TYPE_NUMBER , 4); - wb_push(wb, &n, 1); - wb_push(wb, &v, 4); - } +wb_integer(struct write_block *wb, double v) { + if (v == 0) { + int n = COMBINE_TYPE(TYPE_NUMBER , 0); + wb_push(wb, &n, 1); + } else if (v<0) { + int n = COMBINE_TYPE(TYPE_NUMBER , 4); + wb_push(wb, &n, 1); + wb_push(wb, &v, 4); + } else if (v<0x100) { + int n = COMBINE_TYPE(TYPE_NUMBER , 1); + wb_push(wb, &n, 1); + uint8_t byte = (uint8_t)v; + wb_push(wb, &byte, 1); + } else if (v<0x10000) { + int n = COMBINE_TYPE(TYPE_NUMBER , 2); + wb_push(wb, &n, 1); + uint16_t word = (uint16_t)v; + wb_push(wb, &word, 2); + } else if (v<0x100000000) { + int n = COMBINE_TYPE(TYPE_NUMBER , 4); + wb_push(wb, &n, 1); + uint32_t dword = (uint32_t)v; + wb_push(wb, &dword, 4); + } else { + int n = COMBINE_TYPE(TYPE_NUMBER , 8); + wb_push(wb, &n, 1); + wb_push(wb, &v, 8); + } } static inline void