--- /dev/null
+#ifndef STLPLUS_STRING_INT\r
+#define STLPLUS_STRING_INT\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+// Author: Andy Rushton\r
+// Copyright: (c) Southampton University 1999-2004\r
+// (c) Andy Rushton 2004-2009\r
+// License: BSD License, see ../docs/license.html\r
+\r
+// Convert integer types to/from string\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+#include "strings_fixes.hpp"\r
+#include "format_types.hpp"\r
+#include <string>\r
+#include <stdexcept>\r
+\r
+namespace stlplus\r
+{\r
+\r
+ ////////////////////////////////////////////////////////////////////////////////\r
+ // Conversions of Integer types to string\r
+ ////////////////////////////////////////////////////////////////////////////////\r
+\r
+ // The radix (i.e. base) for these conversions can be any value from base 2 to base 36\r
+ // specifying any other radix causes std::invalid_argument to be thrown\r
+\r
+ // The way in which the radix is displayed is defined in radix_types.hpp\r
+ // If any other value is used, std::invalid_argument is thrown\r
+\r
+ // The width argument specifies the number of numerical digits to use in the result\r
+ // This is a minimum - if the value requires more digits then it will be wider than the width argument\r
+ // However, if it is smaller, then it will be extended to the specified width\r
+ // Then, the radix display prefix is added to this width\r
+\r
+ // For example, using the hash representation of 0 in hex with width=4 gives:\r
+ // 16#0000 - so there's 4 digits in the number part\r
+\r
+ std::string short_to_string(short i,\r
+ unsigned radix = 10,\r
+ radix_display_t display = radix_c_style_or_hash,\r
+ unsigned width = 0)\r
+ throw(std::invalid_argument);\r
+\r
+ std::string unsigned_short_to_string(unsigned short i,\r
+ unsigned radix = 10,\r
+ radix_display_t display = radix_c_style_or_hash,\r
+ unsigned width = 0)\r
+ throw(std::invalid_argument);\r
+\r
+ std::string int_to_string(int i,\r
+ unsigned radix = 10,\r
+ radix_display_t display = radix_c_style_or_hash,\r
+ unsigned width = 0)\r
+ throw(std::invalid_argument);\r
+\r
+ std::string unsigned_to_string(unsigned i,\r
+ unsigned radix = 10,\r
+ radix_display_t display = radix_c_style_or_hash,\r
+ unsigned width = 0)\r
+ throw(std::invalid_argument);\r
+\r
+ std::string long_to_string(long i,\r
+ unsigned radix = 10,\r
+ radix_display_t display = radix_c_style_or_hash,\r
+ unsigned width = 0)\r
+ throw(std::invalid_argument);\r
+\r
+ std::string unsigned_long_to_string(unsigned long i,\r
+ unsigned radix = 10,\r
+ radix_display_t display = radix_c_style_or_hash,\r
+ unsigned width = 0)\r
+ throw(std::invalid_argument);\r
+\r
+ ////////////////////////////////////////////////////////////////////////////////\r
+ // Convert a string to an integer type\r
+ ////////////////////////////////////////////////////////////////////////////////\r
+ // supports all the formats described above for the reverse conversion\r
+ // If the radix is set to zero, the conversions deduce the radix from the string representation\r
+ // So,\r
+ // 0b prefix is binary,\r
+ // 0 prefix is octal,\r
+ // 0x is hex\r
+ // <base># prefix is my hash format\r
+ // The radix must be either zero as explained above, or in the range 2 to 16\r
+ // A non-zero radix should be used when the string value has no radix information and is non-decimal\r
+ // e.g. the hex value FEDCBA has no indication that it is hex, so specify radix 16\r
+ // Any other value of radix will cause std::invalid_argument to be thrown\r
+\r
+ short string_to_short(const std::string& value,\r
+ unsigned radix = 0)\r
+ throw(std::invalid_argument);\r
+\r
+ unsigned short string_to_unsigned_short(const std::string& value,\r
+ unsigned radix = 0)\r
+ throw(std::invalid_argument);\r
+\r
+ int string_to_int(const std::string& value,\r
+ unsigned radix = 0)\r
+ throw(std::invalid_argument);\r
+\r
+ unsigned string_to_unsigned(const std::string& value,\r
+ unsigned radix = 0)\r
+ throw(std::invalid_argument);\r
+\r
+ long string_to_long(const std::string& value,\r
+ unsigned radix = 0)\r
+ throw(std::invalid_argument);\r
+\r
+ unsigned long string_to_unsigned_long(const std::string& value,\r
+ unsigned radix = 0)\r
+ throw(std::invalid_argument);\r
+\r
+ ////////////////////////////////////////////////////////////////////////////////\r
+\r
+} // end namespace stlplus\r
+\r
+#endif\r