Lines Matching defs:Recursive
33 /// Recursive: The type encoding is recursive;
36 /// Recursive type encoding.
43 /// A Recursive entry will have all of its sub-members expanded as fully as
45 /// are recursive. The Recursive encoding must not be used during the expansion
47 /// IncompleteCount to reject all usage of Recursive encodings for member types.
60 /// If the cache contains a Recursive encoding for the member type, the
67 /// entry is removed from the cache. If a Recursive encoding was swapped out
74 /// If a member's encoding is found to be a NonRecursive or Recursive viz:
80 enum Status {NonRecursive, Recursive, Incomplete, IncompleteUsed};
84 std::string Swapped; // A temporary place holder for a Recursive encoding
191 /// If there is a Recursive encoding in the cache, it is swapped out and will
199 assert( (E.Str.empty() || E.State == Recursive) &&
202 E.Swapped.swap(E.Str); // swap out the Recursive
210 /// If a Recursive was swapped out by addIncomplete(), it will be replaced.
230 // Swap the Recursive back.
233 E.State = Recursive;
240 /// Recursive (viz: all sub-members were expanded as fully as possible).
247 assert(E.State==Recursive && E.Str.size() == Str.size() &&
248 "This is not the same Recursive entry");
250 // this Recursive sub-member entry after all, but we assumed the worse when
256 E.State = IsRecursive? Recursive : NonRecursive;
261 /// encoding is Recursive, return an empty StringRef.
269 if (E.State == Recursive && IncompleteCount)
270 return StringRef(); // We don't use Recursive encodings for member types.