main index

section index



/* non standard functions */

/*-------------------------------------------------------------*/
/* warning : param is called several times. Use those functions with care.
  For example, they are not suitable for "netwib_c2_isalnum(c++)". */
#define netwib_c2_isalnum(c) ( netwib_c2_isalpha(c) || netwib_c2_isdigit(c) )
#define netwib_c2_isalpha(c) ( netwib_c2_islower(c) || netwib_c2_isupper(c) )
#define netwib_c2_isdigit(c) ( ((c)>='0') && ((c)<='9') )
#define netwib_c2_islower(c) ( ((c)>='a') && ((c)<='z') )
#define netwib_c2_isupper(c) ( ((c)>='A') && ((c)<='Z') )
#define netwib_c2_isxdigit(c) ( netwib_c2_isdigit(c) || ( ((c)>='a') && ((c)<='f') ) || ( ((c)>='A') && ((c)<='F') ) )
#define netwib_c2_isprint(c) ( (c)>=32 && (c)<=126 )
#define netwib_c2_isprint2(c) ( netwib_c2_isprint(c) || (c)=='\t' || (c)=='\r' || (c)=='\n' )

/*-------------------------------------------------------------*/
/* Warning : first 2 functions change the parameter */
#define netwib_c2_lower(c) if (netwib_c2_isupper(c)) { c += 'a' - 'A'; }
#define netwib_c2_upper(c) if (netwib_c2_islower(c)) { c -= 'a' - 'A'; }
/* Warning : param is called several times */
#define netwib_c2_lc(c) (netwib_c2_isupper(c)?((c)+'a'-'A'):(c))
#define netwib_c2_uc(c) (netwib_c2_islower(c)?((c)-'a'+'A'):(c))

/*-------------------------------------------------------------*/
/* byte extract from uint16 or uint32 */
#define netwib_c2_uint16_0(x) (netwib_uint8)(((x)>>8)&0xFF)
#define netwib_c2_uint16_1(x) (netwib_uint8)((x)&0xFF)
#define netwib_c2_uint32_0(x) (netwib_uint8)(((x)>>24)&0xFF)
#define netwib_c2_uint32_1(x) (netwib_uint8)(((x)>>16)&0xFF)
#define netwib_c2_uint32_2(x) (netwib_uint8)(((x)>>8)&0xFF)
#define netwib_c2_uint32_3(x) (netwib_uint8)((x)&0xFF)
#define netwib_c2_uint64_0(x) (netwib_uint8)(((x)>>56)&0xFF)
#define netwib_c2_uint64_1(x) (netwib_uint8)(((x)>>48)&0xFF)
#define netwib_c2_uint64_2(x) (netwib_uint8)(((x)>>40)&0xFF)
#define netwib_c2_uint64_3(x) (netwib_uint8)(((x)>>32)&0xFF)
#define netwib_c2_uint64_4(x) (netwib_uint8)(((x)>>24)&0xFF)
#define netwib_c2_uint64_5(x) (netwib_uint8)(((x)>>16)&0xFF)
#define netwib_c2_uint64_6(x) (netwib_uint8)(((x)>>8)&0xFF)
#define netwib_c2_uint64_7(x) (netwib_uint8)((x)&0xFF)

/*-------------------------------------------------------------*/
/* recomposition of uint16 or uint32 */
#define netwib_c2_uint16_2(a,b) (netwib_uint16)(((a)<<8)|(b))
#define netwib_c2_uint32_4(a,b,c,d) (netwib_uint32)(((a)<<24)|((b)<<16)|((c)<<8)|(d))
#define netwib_c2_uint64_8(a,b,c,d,e,f,g,h) (netwib_uintmax)((((netwib_uintmax)(a))<<56)|(((netwib_uintmax)(b))<<48)|(((netwib_uintmax)(c))<<40)|(((netwib_uintmax)(d))<<32)|(((netwib_uintmax)(e))<<24)|(((netwib_uintmax)(f))<<16)|(((netwib_uintmax)(g))<<8)|((netwib_uintmax)(h)))

/*-------------------------------------------------------------*/
/* 0->16 to '0'->'F' without error checking */
#define netwib_c2_16toc(x) (char)((x<=9)?('0'+x):('a'+x-10))
#define netwib_c2_16toC(x) (char)((x<=9)?('0'+x):('A'+x-10))
/* '0'->'F' to 0->16 without error checking */
#define netwib_c2_cto16(x) ((x>='0'&&x<='9')?(x-'0'):((x>='a'&&x<='f')?(10+x-'a'):(10+x-'A')))
/* 0->9 to '0'->'9' without error checking */
#define netwib_c2_9toc(x) (char)('0'+x)
/* '0'->'9' to 0->9 without error checking */
#define netwib_c2_cto9(x) (x-'0')




main index

section index