absyntax_utils/get_sizeof_datatype.cc
changeset 304 1b6d8e3df1b2
parent 279 c0453b7f99df
child 306 82c1f453cd07
equal deleted inserted replaced
303:0cdf1410bcd8 304:1b6d8e3df1b2
   258   if ( '#' != *sval) ERROR;
   258   if ( '#' != *sval) ERROR;
   259   sval++;
   259   sval++;
   260   if ('\0' == *sval) ERROR;
   260   if ('\0' == *sval) ERROR;
   261 
   261 
   262   /* determine the number of bits used... */
   262   /* determine the number of bits used... */
   263   for (bitsize = 0; '\0' != *sval; sval++, bitsize++) {
   263   for (bitsize = 0; '\0' != *sval; sval++) {
   264     /* consistency check: make sure we only have binary digits! */
   264     /* consistency check: make sure we only have binary digits! */
   265     if (('0' != *sval) && ('1' != *sval))
   265     if (('0' != *sval) && ('1' != *sval) && ('_' != *sval))
   266       ERROR;
   266       ERROR;
       
   267 
       
   268     if ('_' != *sval) bitsize ++; /* 1 bits per binary digit */
   267   }
   269   }
   268 
   270 
   269   /* special case... if (value == 0) <=> (bitsize == 0), return bit size of 1 ! */
   271   /* special case... if (value == 0) <=> (bitsize == 0), return bit size of 1 ! */
   270   if (0 == bitsize) bitsize = 1;
   272   if (0 == bitsize) bitsize = 1;
   271 
   273 
   289   if ( '#' != *sval) ERROR;
   291   if ( '#' != *sval) ERROR;
   290   sval++;
   292   sval++;
   291   if ('\0' == *sval) ERROR;
   293   if ('\0' == *sval) ERROR;
   292 
   294 
   293   /* determine the number of bits used... */
   295   /* determine the number of bits used... */
   294   for (bitsize = 0; '\0' != *sval; sval++, bitsize += 3 /* 3 bits per octal digit */) {
   296   for (bitsize = 0; '\0' != *sval; sval++) {
   295     /* consistency check: make sure we only have octal digits! */
   297     /* consistency check: make sure we only have octal digits! */
   296     /* Assumes ASCII */
   298     /* Assumes ASCII */
   297     if (('0' > *sval) || ('7' < *sval))
   299     if ((('0' > *sval) || ('7' < *sval)) && ('_' != *sval))
   298       ERROR;
   300       ERROR;
       
   301 
       
   302     if ('_' != *sval) bitsize += 3; /* 3 bits per octal digit */
   299   }
   303   }
   300 
   304 
   301   /* special case... if (value == 0) <=> (bitsize == 0), return bit size of 1 ! */
   305   /* special case... if (value == 0) <=> (bitsize == 0), return bit size of 1 ! */
   302   if (0 == bitsize) bitsize = 1;
   306   if (0 == bitsize) bitsize = 1;
   303 
   307 
   324   if ( '#' != *sval) ERROR;
   328   if ( '#' != *sval) ERROR;
   325   sval++;
   329   sval++;
   326   if ('\0' == *sval) ERROR;
   330   if ('\0' == *sval) ERROR;
   327 
   331 
   328   /* determine the number of bits used... */
   332   /* determine the number of bits used... */
   329   for (bitsize = 0; '\0' != *sval; sval++, bitsize += 4 /* 4 bits per hex digit */) {
   333   for (bitsize = 0; '\0' != *sval; sval++) {
   330     /* consistency check: make sure we only have hex digits! */
   334     /* consistency check: make sure we only have hex digits or underscores! */
   331     /* Assumes ASCII */
   335     /* Assumes ASCII */
   332     if (!(('0' <= *sval) && ('9' >= *sval)) && 
   336     if (!(('0' <= *sval) && ('9' >= *sval)) && 
   333         !(('A' <= *sval) && ('F' >= *sval)) &&
   337         !(('A' <= *sval) && ('F' >= *sval)) &&
   334         !(('a' <= *sval) && ('b' >= *sval)))
   338         !(('a' <= *sval) && ('b' >= *sval)) &&
       
   339         ! ('_' == *sval))
   335       ERROR;
   340       ERROR;
       
   341 
       
   342     if ('_' != *sval) bitsize += 4; /* 4 bits per hex digit */
   336   }
   343   }
   337 
   344 
   338   /* special case... if (value == 0) <=> (bitsize == 0), return bit size of 1 ! */
   345   /* special case... if (value == 0) <=> (bitsize == 0), return bit size of 1 ! */
   339   if (0 == bitsize) bitsize = 1;
   346   if (0 == bitsize) bitsize = 1;
   340 
   347