File: csCommandHandlerBase.h

package info (click to toggle)
codelite 17.0.0%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 136,244 kB
  • sloc: cpp: 491,547; ansic: 280,393; php: 10,259; sh: 8,930; lisp: 7,664; vhdl: 6,518; python: 6,020; lex: 4,920; yacc: 3,123; perl: 2,385; javascript: 1,715; cs: 1,193; xml: 1,110; makefile: 804; cobol: 741; sql: 709; ruby: 620; f90: 566; ada: 534; asm: 464; fortran: 350; objc: 289; tcl: 258; java: 157; erlang: 61; pascal: 51; ml: 49; awk: 44; haskell: 36
file content (91 lines) | stat: -rw-r--r-- 3,537 bytes parent folder | download | duplicates (4)
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#ifndef CSCOMMANDHANDLERBASE_H
#define CSCOMMANDHANDLERBASE_H

#include "file_logger.h"
#include "JSON.h"
#include <cl_command_event.h>
#include <wx/event.h>
#include <wx/sharedptr.h>
#include <wx/string.h>

class csManager;
wxDECLARE_EVENT(wxEVT_COMMAND_PROCESSED, clCommandEvent);

#define CHECK_STR_PARAM(str_option, sVal)                       \
    if(!options.hasNamedObject(str_option)) {                   \
        clERROR() << "Command is missing field:" << str_option; \
        NotifyCompletion();                                     \
        return;                                                 \
    }                                                           \
    sVal = options.namedObject(str_option).toString();

#define CHECK_INT_PARAM(str_option, iVal)                       \
    if(!options.hasNamedObject(str_option)) {                   \
        clERROR() << "Command is missing field:" << str_option; \
        NotifyCompletion();                                     \
        return;                                                 \
    }                                                           \
    iVal = options.namedObject(str_option).toInt();

#define CHECK_BOOL_PARAM(str_option, bVal)                      \
    if(!options.hasNamedObject(str_option)) {                   \
        clERROR() << "Command is missing field:" << str_option; \
        NotifyCompletion();                                     \
        return;                                                 \
    }                                                           \
    bVal = options.namedObject(str_option).toBool();

#define CHECK_ARRSTR_PARAM(str_option, arrVal)                  \
    if(!options.hasNamedObject(str_option)) {                   \
        clERROR() << "Command is missing field:" << str_option; \
        NotifyCompletion();                                     \
        return;                                                 \
    }                                                           \
    arrVal = options.namedObject(str_option).toArrayString();

#define CHECK_STR_PARAM_OPTIONAL(str_option, sVal) \
    if(options.hasNamedObject(str_option)) { sVal = options.namedObject(str_option).toString(); }

#define CHECK_INT_PARAM_OPTIONAL(str_option, iVal) \
    if(options.hasNamedObject(str_option)) { iVal = options.namedObject(str_option).toInt(); }

#define CHECK_BOOL_PARAM_OPTIONAL(str_option, bVal) \
    if(options.hasNamedObject(str_option)) { bVal = options.namedObject(str_option).toBool(); }

#define CHECK_ARRSTR_PARAM_OPTIONAL(str_option, arrVal) \
    if(options.hasNamedObject(str_option)) { arrVal = options.namedObject(str_option).toArrayString(); }

class csCommandHandlerBase
{
protected:
    csManager* m_manager;
    bool m_notifyOnExit;

public:
    typedef wxSharedPtr<csCommandHandlerBase> Ptr_t;

protected:
    void NotifyCompletion();
    void SetNotifyCompletion(bool b) { m_notifyOnExit = b; }

public:
    /**
     * @brief process a request from the command line and print the result to the stdout
     * @param the handler options
     */
    virtual void DoProcessCommand(const JSONItem& options) = 0;

public:
    csCommandHandlerBase(csManager* manager);
    virtual ~csCommandHandlerBase();

    csManager* GetSink() { return m_manager; }

    /**
     * @brief process a request from the command line and print the result to the stdout
     * @param the handler options
     */
    void Process(const JSONItem& options);
};

#endif // CSCOMMANDHANDLERBASE_H