I have a LOT of changes I want to make with respect to unsigned ints.  The
net result will be fewer warnings along with lower chance of errors.  To
keep from getting out of sync with everyone I'm going to break it into as
small pieces as I can.  Unfortunately, this made lead to a few extra
warnings while related pieces are waiting to be checked in.  I will make
sure that no individual patch fails the test suite.

So here is the first one.  The encodings have been changed the strings file
will be in a separate patch.

David

Index: encodings/singlebyte.c
===================================================================
RCS file: /cvs/public/parrot/encodings/singlebyte.c,v
retrieving revision 1.6
diff -c -r1.6 singlebyte.c
*** encodings/singlebyte.c 30 Dec 2001 12:04:56 -0000 1.6
--- encodings/singlebyte.c 1 Jan 2002 04:05:25 -0000
***************
*** 14,25 ****

  typedef unsigned char byte_t;

! static INTVAL
! singlebyte_characters (const void *ptr, INTVAL bytes) {
      return bytes;
  }

! static INTVAL
  singlebyte_decode (const void *ptr) {
      const byte_t *bptr = ptr;

--- 14,25 ----

  typedef unsigned char byte_t;

! static UINTVAL
! singlebyte_characters (const void *ptr, UINTVAL bytes) {
      return bytes;
  }

! static UINTVAL
  singlebyte_decode (const void *ptr) {
      const byte_t *bptr = ptr;

***************
*** 27,33 ****
  }

  static void *
! singlebyte_encode (void *ptr, INTVAL c) {
      byte_t *bptr = ptr;

      if (c < 0 || c > 255) {
--- 27,33 ----
  }

  static void *
! singlebyte_encode (void *ptr, UINTVAL c) {
      byte_t *bptr = ptr;

      if (c < 0 || c > 255) {
***************
*** 41,54 ****
  }

  static void *
! singlebyte_skip_forward (const void *ptr, INTVAL n) {
      byte_t *bptr = (byte_t*)ptr;

      return bptr + n;
  }

  static void *
! singlebyte_skip_backward (const void *ptr, INTVAL n) {
      byte_t *bptr = (byte_t*)ptr;

      return bptr - n;
--- 41,54 ----
  }

  static void *
! singlebyte_skip_forward (const void *ptr, UINTVAL n) {
      byte_t *bptr = (byte_t*)ptr;

      return bptr + n;
  }

  static void *
! singlebyte_skip_backward (const void *ptr, UINTVAL n) {
      byte_t *bptr = (byte_t*)ptr;

      return bptr - n;
Index: encodings/utf16.c
===================================================================
RCS file: /cvs/public/parrot/encodings/utf16.c,v
retrieving revision 1.5
diff -c -r1.5 utf16.c
*** encodings/utf16.c 30 Dec 2001 12:04:56 -0000 1.5
--- encodings/utf16.c 1 Jan 2002 04:05:26 -0000
***************
*** 17,27 ****
  typedef unsigned short utf16_t;
  #endif

! static INTVAL
! utf16_characters (const void *ptr, INTVAL bytes) {
      const utf16_t *u16ptr = ptr;
      const utf16_t *u16end = u16ptr + bytes / sizeof(utf16_t);
!     INTVAL characters = 0;

      while (u16ptr < u16end) {
          u16ptr += UTF16SKIP(u16ptr);
--- 17,27 ----
  typedef unsigned short utf16_t;
  #endif

! static UINTVAL
! utf16_characters (const void *ptr, UINTVAL bytes) {
      const utf16_t *u16ptr = ptr;
      const utf16_t *u16end = u16ptr + bytes / sizeof(utf16_t);
!     UINTVAL characters = 0;

      while (u16ptr < u16end) {
          u16ptr += UTF16SKIP(u16ptr);
***************
*** 35,44 ****
      return characters;
  }

! static INTVAL
  utf16_decode (const void *ptr) {
      const utf16_t *u16ptr = ptr;
!     INTVAL c = *u16ptr++;

      if (UNICODE_IS_HIGH_SURROGATE(c)) {
          utf16_t low = *u16ptr++;
--- 35,44 ----
      return characters;
  }

! static UINTVAL
  utf16_decode (const void *ptr) {
      const utf16_t *u16ptr = ptr;
!     UINTVAL c = *u16ptr++;

      if (UNICODE_IS_HIGH_SURROGATE(c)) {
          utf16_t low = *u16ptr++;
***************
*** 57,66 ****
  }

  static void *
! utf16_encode (void *ptr, INTVAL c) {
      utf16_t *u16ptr = ptr;

!     if (c < 0 || c > 0x10FFFF || UNICODE_IS_SURROGATE(c)) {
          INTERNAL_EXCEPTION(INVALID_CHARACTER,
                             "Invalid character for UTF-16 encoding\n");
      }
--- 57,66 ----
  }

  static void *
! utf16_encode (void *ptr, UINTVAL c) {
      utf16_t *u16ptr = ptr;

!     if (c > 0x10FFFF || UNICODE_IS_SURROGATE(c)) {
          INTERNAL_EXCEPTION(INVALID_CHARACTER,
                             "Invalid character for UTF-16 encoding\n");
      }
***************
*** 77,83 ****
  }

  static void *
! utf16_skip_forward (const void *ptr, INTVAL n) {
      utf16_t *u16ptr = (utf16_t*)ptr;

      while (n-- > 0) {
--- 77,83 ----
  }

  static void *
! utf16_skip_forward (const void *ptr, UINTVAL n) {
      utf16_t *u16ptr = (utf16_t*)ptr;

      while (n-- > 0) {
***************
*** 100,106 ****
  }

  static void *
! utf16_skip_backward (const void *ptr, INTVAL n) {
      utf16_t *u16ptr = (utf16_t*)ptr;

      while (n--> 0) {
--- 100,106 ----
  }

  static void *
! utf16_skip_backward (const void *ptr, UINTVAL n) {
      utf16_t *u16ptr = (utf16_t*)ptr;

      while (n--> 0) {
Index: encodings/utf32.c
===================================================================
RCS file: /cvs/public/parrot/encodings/utf32.c,v
retrieving revision 1.2
diff -c -r1.2 utf32.c
*** encodings/utf32.c 30 Dec 2001 12:04:56 -0000 1.2
--- encodings/utf32.c 1 Jan 2002 04:05:26 -0000
***************
*** 17,28 ****
  typedef unsigned long utf32_t;
  #endif

! static INTVAL
! utf32_characters (const void *ptr, INTVAL bytes) {
      return bytes / 4;
  }

! static INTVAL
  utf32_decode (const void *ptr) {
      const utf32_t *u32ptr = ptr;

--- 17,28 ----
  typedef unsigned long utf32_t;
  #endif

! static UINTVAL
! utf32_characters (const void *ptr, UINTVAL bytes) {
      return bytes / 4;
  }

! static UINTVAL
  utf32_decode (const void *ptr) {
      const utf32_t *u32ptr = ptr;

***************
*** 30,39 ****
  }

  static void *
! utf32_encode (void *ptr, INTVAL c) {
      utf32_t *u32ptr = ptr;

!     if (c < 0 || c > 0x10FFFF || UNICODE_IS_SURROGATE(c)) {
          INTERNAL_EXCEPTION(INVALID_CHARACTER,
                             "Invalid character for UTF-32 encoding\n");
      }
--- 30,39 ----
  }

  static void *
! utf32_encode (void *ptr, UINTVAL c) {
      utf32_t *u32ptr = ptr;

!     if (c > 0x10FFFF || UNICODE_IS_SURROGATE(c)) {
          INTERNAL_EXCEPTION(INVALID_CHARACTER,
                             "Invalid character for UTF-32 encoding\n");
      }
***************
*** 44,57 ****
  }

  static void *
! utf32_skip_forward (const void *ptr, INTVAL n) {
      utf32_t *u32ptr = (utf32_t*)ptr;

      return u32ptr + n;
  }

  static void *
! utf32_skip_backward (const void *ptr, INTVAL n) {
      utf32_t *u32ptr = (utf32_t*)ptr;

      return u32ptr - n;
--- 44,57 ----
  }

  static void *
! utf32_skip_forward (const void *ptr, UINTVAL n) {
      utf32_t *u32ptr = (utf32_t*)ptr;

      return u32ptr + n;
  }

  static void *
! utf32_skip_backward (const void *ptr, UINTVAL n) {
      utf32_t *u32ptr = (utf32_t*)ptr;

      return u32ptr - n;
Index: encodings/utf8.c
===================================================================
RCS file: /cvs/public/parrot/encodings/utf8.c,v
retrieving revision 1.6
diff -c -r1.6 utf8.c
*** encodings/utf8.c 31 Dec 2001 16:00:59 -0000 1.6
--- encodings/utf8.c 1 Jan 2002 04:05:26 -0000
***************
*** 28,38 ****
  typedef unsigned char utf8_t;
  #endif

! static INTVAL
! utf8_characters (const void *ptr, INTVAL bytes) {
      const utf8_t *u8ptr = ptr;
      const utf8_t *u8end = u8ptr + bytes;
!     INTVAL characters = 0;

      while (u8ptr < u8end) {
          u8ptr += UTF8SKIP(u8ptr);
--- 28,38 ----
  typedef unsigned char utf8_t;
  #endif

! static UINTVAL
! utf8_characters (const void *ptr, UINTVAL bytes) {
      const utf8_t *u8ptr = ptr;
      const utf8_t *u8end = u8ptr + bytes;
!     UINTVAL characters = 0;

      while (u8ptr < u8end) {
          u8ptr += UTF8SKIP(u8ptr);
***************
*** 46,59 ****
      return characters;
  }

! static INTVAL
  utf8_decode (const void *ptr) {
      const utf8_t *u8ptr = ptr;
!     INTVAL c = *u8ptr;

      if (UTF8_IS_START(c)) {
!         INTVAL len = UTF8SKIP(u8ptr);
!         INTVAL count;

          c &= UTF8_START_MASK(len);
          for (count = 1; count < len; count++) {
--- 46,59 ----
      return characters;
  }

! static UINTVAL
  utf8_decode (const void *ptr) {
      const utf8_t *u8ptr = ptr;
!     UINTVAL c = *u8ptr;

      if (UTF8_IS_START(c)) {
!         UINTVAL len = UTF8SKIP(u8ptr);
!         UINTVAL count;

          c &= UTF8_START_MASK(len);
          for (count = 1; count < len; count++) {
***************
*** 77,88 ****
  }

  static void *
! utf8_encode (void *ptr, INTVAL c) {
      utf8_t *u8ptr = ptr;
!     INTVAL len = UNISKIP(c);
      utf8_t *u8end = u8ptr + len - 1;

!     if (c < 0 || c > 0x10FFFF || UNICODE_IS_SURROGATE(c)) {
          INTERNAL_EXCEPTION(INVALID_CHARACTER,
                             "Invalid character for UTF-8 encoding\n");
      }
--- 77,88 ----
  }

  static void *
! utf8_encode (void *ptr, UINTVAL c) {
      utf8_t *u8ptr = ptr;
!     UINTVAL len = UNISKIP(c);
      utf8_t *u8end = u8ptr + len - 1;

!     if (c > 0x10FFFF || UNICODE_IS_SURROGATE(c)) {
          INTERNAL_EXCEPTION(INVALID_CHARACTER,
                             "Invalid character for UTF-8 encoding\n");
      }
***************
*** 97,103 ****
  }

  static void *
! utf8_skip_forward (void *ptr, INTVAL n) {
      utf8_t *u8ptr = (utf8_t*)ptr;

      while (n-- > 0) {
--- 97,103 ----
  }

  static void *
! utf8_skip_forward (void *ptr, UINTVAL n) {
      utf8_t *u8ptr = (utf8_t*)ptr;

      while (n-- > 0) {
***************
*** 108,114 ****
  }

  static void *
! utf8_skip_backward (void *ptr, INTVAL n) {
      utf8_t *u8ptr = (utf8_t*)ptr;

      while (n-- > 0) {
--- 108,114 ----
  }

  static void *
! utf8_skip_backward (void *ptr, UINTVAL n) {
      utf8_t *u8ptr = (utf8_t*)ptr;

      while (n-- > 0) {
Index: include/parrot/encoding.h
===================================================================
RCS file: /cvs/public/parrot/include/parrot/encoding.h,v
retrieving revision 1.6
diff -c -r1.6 encoding.h
*** include/parrot/encoding.h 31 Dec 2001 16:00:59 -0000 1.6
--- include/parrot/encoding.h 1 Jan 2002 04:05:26 -0000
***************
*** 15,26 ****

  typedef struct {
      const char *name;
!     INTVAL max_bytes;
!     INTVAL (*characters)(const void *ptr, INTVAL bytes);
!     INTVAL (*decode)(const void *ptr);
!     void *(*encode)(void *ptr, INTVAL c);
!     void *(*skip_forward)(void *ptr, INTVAL n);
!     void *(*skip_backward)(void *ptr, INTVAL n);
  } ENCODING;

  const ENCODING *
--- 15,26 ----

  typedef struct {
      const char *name;
!     UINTVAL max_bytes;
!     UINTVAL (*characters)(const void *ptr, UINTVAL bytes);
!     UINTVAL (*decode)(const void *ptr);
!     void *(*encode)(void *ptr, UINTVAL c);
!     void *(*skip_forward)(void *ptr, UINTVAL n);
!     void *(*skip_backward)(void *ptr, UINTVAL n);
  } ENCODING;

  const ENCODING *


Reply via email to