Skip to content
  • Mark OLESEN's avatar
    ENH: added HashTable count, filter and generalized toc methods · 49262da4
    Mark OLESEN authored
    - Generalized means over filtering table entries based on their keys,
      values, or both.  Either filter (retain), or optionally prune elements
      that satisfy the specified predicate.
    
      filterKeys and filterValues:
      - Take a unary predicate with the signature
    
            bool operator()(const Key& k);
    
      - filterEntries:
        Takes a binary predicate with the signature
    
            bool operator()(const Key& k, const T& v);
    
    ==
    
      The predicates can be normal class methods, or provide on-the-fly
      using a C++ lambda. For example,
    
          wordRes goodFields = ...;
          allFieldNames.filterKeys
          (
              [&goodFields](const word& k){ return goodFields.match(k); }
          );
    
      Note that all classes that can match a string (eg, regExp, keyType,
      wordRe, wordRes) or that are derived from a Foam::string (eg, fileName,
      word) are provided with a corresponding
    
          bool operator()(const std::string&)
    
      that either performs a regular expression or a literal match.
      This allows such objects to be used directly as a unary predicate
      when filtering any string hash keys.
    
      Note that HashSet and hashedWordList both have the proper
      operator() methods that also allow them to be used as a unary
      predicate.
    
    - Similar predicate selection with the following:
        * tocKeys, tocValues, tocEntries
        * countKeys, countValues, countEntries
    
      except that instead of pruning, there is a simple logic inversion.
    49262da4