Skip to content

Libs/Project/Variant.h

Namespaces

Name
shapeworks
User usage reporting (telemetry)

Classes

Name
class shapeworks::Variant
Variant class to represent multiple types.

Source code

```cpp

pragma once

include

include

include

include

namespace shapeworks {

template std::string variant_to_string(T begin, T end) { std::stringstream ss; bool first = true; for (; begin != end; begin++) { if (!first) { ss << " "; } if constexpr (std::is_same::value) { // cast to string and replace spaces std::string s(begin); ss << StringUtils::replace_string(s," ", "%20"); } else { ss << begin; } first = false; } return ss.str(); }

class Variant { public: Variant() : str_(), valid_(false) {} Variant(const std::string& v) : str_(v), valid_(true) {} Variant(int v) : str_(std::to_string(v)), valid_(true) {} Variant(double v) : str_(std::to_string(v)), valid_(true) {} Variant(const char* v) : str_(v), valid_(true) {} Variant(bool v) : str_(v ? "true" : "false"), valid_(true) {} Variant(std::vector v) : str_(variant_to_string(v.begin(), v.end())), valid_(true) {} Variant(std::vector v) : str_(variant_to_string(v.begin(), v.end())), valid_(true) {} Variant(std::vector v) : str_(variant_to_string(v.begin(), v.end())), valid_(true) {} Variant(std::vector v) : str_(variant_to_string(v.begin(), v.end())), valid_(true) {}

operator std::string() const; operator bool() const; operator int() const; operator unsigned int() const; operator long() const; operator unsigned long() const; operator float() const; operator double() const; operator std::vector() const; operator std::vector() const; operator std::vector() const; operator std::vector() const;

private: std::string str_; bool valid_; }; } // namespace shapeworks ```


Updated on 2026-03-31 at 16:02:11 +0000