x0::Buffer ExampleFilter::process(const x0::BufferRef& input) { x0::Buffer result; switch (mode_) { case ExampleFilter::LOWER: for (auto i = input.begin(), e = input.end(); i != e; ++i) result.push_back(static_cast<char>(std::tolower(*i))); break; case ExampleFilter::UPPER: for (auto i = input.begin(), e = input.end(); i != e; ++i) result.push_back(static_cast<char>(std::toupper(*i))); break; case ExampleFilter::IDENTITY: default: result.push_back(input); } return result; }