home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume43 / gen / part02 / int.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-07-24  |  1.9 KB  |  159 lines

  1. /*
  2. File: int.c
  3.  
  4. Author: Bruce Kritt
  5.  
  6. Description:
  7. */
  8.  
  9. #include "char.h"
  10. #include "string.h"
  11. #include "convert.h"
  12. #include "int.h"
  13.  
  14. void str_to_int(char* string,int& number)
  15. {
  16.     // variables
  17.  
  18.     int sign;
  19.  
  20.     // logic
  21.  
  22.     // Prepare for the conversion.
  23.  
  24.     str_trim(string);
  25.  
  26.     str_rc(string);
  27.  
  28.     number = 0;
  29.  
  30.     // Get the sign.
  31.  
  32.     sign = is_sign(*string) ? *string : '+';
  33.  
  34.     if (is_sign(*string)) ++string;
  35.  
  36.     // Convert the digits.
  37.  
  38.     while (is_digit(*string))
  39.  
  40.         inject_digit(*string++,number);
  41.  
  42.     // Convert the sign.
  43.  
  44.     inject_sign(sign,number);
  45.  
  46.     return;
  47.  
  48. }       // end function str_to_int()
  49.  
  50. void int_to_str(int number,char* string)
  51. {
  52.     // variables
  53.  
  54.     int sign;
  55.     long mask;
  56.     int digit;
  57.  
  58.     // logic
  59.  
  60.     // Convert the sign.
  61.  
  62.     extract_sign(sign,number);
  63.  
  64.     if (sign == '-') *string++ = sign;
  65.  
  66.     // Initialize the mask.
  67.  
  68.     init_mask(mask,number);
  69.  
  70.     // Convert the digits.
  71.  
  72.     while (mask > 0)
  73.     {
  74.         extract_digit(digit,number,mask);
  75.  
  76.         *string++ = digit;
  77.     }
  78.  
  79.     // Terminate the string.
  80.  
  81.     *string = 0;
  82.  
  83.     return;
  84.  
  85. }       // end function int_to_str()
  86.  
  87. void str_to_long(char* string,long& number)
  88. {
  89.     // variables
  90.  
  91.     int sign;
  92.  
  93.     // logic
  94.  
  95.     // Prepare for the conversion.
  96.  
  97.     str_trim(string);
  98.  
  99.     str_rc(string);
  100.  
  101.     number = 0;
  102.  
  103.     // Get the sign.
  104.  
  105.     sign = is_sign(*string) ? *string : '+';
  106.  
  107.     if (is_sign(*string)) ++string;
  108.  
  109.     // Convert the digits.
  110.  
  111.     while (is_digit(*string))
  112.  
  113.         inject_digit(*string++,number);
  114.  
  115.     // Convert the sign.
  116.  
  117.     inject_sign(sign,number);
  118.  
  119.     return;
  120.  
  121. }       // end function str_to_long()
  122.  
  123. void long_to_str(long number,char* string)
  124. {
  125.     // variables
  126.  
  127.     int sign;
  128.     long mask;
  129.     int digit;
  130.  
  131.     // logic
  132.  
  133.     // Convert the sign.
  134.  
  135.     extract_sign(sign,number);
  136.  
  137.     if (sign == '-') *string++ = sign;
  138.  
  139.     // Initialize the mask.
  140.  
  141.     init_mask(mask,number);
  142.  
  143.     // Convert the digits.
  144.  
  145.     while (mask > 0)
  146.     {
  147.         extract_digit(digit,number,mask);
  148.  
  149.         *string++ = digit;
  150.     }
  151.  
  152.     // Terminate the string.
  153.  
  154.     *string = 0;
  155.  
  156.     return;
  157.  
  158. }       // end function long_to_str()
  159.