-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaddress.cpp
More file actions
70 lines (65 loc) · 1.79 KB
/
Copy pathaddress.cpp
File metadata and controls
70 lines (65 loc) · 1.79 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
/*
* address.cpp
*
* Created on: 2017¦~12¤ë20¤é
* Author: Jake
*/
#include "address.h"
std::vector<Entry> Address::entries;
bool Address::parse_arg(const std::vector<std::string>& arguments){
if(arguments.size() == 3 && arguments[0] == "add"){
std::pair<int,bool> value = Address::strtoint(arguments[2],false);
if(value.second)
return Address::add_entry(arguments[1], value.first);
else
return false;
}
else if(arguments.size() == 2 && arguments[0] == "del"){
std::pair<int,bool> address = Address::strtoint(arguments[1],true);
if(address.second)
return Address::del_entry((int*)address.first);
else
return false;
}
else if(arguments.size() == 3 && arguments[0] == "chg"){
std::pair<int,bool> address = Address::strtoint(arguments[1],true);
std::pair<int,bool> value = Address::strtoint(arguments[2]);
if(address.second && value.second)
return Address::chg_entry((int*)address.first,value.first);
else
return false;
}
else
return false;
return false;
}
bool Address::add_entry(const std::string &name, const int& value){
entries.push_back(Entry(name,new int(value)));
return true;
}
bool Address::del_entry(int *address){
for(int i = 0 ; i < (int)entries.size(); i++){
if(entries[i].addr_ == address){
delete entries[i].addr_;
entries.erase(entries.begin()+i);
return true;
}
}
return false;
}
bool Address::chg_entry(int *address, const int& value){
for(int i = 0 ; i < (int)entries.size(); i++){
if(entries[i].addr_ == address){
*entries[i].addr_ = value;
return true;
}
}
return false;
}
void Address::print_data(){
std::cout << "Address\t\tName\tValue" << std::endl;
for(int i = 0 ; i < (int)entries.size(); i++){
std::cout << entries[i].addr_ << "\t" << entries[i].name_ << "\t" << *entries[i].addr_ << std::endl;
}
return;
}