OSSP CVS Repository

ossp - Check-in [562]
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [Patchset]  [Tagging/Branching

Check-in Number: 562
Date: 2001-Jul-23 18:33:03 (local)
2001-Jul-23 16:33:03 (UTC)
User:simons
Branch:
Comment: Implemented encoding and decoding of doubles in XML.
Tickets:
Inspections:
Files:
ossp-pkg/xds/Makefile.in      1.8 -> 1.9     2 inserted, 1 deleted
ossp-pkg/xds/regression-tests/Makefile.in      1.8 -> 1.9     1 inserted, 1 deleted
ossp-pkg/xds/regression-tests/xml-double.c      added-> 1.1
ossp-pkg/xds/xds.h.in      1.4 -> 1.5     4 inserted, 0 deleted
ossp-pkg/xds/xml-decode-double.c      added-> 1.1
ossp-pkg/xds/xml-encode-double.c      added-> 1.1

ossp-pkg/xds/Makefile.in 1.8 -> 1.9

--- Makefile.in  2001/07/23 16:17:43     1.8
+++ Makefile.in  2001/07/23 16:33:03     1.9
@@ -17,7 +17,8 @@
                   xdr-encode-string.o xdr-decode-string.o xdr-encode-double.o \
                   xdr-decode-double.o xml-encode-int32.o xml-decode-int32.o \
                   xml-decode-int64.o xml-decode-uint32.o xml-decode-uint64.o \
-                  xml-encode-int64.o xml-encode-uint32.o xml-encode-uint64.o
+                  xml-encode-int64.o xml-encode-uint32.o xml-encode-uint64.o \
+                  xml-encode-double.o xml-decode-double.o
 
 .c.o:
         $(CC) $(CPPFLAGS) $(WARNFLAGS) $(OPTFLAGS) $(CFLAGS) -c $<


ossp-pkg/xds/regression-tests/Makefile.in 1.8 -> 1.9

--- Makefile.in  2001/07/23 16:17:44     1.8
+++ Makefile.in  2001/07/23 16:33:04     1.9
@@ -13,7 +13,7 @@
                   xdr-uint32.exe xdr-int32.exe xdr-uint64.exe xdr-int64.exe  \
                   xdr-octetstream.exe xdr-octetstream-empty.exe xdr-string.exe \
                   xdr-string-empty.exe xds-mystruct.exe xml-uint32.exe xml-int32.exe \
-                  xml-uint64.exe xml-int64.exe
+                  xml-uint64.exe xml-int64.exe xml-double.exe
 
 .SUFFIXES:
 .SUFFIXES:      .c .exe


ossp-pkg/xds/regression-tests/xml-double.c -> 1.1

*** /dev/null    Sat Nov 23 01:36:01 2024
--- -    Sat Nov 23 01:36:22 2024
***************
*** 0 ****
--- 1,113 ----
+ /*
+    XDS - OSSP Extensible Data Serialization Library
+    Copyright (c) 2001 The OSSP Project (http://www.ossp.org/)
+    Copyright (c) 2001 Cable & Wireless Deutschland (http://www.cw.com/de/)
+ 
+    This file is part of OSSP XDS, an extensible data serialization
+    library which can be found at http://www.ossp.com/pkg/xds/.
+ 
+    Permission to use, copy, modify, and distribute this software for
+    any purpose with or without fee is hereby granted, provided that
+    the above copyright notice and this permission notice appear in all
+    copies.
+ 
+    THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+    WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+    IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+    USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+    OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+    OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+    SUCH DAMAGE.
+ */
+ 
+ #include <stdio.h>
+ #include <string.h>
+ #include <rpc/types.h>
+ #include <rpc/xdr.h>
+ #include "../internal.h"
+ 
+ int main()
+     {
+     xds_t* xds;
+     char*  buffer;
+     size_t buffer_size;
+ 
+     xds_double_t values[] =
+        {
+        3.14159265358979323844
+        };
+ 
+     size_t i;
+ 
+     /* Encode the values array, then decode it back and compare the
+        numbers. */
+ 
+     xds = xds_init(XDS_ENCODE);
+     if (xds == NULL)
+        {
+        printf("Failed to initialize XDS context.\n");
+        return 1;
+        }
+     if (xds_register(xds, "int", &xml_encode_double, NULL) != XDS_OK)
+        {
+        printf("Failed to register my encoding engines.\n");
+        return 1;
+        }
+     for (i = 0; i < sizeof(values)/sizeof(xds_double_t); ++i)
+        {
+        if (xds_encode(xds, "int", values[i]) != XDS_OK)
+            {
+            printf("xds_encode(values[%d]) failed!\n", i);
+            return 1;
+            }
+        }
+     if (xds_getbuffer(xds, XDS_GIFT, (void**)&buffer, &buffer_size) != XDS_OK)
+        {
+        printf("getbuffer() failed.\n");
+        return 1;
+        }
+     xds_destroy(xds);
+ 
+     printf("%s\n", buffer);
+ 
+     xds = xds_init(XDS_DECODE);
+     if (xds == NULL)
+        {
+        printf("Failed to initialize XDS context.\n");
+        return 1;
+        }
+     if (xds_register(xds, "int", &xml_decode_double, NULL) != XDS_OK)
+        {
+        printf("Failed to register my decoding engines.\n");
+        return 1;
+        }
+     if (xds_setbuffer(xds, XDS_GIFT, buffer, buffer_size) != XDS_OK)
+        {
+        printf("setbuffer() failed.\n");
+        return 1;
+        }
+     for (i = 0; i < sizeof(values)/sizeof(xds_double_t); ++i)
+        {
+        xds_double_t val;
+        if (xds_decode(xds, "int", &val) != XDS_OK)
+            {
+            printf("xds_decode(values[%d]) failed!\n", i);
+            return 1;
+            }
+        if (val != values[i])
+            {
+            printf("Decoded value (%E) does not match the original value (%E)!\n", val, values[i]);
+            return 1;
+            }
+        }
+     xds_destroy(xds);
+ 
+     /* Everything went fine. */
+ 
+     return 0;
+     }


ossp-pkg/xds/xds.h.in 1.4 -> 1.5

--- xds.h.in     2001/07/23 16:17:43     1.4
+++ xds.h.in     2001/07/23 16:33:03     1.5
@@ -42,6 +42,7 @@
 typedef @xds_int16_t@ xds_int16_t;
 typedef @xds_int32_t@ xds_int32_t;
 typedef @xds_int64_t@ xds_int64_t;
+typedef double xds_double_t;
 
 enum
     {
@@ -112,4 +113,7 @@
 int xml_encode_uint64(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args);
 int xml_decode_uint64(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args);
 
+int xml_encode_double(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args);
+int xml_decode_double(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args);
+
 #endif /* !defined(__LIBXDS_H__) */


ossp-pkg/xds/xml-decode-double.c -> 1.1

*** /dev/null    Sat Nov 23 01:36:01 2024
--- -    Sat Nov 23 01:36:23 2024
***************
*** 0 ****
--- 1,55 ----
+ /*
+    XDS - OSSP Extensible Data Serialization Library
+    Copyright (c) 2001 The OSSP Project (http://www.ossp.org/)
+    Copyright (c) 2001 Cable & Wireless Deutschland (http://www.cw.com/de/)
+ 
+    This file is part of OSSP XDS, an extensible data serialization
+    library which can be found at http://www.ossp.com/pkg/xds/.
+ 
+    Permission to use, copy, modify, and distribute this software for
+    any purpose with or without fee is hereby granted, provided that
+    the above copyright notice and this permission notice appear in all
+    copies.
+ 
+    THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+    WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+    IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+    USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+    OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+    OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+    SUCH DAMAGE.
+ */
+ 
+ #include <stdio.h>
+ #include <assert.h>
+ #include "internal.h"
+ 
+ int xml_decode_double(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args)
+     {
+     int rc;
+     xds_double_t* value;
+     int len;
+ 
+     /* Consistency checks. */
+ 
+     assert(xds != NULL);
+     assert(buffer != NULL);
+     assert(buffer_size != 0);
+     assert(args != NULL);
+     if (xds == NULL || buffer == NULL || buffer_size == 0 || args == NULL)
+        return XDS_ERR_INVALID_ARG;
+ 
+     /* Format value into buffer. */
+ 
+     value = va_arg(*args, xds_double_t*);
+     rc = sscanf(buffer, "<double>%lE</double>%n", value, &len);
+     if (rc <= 0)
+        return XDS_ERR_UNDERFLOW;
+ 
+     return len;
+     }


ossp-pkg/xds/xml-encode-double.c -> 1.1

*** /dev/null    Sat Nov 23 01:36:01 2024
--- -    Sat Nov 23 01:36:23 2024
***************
*** 0 ****
--- 1,55 ----
+ /*
+    XDS - OSSP Extensible Data Serialization Library
+    Copyright (c) 2001 The OSSP Project (http://www.ossp.org/)
+    Copyright (c) 2001 Cable & Wireless Deutschland (http://www.cw.com/de/)
+ 
+    This file is part of OSSP XDS, an extensible data serialization
+    library which can be found at http://www.ossp.com/pkg/xds/.
+ 
+    Permission to use, copy, modify, and distribute this software for
+    any purpose with or without fee is hereby granted, provided that
+    the above copyright notice and this permission notice appear in all
+    copies.
+ 
+    THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+    WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+    IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+    USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+    OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+    OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+    SUCH DAMAGE.
+ */
+ 
+ #include <stdio.h>
+ #include <assert.h>
+ #include "internal.h"
+ 
+ int xml_encode_double(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args)
+     {
+     int rc;
+     xds_double_t value;
+ 
+     /* Consistency checks. */
+ 
+     assert(xds != NULL);
+     assert(buffer != NULL);
+     assert(buffer_size != 0);
+     assert(args != NULL);
+     if (xds == NULL || buffer == NULL || buffer_size == 0 || args == NULL)
+        return XDS_ERR_INVALID_ARG;
+ 
+     /* Format value into buffer. */
+ 
+     value = va_arg(*args, xds_double_t);
+     rc = snprintf(buffer, buffer_size, "<double>%E</double>", value);
+     if (rc < 0)
+        return buffer_size*2;
+     assert(rc >= 15);
+ 
+     return rc;
+     }

CVSTrac 2.0.1