Unify character casts, reorganize checks
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index 2d3a1f7..ad854cb 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -1962,16 +1962,13 @@
         _restrictedEntityFlag[i] = false;

     }

     for( int i=0; i<NUM_ENTITIES; ++i ) {

-        TIXMLASSERT( entities[i].value < ENTITY_RANGE );

-        if ( entities[i].value < ENTITY_RANGE ) {

-            _entityFlag[ (int)entities[i].value ] = true;

-        }

+        const char entityValue = entities[i].value;

+        TIXMLASSERT( 0 <= entityValue && entityValue < ENTITY_RANGE );

+        _entityFlag[ (unsigned char)entityValue ] = true;

     }

-    // Clang doesn't like indexing arrays with 'char'

-    // so cast to int. (Looks strange.)

-    _restrictedEntityFlag[(int)'&'] = true;

-    _restrictedEntityFlag[(int)'<'] = true;

-    _restrictedEntityFlag[(int)'>'] = true;	// not required, but consistency is nice

+    _restrictedEntityFlag[(unsigned char)'&'] = true;

+    _restrictedEntityFlag[(unsigned char)'<'] = true;

+    _restrictedEntityFlag[(unsigned char)'>'] = true;	// not required, but consistency is nice

     _buffer.Push( 0 );

 }

 

@@ -2039,7 +2036,7 @@
                 // Check for entities. If one is found, flush

                 // the stream up until the entity, write the

                 // entity, and keep looking.

-                if ( flag[(unsigned)(*q)] ) {

+                if ( flag[(unsigned char)(*q)] ) {

                     while ( p < q ) {

                         Print( "%c", *p );

                         ++p;