socsvn commit: r269789 - soc2014/zkorchev/freebsd_head/lib/libsol
zkorchev at FreeBSD.org
zkorchev at FreeBSD.org
Fri Jun 20 09:56:41 UTC 2014
Author: zkorchev
Date: Fri Jun 20 09:56:39 2014
New Revision: 269789
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=269789
Log:
unsigned integer support
Modified:
soc2014/zkorchev/freebsd_head/lib/libsol/sol.c
soc2014/zkorchev/freebsd_head/lib/libsol/sol.h
Modified: soc2014/zkorchev/freebsd_head/lib/libsol/sol.c
==============================================================================
--- soc2014/zkorchev/freebsd_head/lib/libsol/sol.c Fri Jun 20 07:35:55 2014 (r269788)
+++ soc2014/zkorchev/freebsd_head/lib/libsol/sol.c Fri Jun 20 09:56:39 2014 (r269789)
@@ -23,6 +23,7 @@
* SUCH DAMAGE.
*/
+#include <stdio.h>
#include <unistd.h>
#include "sol.h"
@@ -123,13 +124,25 @@
return 0;
}
-int sol_integer(struct sol_stream *restrict stream, long long value)
+int sol_integer(struct sol_stream *restrict stream, int64_t value)
{
yajl_gen_integer(stream->ctx.g, value);
return 0;
}
+int sol_uinteger(struct sol_stream *restrict stream, uint64_t value) // TODO better name for this?
+{
+ char buffer[20 + 1]; // UINT64_MAX fits in 20 bytes
+ size_t len;
+
+ // TODO use hex when supported
+ len = sprintf(buffer, "%" PRIu64, value);
+ yajl_gen_number(stream->ctx.g, buffer, len);
+
+ return 0;
+}
+
int sol_float(struct sol_stream *restrict stream, double value)
{
// todo round mantissa?
Modified: soc2014/zkorchev/freebsd_head/lib/libsol/sol.h
==============================================================================
--- soc2014/zkorchev/freebsd_head/lib/libsol/sol.h Fri Jun 20 07:35:55 2014 (r269788)
+++ soc2014/zkorchev/freebsd_head/lib/libsol/sol.h Fri Jun 20 09:56:39 2014 (r269789)
@@ -23,6 +23,8 @@
* SUCH DAMAGE.
*/
+#include <inttypes.h>
+
#include <yajl/yajl_gen.h> // libyajl
#define SOL_MAP_KEYL(stream, key) sol_map_key(stream, key, sizeof(key) - 1)
@@ -52,6 +54,7 @@
int sol_map_key(struct sol_stream *restrict stream, const char *key, size_t length);
int sol_boolean(struct sol_stream *restrict stream, unsigned char value);
-int sol_integer(struct sol_stream *restrict stream, long long value);
+int sol_integer(struct sol_stream *restrict stream, int64_t value);
+int sol_uinteger(struct sol_stream *restrict stream, uint64_t value);
int sol_string(struct sol_stream *restrict stream, const char *data, size_t length);
int sol_float(struct sol_stream *restrict stream, double value);
More information about the svn-soc-all
mailing list