From: David Flynn <[EMAIL PROTECTED]>

Using unsigned values avoids possible sign extension instructions

TODO: outstanding question of whether uintptr_t is better than
uint_least32_t

Signed-off-by: David Flynn <[EMAIL PROTECTED]>
---
 schroedinger/schroarith.c |   26 +++++++++++++-------------
 schroedinger/schroarith.h |   24 ++++++++++++------------
 2 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/schroedinger/schroarith.c b/schroedinger/schroarith.c
index 793c232..7341926 100644
--- a/schroedinger/schroarith.c
+++ b/schroedinger/schroarith.c
@@ -11,7 +11,7 @@
 #include <schroedinger/schrotables.h>
 #include <schroedinger/schrodebug.h>
 
-static const int next_list[] = {
+static const unsigned int next_list[] = {
   0,
   SCHRO_CTX_QUANTISER_CONT,
   0,
@@ -268,7 +268,7 @@ arith->range[0] |= ((1<<i)-1);
 
 #if 0
 int
-_schro_arith_decode_bit (SchroArith *arith, int i)
+_schro_arith_decode_bit (SchroArith *arith, unsigned int i)
 {
   return __schro_arith_decode_bit (arith, i);
 }
@@ -276,7 +276,7 @@ _schro_arith_decode_bit (SchroArith *arith, int i)
 #define faster
 #ifdef faster
 static int
-__schro_arith_decode_bit (SchroArith *arith, int i)
+__schro_arith_decode_bit (SchroArith *arith, unsigned int i)
 {
   unsigned int range_x_prob;
   int value;
@@ -322,7 +322,7 @@ __schro_arith_decode_bit (SchroArith *arith, int i)
 }
 #else
 static int
-__schro_arith_decode_bit (SchroArith *arith, int i)
+__schro_arith_decode_bit (SchroArith *arith, unsigned int i)
 {
   unsigned int range;
   unsigned int probability0;
@@ -540,8 +540,8 @@ schro_arith_estimate_sint (SchroArith *arith, int 
cont_context,
 
 #if 0
 int
-_schro_arith_decode_uint (SchroArith *arith, int cont_context,
-    int value_context)
+_schro_arith_decode_uint (SchroArith *arith, unsigned int cont_context,
+    unsigned int value_context)
 {
   int bits;
   int count=0;
@@ -561,8 +561,8 @@ _schro_arith_decode_uint (SchroArith *arith, int 
cont_context,
 #endif
 
 int
-_schro_arith_decode_sint (SchroArith *arith, int cont_context,
-    int value_context, int sign_context)
+_schro_arith_decode_sint (SchroArith *arith, unsigned int cont_context,
+    unsigned int value_context, unsigned int sign_context)
 {
   int bits;
   int count=0;
@@ -613,21 +613,21 @@ schro_arith_encode_sint (SchroArith *arith, int 
cont_context,
 }
 
 int
-schro_arith_decode_bit (SchroArith *arith, int context)
+schro_arith_decode_bit (SchroArith *arith, unsigned int context)
 {
   return _schro_arith_decode_bit (arith, context);
 }
 
 int
-schro_arith_decode_uint (SchroArith *arith, int cont_context,
-    int value_context)
+schro_arith_decode_uint (SchroArith *arith, unsigned int cont_context,
+    unsigned int value_context)
 {
   return _schro_arith_decode_uint (arith, cont_context, value_context);
 }
 
 int
-schro_arith_decode_sint (SchroArith *arith, int cont_context,
-    int value_context, int sign_context)
+schro_arith_decode_sint (SchroArith *arith, unsigned int cont_context,
+    unsigned int value_context, unsigned int sign_context)
 {
   return _schro_arith_decode_sint (arith, cont_context,
       value_context, sign_context);
diff --git a/schroedinger/schroarith.h b/schroedinger/schroarith.h
index 4af41fe..43950b1 100644
--- a/schroedinger/schroarith.h
+++ b/schroedinger/schroarith.h
@@ -88,7 +88,7 @@ typedef struct _SchroArith SchroArith;
 typedef struct _SchroArithContext SchroArithContext;
 
 struct _SchroArithContext {
-  int next;
+  unsigned int next;
   int stat_range;
   int n_bits;
   int n_symbols;
@@ -99,12 +99,12 @@ struct _SchroArithContext {
 struct _SchroArith {
   SchroBuffer *buffer;
   uint8_t *dataptr;
+  uintptr_t offset;
 
   uint32_t range[2];
   uint32_t code;
   uint32_t range_size;
   int cntr;
-  int offset;
   int carry;
   uint8_t shift;
 
@@ -127,11 +127,11 @@ void schro_arith_encode_uint (SchroArith *arith, int 
cont_context,
 void schro_arith_encode_sint (SchroArith *arith, int cont_context,
     int value_context, int sign_context, int value);
 
-int schro_arith_decode_bit (SchroArith *arith, int context);
-int schro_arith_decode_uint (SchroArith *arith, int cont_context,
-    int value_context);
-int schro_arith_decode_sint (SchroArith *arith, int cont_context,
-    int value_context, int sign_context);
+int schro_arith_decode_bit (SchroArith *arith, unsigned int context);
+int schro_arith_decode_uint (SchroArith *arith, unsigned int cont_context,
+    unsigned int value_context);
+int schro_arith_decode_sint (SchroArith *arith, unsigned int cont_context,
+    unsigned int value_context, unsigned int sign_context);
 
 void _schro_arith_encode_bit (SchroArith *arith, int context, int
     value) SCHRO_INTERNAL;
@@ -140,8 +140,8 @@ void _schro_arith_encode_uint (SchroArith *arith, int 
cont_context,
 void _schro_arith_encode_sint (SchroArith *arith, int cont_context,
     int value_context, int sign_context, int value) SCHRO_INTERNAL;
 
-int _schro_arith_decode_sint (SchroArith *arith, int cont_context,
-    int value_context, int sign_context) SCHRO_INTERNAL;
+int _schro_arith_decode_sint (SchroArith *arith, unsigned int cont_context,
+    unsigned int value_context, unsigned int sign_context) SCHRO_INTERNAL;
 
 void schro_arith_estimate_bit (SchroArith *arith, int i, int value);
 void schro_arith_estimate_uint (SchroArith *arith, int cont_context,
@@ -151,7 +151,7 @@ void schro_arith_estimate_sint (SchroArith *arith, int 
cont_context,
 
 #ifdef SCHRO_ARITH_DEFINE_INLINE
 static int
-_schro_arith_decode_bit (SchroArith *arith, int i)
+_schro_arith_decode_bit (SchroArith *arith, unsigned int i)
 {
   unsigned int range_x_prob;
   unsigned int value;
@@ -198,8 +198,8 @@ _schro_arith_decode_bit (SchroArith *arith, int i)
 }
 
 static int
-_schro_arith_decode_uint (SchroArith *arith, int cont_context,
-    int value_context)
+_schro_arith_decode_uint (SchroArith *arith, unsigned int cont_context,
+    unsigned int value_context)
 {
   int bits;
   int count=0;
-- 
1.5.5




-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Schrodinger-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/schrodinger-devel

Reply via email to