Lines Matching defs:Poly
3065 struct Poly {
3072 Poly(NodeKind Kind) : Kind(Kind) {}
3074 virtual ~Poly() = default;
3079 struct Scalar : Poly {
3091 Scalar() : Poly(NK_Scalar), SKind(SK_Unknown) {}
3093 : Poly(NK_Scalar), SKind(SK_Double), DoubleValue(DoubleValue) {}
3095 : Poly(NK_Scalar), SKind(SK_Bool), BoolValue(BoolValue) {}
3097 static bool classof(const Poly *N) { return N->getKind() == NK_Scalar; }
3100 struct Seq : Poly, std::vector<std::unique_ptr<Poly>> {
3101 Seq() : Poly(NK_Seq) {}
3103 static bool classof(const Poly *N) { return N->getKind() == NK_Seq; }
3106 struct Map : Poly, llvm::StringMap<std::unique_ptr<Poly>> {
3107 Map() : Poly(NK_Map) {}
3109 static bool classof(const Poly *N) { return N->getKind() == NK_Map; }
3115 template <> struct PolymorphicTraits<std::unique_ptr<Poly>> {
3116 static NodeKind getKind(const std::unique_ptr<Poly> &N) {
3126 static Scalar &getAsScalar(std::unique_ptr<Poly> &N) {
3132 static Seq &getAsSequence(std::unique_ptr<Poly> &N) {
3138 static Map &getAsMap(std::unique_ptr<Poly> &N) {
3207 static std::unique_ptr<Poly> &element(IO &IO, Seq &A, size_t Index) {
3219 std::unique_ptr<Poly> node = std::make_unique<Scalar>(true);
3236 auto node = llvm::unique_dyn_cast<Poly>(seq);
3244 std::unique_ptr<Poly> node;
3268 std::unique_ptr<Poly> node = llvm::unique_dyn_cast<Poly>(map);
3276 std::unique_ptr<Poly> node;