#pragma once #include #include #include #include #include class TextFormatterNode : public WorkflowNode { public: enum ArgumentType { NumericArgument, TextArgument, DateTimeArgument, }; private: class Impl; struct Argument { ArgumentType Type; int PinIdx; }; using Element = std::variant; std::vector mElements; int mMinOutputChars; public: static BaseValue::Kind ArgumentTypeToValueKind(ArgumentType arg); static bool IsInstance(const WorkflowNode* node); TextFormatterNode(); int GetElementCount() const; const Element& GetElement(int idx) const; void SetElement(int idx, std::string text); void SetElement(int idx, ArgumentType argument); void InsertElement(int idx, std::string text); void InsertElement(int idx, ArgumentType argument); void AppendElement(std::string text); void AppendElement(ArgumentType argument); void RemoveElement(int idx); virtual void Evaluate(WorkflowEvaluationContext& ctx) override; private: void PreRemoveElement(int idx); };