/* Return the name of a C datatype able to represent values between lwr and upr, inclusive. If pnByte!=NULL then also write the sizeof for that type (1, 2, or 4) into *pnByte.  */
static const char * minimum_size_type(int lwr, int upr, int *pnByte)
/* Return the name of a C datatype able to represent values between lwr and upr, inclusive. If pnByte!=NULL then also write the sizeof for that type (1, 2, or 4) into *pnByte.  */
static const char * minimum_size_type(int lwr, int upr, int *pnByte)
{
    if( upr<=255 ){
      zType = "unsigned char";
      nByte = 1;
    }else if( upr<65535 ){
      zType = "unsigned short int";
      nByte = 2;
    }else{
      zType = "unsigned int";
      nByte = 4;
    }
  }else if( lwr>=-127 && upr<=127 ){
    zType = "signed char";
    nByte = 1;
  }else if( lwr>=-32767 && upr<32767 ){
    zType = "short";
    nByte = 2;
  }
  if( pnByte ) *pnByte = nByte;
  return zType;
}