OSSP CVS Repository

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

Check-in Number: 4235
Date: 2001-Jul-23 17:57:47 (local)
2001-Jul-23 15:57:47 (UTC)
User:simons
Branch:
Comment: Implemented encoding and decoding of int32 values in XML.
Tickets:
Inspections:
Files:
ossp-pkg/xds/regression-tests/Makefile.in      1.6 -> 1.7     1 inserted, 1 deleted
ossp-pkg/xds/regression-tests/xml-int32.c      added-> 1.1
ossp-pkg/xds/xml-decode-int32.c      added-> 1.1
ossp-pkg/xds/xml-encode-int32.c      1.1 -> 1.2     22 inserted, 1 deleted

ossp-pkg/xds/regression-tests/Makefile.in 1.6 -> 1.7

--- Makefile.in  2001/07/23 13:05:24     1.6
+++ Makefile.in  2001/07/23 15:57:48     1.7
@@ -12,7 +12,7 @@
                   xds-getbuffer.exe xds-decode.exe xds-setbuffer.exe xds-engine-restart.exe \
                   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
+                  xdr-string-empty.exe xds-mystruct.exe xml-int32.exe
 
 .SUFFIXES:
 .SUFFIXES:      .c .exe


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

*** /dev/null    Sat Nov 23 01:14:19 2024
--- -    Sat Nov 23 01:14:25 2024
***************
*** 0 ****
--- 1,116 ----
+ /*
+    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_int32_t values[] =
+        {
+         0x00000000,
+         0x12345678,
+        -0x12345678,
+         0xabcdef01,
+        -0xabcdef01,
+         0x7fffffff
+        };
+ 
+     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_int32, NULL) != XDS_OK)
+        {
+        printf("Failed to register my encoding engines.\n");
+        return 1;
+        }
+     for (i = 0; i < sizeof(values)/sizeof(xds_int32_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);
+ 
+     xds = xds_init(XDS_DECODE);
+     if (xds == NULL)
+        {
+        printf("Failed to initialize XDS context.\n");
+        return 1;
+        }
+     if (xds_register(xds, "int", &xml_decode_int32, 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_int32_t); ++i)
+        {
+        xds_int32_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 (%d) does not match the original value (%d)!\n", val, values[i]);
+            return 1;
+            }
+        }
+     xds_destroy(xds);
+ 
+     /* Everything went fine. */
+ 
+     return 0;
+     }


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

*** /dev/null    Sat Nov 23 01:14:19 2024
--- -    Sat Nov 23 01:14:25 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_int32(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args)
+     {
+     int rc;
+     xds_int32_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_int32_t*);
+     rc = sscanf(buffer, "<int32>%d</int32>%n", value, &len);
+     if (rc <= 0)
+        return XDS_ERR_UNDERFLOW;
+ 
+     return len;
+     }


ossp-pkg/xds/xml-encode-int32.c 1.1 -> 1.2

--- xml-encode-int32.c   2001/07/23 15:28:53     1.1
+++ xml-encode-int32.c   2001/07/23 15:57:47     1.2
@@ -25,10 +25,31 @@
    SUCH DAMAGE.
 */
 
+#include <stdio.h>
 #include <assert.h>
 #include "internal.h"
 
 int xml_encode_int32(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list* args)
     {
-    return -1;
+    int rc;
+    xds_int32_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_int32_t);
+    rc = snprintf(buffer, buffer_size, "<int32>%d</int32>", value);
+    if (rc < 0)
+        return buffer_size*2;
+    assert(rc >= 15);
+
+    return rc;
     }

CVSTrac 2.0.1