Lines Matching defs:FoldingSetNodeID
42 /// passed a FoldingSetNodeID object which is used to gather the bits. Just
55 /// void Profile(FoldingSetNodeID &ID) const {
79 /// exists, then call FindNodeOrInsertPos with a FoldingSetNodeID of the bits to
82 /// FoldingSetNodeID ID;
103 class FoldingSetNodeID;
167 Node *FindNodeOrInsertPos(const FoldingSetNodeID &ID, void *&InsertPos);
213 virtual void GetNodeProfile(Node *N, FoldingSetNodeID &ID) const = 0;
217 virtual bool NodeEquals(Node *N, const FoldingSetNodeID &ID, unsigned IDHash,
218 FoldingSetNodeID &TempID) const=0;
222 virtual unsigned ComputeNodeHash(Node *N, FoldingSetNodeID &TempID) const = 0;
231 static void Profile(const T &X, FoldingSetNodeID &ID) {
234 static void Profile(T &X, FoldingSetNodeID &ID) {
242 static inline bool Equals(T &X, const FoldingSetNodeID &ID, unsigned IDHash,
243 FoldingSetNodeID &TempID);
250 static inline unsigned ComputeHash(T &X, FoldingSetNodeID &TempID);
266 static void Profile(T &X, FoldingSetNodeID &ID, Ctx Context) {
270 static inline bool Equals(T &X, const FoldingSetNodeID &ID, unsigned IDHash,
271 FoldingSetNodeID &TempID, Ctx Context);
272 static inline unsigned ComputeHash(T &X, FoldingSetNodeID &TempID,
283 /// FoldingSetNodeID, which can be a useful to store node id data rather
312 /// FoldingSetNodeID - This class is used to gather all the unique data bits of
316 class FoldingSetNodeID {
322 FoldingSetNodeID() = default;
324 FoldingSetNodeID(FoldingSetNodeIDRef Ref)
338 void AddNodeID(const FoldingSetNodeID &ID);
343 /// clear - Clear the accumulated profile, allowing this FoldingSetNodeID
347 /// ComputeHash - Compute a strong hash value for this FoldingSetNodeID, used
353 bool operator==(const FoldingSetNodeID &RHS) const;
356 bool operator!=(const FoldingSetNodeID &RHS) const { return !(*this == RHS); }
361 bool operator<(const FoldingSetNodeID &RHS) const;
376 // require the definition of FoldingSetNodeID.
379 DefaultFoldingSetTrait<T>::Equals(T &X, const FoldingSetNodeID &ID,
381 FoldingSetNodeID &TempID) {
387 DefaultFoldingSetTrait<T>::ComputeHash(T &X, FoldingSetNodeID &TempID) {
394 const FoldingSetNodeID &ID,
396 FoldingSetNodeID &TempID,
404 FoldingSetNodeID &TempID,
423 void GetNodeProfile(Node *N, FoldingSetNodeID &ID) const override {
430 bool NodeEquals(Node *N, const FoldingSetNodeID &ID, unsigned IDHash,
431 FoldingSetNodeID &TempID) const override {
438 unsigned ComputeNodeHash(Node *N, FoldingSetNodeID &TempID) const override {
481 T *FindNodeOrInsertPos(const FoldingSetNodeID &ID, void *&InsertPos) {
494 /// void Profile(FoldingSetNodeID &, Ctx);
508 FoldingSetNodeID &ID) const override {
513 bool NodeEquals(FoldingSetImpl::Node *N, const FoldingSetNodeID &ID,
514 unsigned IDHash, FoldingSetNodeID &TempID) const override {
521 FoldingSetNodeID &TempID) const override {
561 T *FindNodeOrInsertPos(const FoldingSetNodeID &ID, void *&InsertPos) {
595 T *FindNodeOrInsertPos(const FoldingSetNodeID &ID, void *&InsertPos) {
733 void Profile(FoldingSetNodeID &ID) { FoldingSetTrait<T>::Profile(data, ID); }
744 /// a FoldingSetNodeID value rather than requiring the node to recompute it
749 FoldingSetNodeID FastID;
752 explicit FastFoldingSetNode(const FoldingSetNodeID &ID) : FastID(ID) {}
755 void Profile(FoldingSetNodeID &ID) const { ID.AddNodeID(FastID); }
762 static inline void Profile(T *X, FoldingSetNodeID &ID) {
769 FoldingSetNodeID &ID) {