1 2 #pragma once 3 4 #include "Props.hh" 5 6 namespace cadabra { 7 8 class Indices : public list_property { 9 public: 10 Indices(); //const std::string& parent=""); 11 virtual bool parse(Kernel&, std::shared_ptr<Ex>, keyval_t&) override; 12 virtual std::string name() const override; unnamed_argument() const13 virtual std::string unnamed_argument() const override 14 { 15 return "name"; 16 }; 17 virtual match_t equals(const property *) const override; 18 19 // virtual void display(std::ostream&) const override; 20 virtual void latex(std::ostream&) const override; 21 22 std::string set_name, parent_name; 23 enum position_t { free=0, fixed=1, independent=2 } position_type; 24 25 // List of possible values that indices of this type can take. 26 std::vector<Ex> values; 27 28 private: 29 /// Given the right-hand side of a 'values={...}' node, generate 30 /// a list of all index values in index_values. 31 32 void collect_index_values(Ex::iterator ind_values); 33 }; 34 35 } 36