44
const std::string emptyString;
47
43
const std::string& NScript::getVariableName(unsigned long index) const {
48
std::map<std::string, std::string>::const_iterator it = variables.begin();
44
std::map<std::string, NPacket*>::const_iterator it = variables.begin();
49
45
advance(it, index);
50
46
return (*it).first;
53
const std::string& NScript::getVariableValue(unsigned long index) const {
54
std::map<std::string, std::string>::const_iterator it = variables.begin();
49
NPacket* NScript::getVariableValue(unsigned long index) const {
50
std::map<std::string, NPacket*>::const_iterator it = variables.begin();
55
51
advance(it, index);
56
52
return (*it).second;
59
const std::string& NScript::getVariableValue(const std::string& name) const {
60
std::map<std::string, std::string>::const_iterator it =
55
NPacket* NScript::getVariableValue(const std::string& name) const {
56
std::map<std::string, NPacket*>::const_iterator it = variables.find(name);
62
57
if (it == variables.end())
64
59
return (*it).second;
62
void NScript::removeVariable(const std::string& name) {
63
std::map<std::string, NPacket*>::iterator it = variables.find(name);
64
if (it == variables.end())
68
it->second->unlisten(this);
70
ChangeEventSpan span(this);
67
74
void NScript::writeTextLong(std::ostream& o) const {
68
75
if (variables.empty())
69
76
o << "No variables.\n";
71
for (std::map<std::string, std::string>::const_iterator vit =
72
variables.begin(); vit != variables.end(); vit++)
73
o << "Variable: " << (*vit).first << " = " << (*vit).second << '\n';
78
for (std::map<std::string, NPacket*>::const_iterator vit =
79
variables.begin(); vit != variables.end(); vit++) {
80
o << "Variable: " << vit->first << " = ";
82
o << vit->second->getPacketLabel() << '\n';
84
o << "(null)" << '\n';
76
88
copy(lines.begin(), lines.end(),
87
99
void NScript::writeXMLPacketData(std::ostream& out) const {
88
100
using regina::xml::xmlEncodeSpecialChars;
90
for (std::map<std::string, std::string>::const_iterator vit =
91
variables.begin(); vit != variables.end(); vit++)
102
for (std::map<std::string, NPacket*>::const_iterator vit =
103
variables.begin(); vit != variables.end(); vit++) {
92
104
out << " <var name=\"" << xmlEncodeSpecialChars((*vit).first)
93
<< "\" value=\"" << xmlEncodeSpecialChars((*vit).second)
107
out << vit->second->internalID();
108
out << "\" value=\"";
110
out << xmlEncodeSpecialChars(vit->second->getPacketLabel());
96
114
for (std::vector<std::string>::const_iterator it = lines.begin();
97
115
it != lines.end(); it++)
98
116
out << " <line>" << xmlEncodeSpecialChars(*it) << "</line>\n";
119
void NScript::packetToBeDestroyed(NPacket* packet) {
120
// We know the script will change, because one of our variables is
121
// listening on this packet.
122
ChangeEventSpan span(this);
123
for (std::map<std::string, NPacket*>::iterator vit =
124
variables.begin(); vit != variables.end(); vit++)
125
if (vit->second == packet)
101
129
} // namespace regina