[BACK]Return to characters_and_numbers.adb CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Math_Lib / Numbers

Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Numbers/characters_and_numbers.adb, Revision 1.1

1.1     ! maekawa     1: package body Characters_and_Numbers is
        !             2:
        !             3:   function Convert ( c : character ) return natural is
        !             4:
        !             5:   -- DESCRIPTION :
        !             6:   --   Returns 10 if the character does not represent a number
        !             7:   --   between 0 and 9, otherwise returns the corresponding number.
        !             8:
        !             9:   begin
        !            10:     case c is
        !            11:       when '0' => return 0;
        !            12:       when '1' => return 1;
        !            13:       when '2' => return 2;
        !            14:       when '3' => return 3;
        !            15:       when '4' => return 4;
        !            16:       when '5' => return 5;
        !            17:       when '6' => return 6;
        !            18:       when '7' => return 7;
        !            19:       when '8' => return 8;
        !            20:       when '9' => return 9;
        !            21:       when others => return 10;
        !            22:     end case;
        !            23:   end Convert;
        !            24:
        !            25:   function Convert_Decimal ( n : natural ) return character is
        !            26:
        !            27:   -- DESCRIPTION :
        !            28:   --   For n in 0..9, the corresponding character representation is returned.
        !            29:
        !            30:   begin
        !            31:     case n is
        !            32:       when 0 => return '0';
        !            33:       when 1 => return '1';
        !            34:       when 2 => return '2';
        !            35:       when 3 => return '3';
        !            36:       when 4 => return '4';
        !            37:       when 5 => return '5';
        !            38:       when 6 => return '6';
        !            39:       when 7 => return '7';
        !            40:       when 8 => return '8';
        !            41:       when 9 => return '9';
        !            42:       when others => return '0';
        !            43:     end case;
        !            44:   end Convert_Decimal;
        !            45:
        !            46:   function Convert_Hexadecimal ( c : character ) return natural is
        !            47:   begin
        !            48:      case c is
        !            49:        when '0' => return 0;
        !            50:        when '1' => return 1;
        !            51:        when '2' => return 2;
        !            52:        when '3' => return 3;
        !            53:        when '4' => return 4;
        !            54:        when '5' => return 5;
        !            55:        when '6' => return 6;
        !            56:        when '7' => return 7;
        !            57:        when '8' => return 8;
        !            58:        when '9' => return 9;
        !            59:        when 'A' => return 10;
        !            60:        when 'B' => return 11;
        !            61:        when 'C' => return 12;
        !            62:        when 'D' => return 13;
        !            63:        when 'E' => return 14;
        !            64:        when 'F' => return 15;
        !            65:           when others => return 16;
        !            66:      end case;
        !            67:   end Convert_Hexadecimal;
        !            68:
        !            69:   function Convert_Hexadecimal ( n : natural ) return character is
        !            70:   begin
        !            71:        if n < 10
        !            72:      then return Convert_Decimal(n);
        !            73:      else case n is
        !            74:             when 10 => return 'A';
        !            75:             when 11 => return 'B';
        !            76:             when 12 => return 'C';
        !            77:             when 13 => return 'D';
        !            78:             when 14 => return 'E';
        !            79:             when 15 => return 'F';
        !            80:             when others => return '0';
        !            81:           end case;
        !            82:     end if;
        !            83:   end Convert_Hexadecimal;
        !            84:
        !            85:   function Convert ( s : String ) return natural is
        !            86:
        !            87:     acc : natural := 0;
        !            88:     cvn : natural;
        !            89:
        !            90:   begin
        !            91:     for i in s'range loop
        !            92:       cvn := Convert(s(i));
        !            93:       if cvn < 10
        !            94:        then acc := acc*10 + cvn;
        !            95:       end if;
        !            96:     end loop;
        !            97:     return acc;
        !            98:   end Convert;
        !            99:
        !           100:   function Convert ( n : natural ) return String is
        !           101:   begin
        !           102:     if n < 10
        !           103:      then declare
        !           104:             res : String(1..1);
        !           105:           begin
        !           106:             res(1) := Convert_Decimal(n);
        !           107:             return res;
        !           108:           end;
        !           109:      else declare
        !           110:             rest : natural := n mod 10;
        !           111:             head : natural := n/10;
        !           112:             headstr : constant string := Convert(head);
        !           113:             res : String(1..headstr'last+1);
        !           114:           begin
        !           115:             res(headstr'range) := headstr;
        !           116:             res(res'last) := Convert_Decimal(rest);
        !           117:             return res;
        !           118:           end;
        !           119:     end if;
        !           120:   end Convert;
        !           121:
        !           122:   procedure Skip_Spaces ( file : in file_type; c : in out character ) is
        !           123:   begin
        !           124:     get(file,c);
        !           125:     while c = ' ' and not End_of_Line(file) loop
        !           126:       get(file,c);
        !           127:     end loop;
        !           128:   end Skip_Spaces;
        !           129:
        !           130:   procedure Skip_Underscores ( file : in file_type; c : in out character ) is
        !           131:   begin
        !           132:     get(file,c);
        !           133:     while c = '_' and not End_of_Line(file) loop
        !           134:       get(file,c);
        !           135:     end loop;
        !           136:   end Skip_Underscores;
        !           137:
        !           138: end Characters_and_Numbers;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>