File: formatter.h

package info (click to toggle)
einstein 2.0.dfsg.2-3
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 2,164 kB
  • ctags: 1,652
  • sloc: cpp: 10,429; makefile: 118; sh: 1
file content (63 lines) | stat: -rw-r--r-- 1,172 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#ifndef __FORMATTER_H__
#define __FORMATTER_H__


#include <stdarg.h>
#include <string>
#include <vector>


class ArgValue;


/// Localized message formatter
class Formatter
{
    public:
        typedef enum {
            EMPTY_CMD = 0,
            TEXT_COMMAND,
            INT_ARG,
            STRING_ARG,
            DOUBLE_ARG,
            FLOAT_ARG
        } CmdType;
        
        typedef struct
        {
            CmdType type;
            void *data;
        } Command;

    private:
        int commandsCnt;
        int argsCnt;

        Command *commands;
        
        CmdType *args;

    public:
        /// Create localized message from message buffer.
        /// \param data buffer contained message file
        /// \param offset offset to message from buffer start
        Formatter(unsigned char *data, int offset);
        ~Formatter();

    public:
        /// Get message text.
        std::wstring getMessage() const;
        
        /// Fromat message
        /// \param ap list of arguments
        std::wstring format(va_list ap) const;

    private:
        std::wstring format(std::vector<ArgValue*> &argValues) const;
};




#endif