absyntax_utils/absyntax_utils.cc
changeset 547 dab341e80664
parent 433 1355adcdad58
child 564 dabffc3086dc
equal deleted inserted replaced
546:8cc4c51c4bfc 547:dab341e80664
    96 }
    96 }
    97 
    97 
    98 
    98 
    99 /* extract the value of an integer from an integer_c object !! */
    99 /* extract the value of an integer from an integer_c object !! */
   100 /* NOTE: it must ignore underscores! */
   100 /* NOTE: it must ignore underscores! */
   101 int extract_integer(symbol_c *sym) {
   101 long long extract_integer_value(symbol_c *sym) {
   102   std::string str = "";
   102   std::string str = "";
   103   integer_c *integer;
   103   integer_c *integer;
   104   neg_integer_c * neg_integer;
   104   neg_integer_c * neg_integer;
   105 
   105 
   106   if ((neg_integer = dynamic_cast<neg_integer_c *>(sym)) != NULL)
   106   if ((neg_integer = dynamic_cast<neg_integer_c *>(sym)) != NULL)
   107     return - extract_integer((integer_c *)neg_integer->exp);
   107     return - extract_integer_value(neg_integer->exp);
   108   
   108   
   109   if ((integer = dynamic_cast<integer_c *>(sym)) == NULL) ERROR;
   109   if ((integer = dynamic_cast<integer_c *>(sym)) == NULL) ERROR;
   110 
   110 
   111   for(unsigned int i = 0; i < strlen(integer->value); i++)
   111   for(unsigned int i = 0; i < strlen(integer->value); i++)
   112     if (integer->value[i] != '_')  str += integer->value[i];
   112     if (integer->value[i] != '_')  str += integer->value[i];
   113 
   113 
   114   return atoi(str.c_str());
   114   /* return atoi(str.c_str()); */
       
   115   return atoll(str.c_str());
   115 }
   116 }
   116 
   117 
   117 
   118 
   118 
   119 
   119 /***********************************************************************/
   120 /***********************************************************************/