/* ** Copyright 2004, Ingo Weinhold, bonefish@cs.tu-berlin.de. All rights reserved. ** Distributed under the terms of the OpenBeOS License. */ #include #include #include #include void format_integer(const char *test, const BGenericNumberFormat &format, const BIntegerFormatParameters *parameters, int64 number) { const int bufferSize = 1024; char buffer[bufferSize]; status_t error = format.FormatInteger(parameters, number, buffer, bufferSize); if (error == B_OK) printf("%-20s `%s'\n", test, buffer); else printf("%-20s Failed to format number: %s\n", test, strerror(error)); } void format_integer(BGenericNumberFormat &format, int64 number) { printf("number: %lld\n", number); BIntegerFormatParameters parameters( format.DefaultIntegerFormatParameters()); format_integer(" default:", format, ¶meters, number); parameters.SetFormatWidth(25); format_integer(" right aligned:", format, ¶meters, number); parameters.SetAlignment(B_ALIGN_FORMAT_LEFT); format_integer(" left aligned:", format, ¶meters, number); parameters.SetFormatWidth(1); parameters.SetAlignment(B_ALIGN_FORMAT_RIGHT); parameters.SetSignPolicy(B_USE_POSITIVE_SIGN); format_integer(" use plus:", format, ¶meters, number); parameters.SetSignPolicy(B_USE_SPACE_FOR_POSITIVE_SIGN); format_integer(" space for plus:", format, ¶meters, number); parameters.SetSignPolicy(B_USE_NEGATIVE_SIGN_ONLY); parameters.SetMinimalIntegerDigits(0); format_integer(" min digits 0:", format, ¶meters, number); parameters.SetMinimalIntegerDigits(5); format_integer(" min digits 5:", format, ¶meters, number); parameters.SetMinimalIntegerDigits(20); format_integer(" min digits 20:", format, ¶meters, number); parameters.SetMinimalIntegerDigits(30); format_integer(" min digits 30:", format, ¶meters, number); } void format_float(const char *test, const BGenericNumberFormat &format, const BFloatFormatParameters *parameters, double number) { const int bufferSize = 1024; char buffer[bufferSize]; status_t error = format.FormatFloat(parameters, number, buffer, bufferSize); if (error == B_OK) printf("%-20s `%s'\n", test, buffer); else printf("%-20s Failed to format number: %s\n", test, strerror(error)); } void format_float(BGenericNumberFormat &format, double number) { printf("number: %g\n", number); BFloatFormatParameters parameters( format.DefaultFloatFormatParameters()); format_float(" default:", format, ¶meters, number); } int main() { BGenericNumberFormat format; printf("Integer\n"); printf("=======\n\n"); format_integer(format, 0); format_integer(format, 1234567890LL); format_integer(format, -1234567890LL); format.DefaultIntegerFormatParameters()->SetUseGrouping(true); format_integer(format, 0); format_integer(format, 1234567890LL); format_integer(format, -1234567890LL); printf("\n\nFloat\n"); printf("=====\n\n"); format_float(format, 0.0); format_float(format, -0.0); format_float(format, 1234567890.0); format_float(format, -1234567890.0); format_float(format, 1234.56789); format_float(format, -1234.56789); format.DefaultFloatFormatParameters()->SetUseGrouping(true); format_float(format, 0.0); format_float(format, -0.0); format_float(format, 1234567890.0); format_float(format, -1234567890.0); format_float(format, 1234.56789); format_float(format, -1234.56789); return 0; }