string s = d.to_string ();
assert (s == "42");
+ unowned string unparsed;
+ double.try_parse ("3.45mm", out d, out unparsed);
+ assert (d == 3.45);
+ assert (unparsed == "mm");
+
// ensure that MIN and MAX are valid values
d = double.MIN;
assert (d == double.MIN);
string s = i.to_string ();
assert (s == "42");
+ unowned string unparsed;
+ int64 i64;
+ int64.try_parse ("-4711inch", out i64, out unparsed);
+ assert (i64 == -4711);
+ assert (unparsed == "inch");
+ int64.try_parse ("-31415km", out i64);
+ assert (i64 == -31415);
+ uint64 ui64;
+ uint64.try_parse ("4711yards", out ui64, out unparsed);
+ assert (ui64 == 4711);
+ assert (unparsed == "yards");
+ uint64.try_parse ("31415yards", out ui64);
+ assert (ui64 == 31415);
+
// ensure that MIN and MAX are valid values
i = int.MIN;
assert (i == int.MIN);
}
[Version (since = "2.12")]
- public static bool try_parse (string str, out int64 result = null) {
+ public static bool try_parse (string str, out int64 result = null, out unowned string unparsed = null) {
char* endptr;
result = ascii_strtoll (str, out endptr, 0);
if (endptr == (char*) str + str.length) {
+ unparsed = "";
return true;
} else {
+ unparsed = (string) endptr;
return false;
}
}
public static uint64 parse (string str) {
return ascii_strtoull (str, null, 0);
}
- public static bool try_parse (string str, out uint64 result = null) {
+ public static bool try_parse (string str, out uint64 result = null, out unowned string unparsed = null) {
char* endptr;
result = ascii_strtoull (str, out endptr, 0);
if (endptr == (char*) str + str.length) {
+ unparsed = "";
return true;
} else {
+ unparsed = (string) endptr;
return false;
}
}
public static double parse (string str) {
return ascii_strtod (str, null);
}
- public static bool try_parse (string str, out double result = null) {
+ public static bool try_parse (string str, out double result = null, out unowned string unparsed = null) {
char* endptr;
result = ascii_strtod (str, out endptr);
if (endptr == (char*) str + str.length) {
+ unparsed = "";
return true;
} else {
+ unparsed = (string) endptr;
return false;
}
}