#pragma once #include "argtype.h" // The Parameter class describes both parameters (in definitions) and // arguments (in applications). Parameters are the primary concept: // a designer declares parameters, and a writer supplies arguments to // fill them. The class is named for the definition side because // definitions come first; the Argument alias is used at application sites. class Parameter { public: Parameter() : m_name("_default") , m_argtype(Argtype()) , m_optional(false) , m_default("") , m_loc() , m_target() {}; Parameter(const std::string& name, Argtype argtype, const Locator& loc, bool optional=false, std::string default_value = ""); ~Parameter() = default; std::string python_value(std::string value); bool undefined() const { return m_name == "_default"; }; std::string m_name {}; Argtype m_argtype; // {}; bool m_optional {}; std::string m_default {}; Locator m_loc; std::string m_target {}; }; using Argument = Parameter;