blob: bf2627126977d4bce5f809829eec86831bc1b444 (
plain)
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
|
/**
** \file task/int-task.cc
** \brief IntTask class implementation.
**
*/
#include <exception>
#include <iostream>
#include <common.hh>
#include <task/int-task.hh>
namespace task
{
IntTask::IntTask(int& var,
int min,
int max,
const char* module_name,
const char* desc,
const char* name,
std::string deps)
: ArgumentTask(name, module_name, desc, "NUM", deps)
, var_(var)
, min_(min)
, max_(max)
{}
void IntTask::arg_set(const std::string& arg) const
{
arg_ = arg;
try
{
var_ = stol(arg);
}
catch (const std::invalid_argument& e)
{
std::cerr << program_name << ": expected an integer: " << arg << '\n';
throw;
}
if (!(min_ <= var_ && var_ <= max_))
{
std::cerr << program_name << ": invalid integer: " << var_ << '\n';
throw std::invalid_argument(std::string("invalid integer: ") + arg_);
}
}
void IntTask::execute() const
{
// Assignment done in arg_set.
}
} //namespace task
|