Format.h revision 5d5ec05b
1/*
2 * Copyright 2003-2010, Haiku, Inc.
3 * Distributed under the terms of the MIT Licence.
4*/
5#ifndef _B_FORMAT_H_
6#define _B_FORMAT_H_
7
8#include <FormatParameters.h>
9#include <FormattingConventions.h>
10#include <Locker.h>
11#include <Language.h>
12#include <SupportDefs.h>
13
14
15// types of fields contained in formatted strings
16enum {
17	// number format fields
18	B_CURRENCY_FIELD,
19	B_DECIMAL_SEPARATOR_FIELD,
20	B_EXPONENT_FIELD,
21	B_EXPONENT_SIGN_FIELD,
22	B_EXPONENT_SYMBOL_FIELD,
23	B_FRACTION_FIELD,
24	B_GROUPING_SEPARATOR_FIELD,
25	B_INTEGER_FIELD,
26	B_PERCENT_FIELD,
27	B_PERMILLE_FIELD,
28	B_SIGN_FIELD,
29
30	// date format fields
31	// TODO: ...
32};
33
34// structure filled in while formatting
35struct format_field_position {
36	uint32	field_type;
37	int32	start;
38	int32	length;
39};
40
41
42class BLocale;
43
44class BFormat {
45public:
46			status_t			InitCheck() const;
47protected:
48								BFormat(const BLocale* locale = NULL);
49								BFormat(const BLanguage& language,
50									const BFormattingConventions& conventions);
51
52								BFormat(const BFormat& other);
53	virtual 					~BFormat();
54
55private:
56			BFormat&			operator=(const BFormat& other);
57
58			status_t			_Initialize(const BLocale& locale);
59			status_t			_Initialize(const BLanguage& language,
60									const BFormattingConventions& conventions);
61
62protected:
63			BFormattingConventions	fConventions;
64			BLanguage			fLanguage;
65			status_t			fInitStatus;
66};
67
68
69#endif	// _B_FORMAT_H_
70