#include "foo/Foo.hpp" #include #include #include namespace foo { std::vector stringVectorOutput(int level) { std::cout << "[" << level << "] Enter " << __func__ << "()" << std::endl; std::vector result(level, std::to_string(level)); std::cout << "[" << level << "] Exit " << __func__ << "()" << std::endl; return result; } int stringVectorInput(std::vector data) { std::cout << "Enter " << __func__ << "()" << std::endl; std::cout << "{"; for (const auto& item : data) { std::cout << item << ", "; } std::cout << "}" << std::endl; std::cout << "Exit " << __func__ << "()" << std::endl; return data.size(); } int stringVectorRefInput(const std::vector& data) { std::cout << "Enter " << __func__ << "()" << std::endl; std::cout << "{"; for (const auto& item : data) { std::cout << item << ", "; } std::cout << "}" << std::endl; std::cout << "Exit " << __func__ << "()" << std::endl; return data.size(); } std::vector> stringJaggedArrayOutput(int level) { std::cout << "[" << level << "] Enter " << __func__ << "()" << std::endl; std::vector> result; result.reserve(level); for (int i = 1; i <= level; ++i) { result.emplace_back(std::vector(i, std::to_string(i))); } std::cout << "[" << level << "] Exit " << __func__ << "()" << std::endl; return result; } int stringJaggedArrayInput(std::vector> data) { std::cout << "Enter " << __func__ << "()" << std::endl; std::cout << "{"; for (const auto& inner : data) { std::cout << "{"; for (const auto& item : inner) { std::cout << item << ", "; } std::cout << "}, "; } std::cout << "}" << std::endl; std::cout << "Exit " << __func__ << "()" << std::endl; return data.size(); } int stringJaggedArrayRefInput(const std::vector>& data) { std::cout << "Enter " << __func__ << "()" << std::endl; std::cout << "{"; for (const auto& inner : data) { std::cout << "{"; for (const auto& item : inner) { std::cout << item << ", "; } std::cout << "}, "; } std::cout << "}" << std::endl; std::cout << "Exit " << __func__ << "()" << std::endl; return data.size(); } std::vector> pairVectorOutput(int level) { std::cout << "[" << level << "] Enter " << __func__ << "()" << std::endl; std::vector> result(level, std::make_pair(level, level)); std::cout << "[" << level << "] Exit " << __func__ << "()" << std::endl; return result; } int pairVectorInput(std::vector> data) { std::cout << "Enter " << __func__ << "()" << std::endl; std::cout << "{"; for (const auto& item : data) { std::cout << "[" << item.first << "," << item.second << "], "; } std::cout << "}" << std::endl; std::cout << "Exit " << __func__ << "()" << std::endl; return data.size(); } int pairVectorRefInput(const std::vector>& data) { std::cout << "Enter " << __func__ << "()" << std::endl; std::cout << "{"; for (const auto& item : data) { std::cout << "[" << item.first << "," << item.second << "], "; } std::cout << "}" << std::endl; std::cout << "Exit " << __func__ << "()" << std::endl; return data.size(); } std::vector>> pairJaggedArrayOutput(int level) { std::cout << "[" << level << "] Enter " << __func__ << "()" << std::endl; std::vector>> result; result.reserve(level); for (int i = 1; i <= level; ++i) { result.emplace_back(std::vector>(i, std::make_pair(i, i))); } std::cout << "[" << level << "] Exit " << __func__ << "()" << std::endl; return result; } int pairJaggedArrayInput(std::vector>> data) { std::cout << "Enter " << __func__ << "()" << std::endl; std::cout << "{"; for (const auto& inner : data) { std::cout << "{"; for (const auto& item : inner) { std::cout << "[" << item.first << "," << item.second << "], "; } std::cout << "}, "; } std::cout << "}" << std::endl; std::cout << "Exit " << __func__ << "()" << std::endl; return data.size(); } int pairJaggedArrayRefInput(const std::vector>>& data) { std::cout << "Enter " << __func__ << "()" << std::endl; std::cout << "{"; for (const auto& inner : data) { std::cout << "{"; for (const auto& item : inner) { std::cout << "[" << item.first << "," << item.second << "], "; } std::cout << "}, "; } std::cout << "}" << std::endl; std::cout << "Exit " << __func__ << "()" << std::endl; return data.size(); } void freeFunction(int level) { std::cout << "[" << level << "] Enter " << __func__ << "(int)" << std::endl; std::cout << "[" << level << "] Exit " << __func__ << "(int)" << std::endl; } void freeFunction(int64_t level) { std::cout << "[" << level << "] Enter " << __func__ << "(int64_t)" << std::endl; std::cout << "[" << level << "] Exit " << __func__ << "(int64_t)" << std::endl; } void Foo::staticFunction(int level) { std::cout << "[" << level << "] Enter " << __func__ << "(int)" << std::endl; freeFunction(level + 1); std::cout << "[" << level << "] Exit " << __func__ << "(int)" << std::endl; } void Foo::staticFunction(int64_t level) { std::cout << "[" << level << "] Enter " << __func__ << "(int64_t)" << std::endl; freeFunction(level + 1); std::cout << "[" << level << "] Exit " << __func__ << "(int64_t)" << std::endl; } int Foo::getInt() const { return _intValue; } void Foo::setInt(int input) { _intValue = input; } int64_t Foo::getInt64() const { return _int64Value; } void Foo::setInt64(int64_t input) { _int64Value = input; } std::string Foo::operator()() const { return std::string{"\"Foo\":{\"int\":"} + std::to_string(_intValue) + ",\"int64\":" + std::to_string(_int64Value) + "}"; } } // namespace foo