File: cmdline.h

package info (click to toggle)
mimetic 0.9.1-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 2,468 kB
  • ctags: 1,750
  • sloc: cpp: 10,816; sh: 7,999; makefile: 155
file content (49 lines) | stat: -rw-r--r-- 1,452 bytes parent folder | download | duplicates (10)
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
#ifndef MM_CMDLINE_H_
#define MM_CMDLINE_H_
#include <string>
#include <vector>
#include <list>
#include <map>

enum {
    p_none,
    // match
    p_attachment_filename, p_has_binary_attach, p_has_field,
    p_field, p_ifield, p_std_field,
    // options
    p_match_shell, p_match_regex, 
    p_perl_regex, p_case_insensitive, p_encoding,
    p_invert_selection, p_recursive,
    // actions
    p_add_header, p_del_header, p_mod_header, 
    p_add_part_header, p_del_part_header, p_mod_part_header, 
    p_attach, p_detach, p_delete_part, p_delete_msg, p_print_part,
    p_print_msg, p_pipe_to,
    //others
    p_in, p_out, p_help, p_version,
    p_last_item
};

typedef std::pair<std::string, std::string> command_line_switch;
struct command_line
{
    typedef std::string string;
    typedef std::multimap<string,string>::iterator iterator;
    typedef std::multimap<string,string>::const_iterator const_iterator;
    command_line();
    bool parse_cmd_line(int, char**);
    bool is_set(const string&) const;
    bool is_set(int) const;
    string& operator[](const string&);
    iterator begin(const string& s = "");
    iterator end(const string& s = "");
    const_iterator begin(const string& s = "") const;
    const_iterator end(const string& s = "") const;
private:
    void die_if_not_valid() const;
    void add_switch(const string&, const string&);
    std::multimap<string,string> m_map;
    char m_is_opt_set[p_last_item];
};

#endif