Element InterpretSuperString_(SuperString str) { Element out = Nil(); if (false == str.Value().empty()) { out = SuperString(str.Value().substr(0, 1)); } return out; }
/** * Interpret an "at" with a given super string. * @param container Container to look through. * @param index The index in the container. * @return the element at an index in the container. */ Element InterpretSuperString_( SuperString str, Number index) { int const SIZE = static_cast<int>(str.Value().size()); if (index.IntValue() < SIZE && index.IntValue() >= 0) { return SuperString(str.Value().substr(index.IntValue(), 1)); } else { std::stringstream ss; ss << "the index given is out of range: index=" << index.IntValue() << ", max=" << SIZE; return Error(ss.str()); } }
Element LanguageBuiltinImplementation::Interpret_( Environment& environment , std::vector<Element> const& parmsIn , Element const& // additional_parameters ) { Element out; if (false == parmsIn.empty()) { Element parm1 = parmsIn[0]; std::vector<Element> parms(parmsIn.begin() + 1, parmsIn.end()); bool isSuperString = false; SuperString SS = CastToSuperString(parm1, isSuperString); bool isString = false; String S = CastToString(parm1, isString); std::string id; if (isSuperString) { id = SS.Value(); } if (isString) { id = S.Value(); } Translator& translator = this->translators.Get(id); out = Translate_(environment, parms, translator); } return out; }
int SizeOf_(Element const& element) { bool isA = false; int out = 0; switch(element.Type()) { case Types::STRING: { String in = CastToString(element, isA); out = static_cast<int>(in.Value().size()); break; } case Types::SUPERSTRING: { SuperString in = CastToSuperString(element, isA); out = static_cast<int>(in.Value().size()); break; } case Types::CONTAINER: { Container in = CastToContainer(element, isA); out = in.NumberOfElements(); break; } }; return out; }
Element InterpretSuperString_(SuperString str) { Element out = Nil(); std::string const INPUT(str.Value()); if (false == INPUT.empty()) { StringHolder temp = str.GetStringHolder(); out = SuperString(StringHolder(temp, 1, INPUT.size() - 1)); } return out; }