Repository navigation
Expand file tree
/
Copy pathCommandHandler.cc
More file actions
105 lines (87 loc) · 2.92 KB
/
Copy pathCommandHandler.cc
File metadata and controls
105 lines (87 loc) · 2.92 KB
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
92
93
94
95
96
97
98
99
100
101
102
103
/***
DEVSIM
Copyright 2013 DEVSIM LLC
SPDX-License-Identifier: Apache-2.0
***/
#include "Python.h"
#include "CommandHandler.hh"
#include "CommandHandlerCommon.cc"
#include "GetArgs.hh"
#include "dsAssert.hh"
CommandHandler::CommandHandler(void *command_info)
: command_info_(command_info), return_code_(0)
{
dsGetArgs::CommandInfo &info = *(reinterpret_cast<dsGetArgs::CommandInfo *>(command_info_));
command_name = info.command_name_;
}
CommandHandler::~CommandHandler()
{
dsGetArgs::CommandInfo &info = *(reinterpret_cast<dsGetArgs::CommandInfo *>(command_info_));
delete info.get_args_;
}
const std::string &CommandHandler::GetCommandName() const
{
return command_name;
}
void CommandHandler::SetEmptyResult()
{
return_code_ = 1;
Py_INCREF(Py_None);
return_object_ = ObjectHolder(Py_None);
error_string_.clear();
}
void CommandHandler::SetErrorResult(const std::string &errorString)
{
return_code_ = 0;
return_object_.clear();
error_string_ = errorString;
}
void CommandHandler::SetObjectResult(ObjectHolder obj)
{
return_object_ = obj;
return_code_ = 1;
error_string_.clear();
}
bool CommandHandler::processOptions(dsGetArgs::optionList opts, std::string & errors) const
{
dsGetArgs::CommandInfo &info = *(reinterpret_cast<dsGetArgs::CommandInfo *>(command_info_));
dsAssert(!info.get_args_, "UNEXPECTED");
info.get_args_ = new dsGetArgs::GetArgs(opts);
return info.get_args_->processOptions(info, errors);
}
std::string CommandHandler::GetStringOption(const std::string &s) const
{
dsGetArgs::CommandInfo &info = *(reinterpret_cast<dsGetArgs::CommandInfo *>(command_info_));
dsAssert(info.get_args_, "UNEXPECTED");
return info.get_args_->GetStringOption(s);
}
double CommandHandler::GetDoubleOption(const std::string &s) const
{
dsGetArgs::CommandInfo &info = *(reinterpret_cast<dsGetArgs::CommandInfo *>(command_info_));
dsAssert(info.get_args_, "UNEXPECTED");
return info.get_args_->GetDoubleOption(s);
}
int CommandHandler::GetIntegerOption(const std::string &s) const
{
dsGetArgs::CommandInfo &info = *(reinterpret_cast<dsGetArgs::CommandInfo *>(command_info_));
dsAssert(info.get_args_, "UNEXPECTED");
return info.get_args_->GetIntegerOption(s);
}
bool CommandHandler::GetBooleanOption(const std::string &s) const
{
dsGetArgs::CommandInfo &info = *(reinterpret_cast<dsGetArgs::CommandInfo *>(command_info_));
dsAssert(info.get_args_, "UNEXPECTED");
return info.get_args_->GetBooleanOption(s);
}
ObjectHolder CommandHandler::GetObjectHolder(const std::string &s) const
{
dsGetArgs::CommandInfo &info = *(reinterpret_cast<dsGetArgs::CommandInfo *>(command_info_));
dsAssert(info.get_args_, "UNEXPECTED");
return info.get_args_->GetObjectHolder(s);
}
bool CommandHandler::IsSpecified(const std::string &s) const
{
dsGetArgs::CommandInfo &info = *(reinterpret_cast<dsGetArgs::CommandInfo *>(command_info_));
dsAssert(info.get_args_, "UNEXPECTED");
return info.get_args_->IsSpecified(s);
}