Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Jun 2014 09:56:40 GMT
From:      zkorchev@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r269789 - soc2014/zkorchev/freebsd_head/lib/libsol
Message-ID:  <201406200956.s5K9ue9J071307@socsvn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201406200956.s5K9ue9J071307>