//this file looks like plain C, but it's actually -*- c++ -*-
#ifndef __TQListUtils__
#define __TQListUtils__

#include "TString.h"
#include "TList.h"
#include "TTree.h"

class TQTaggable;

namespace TQListUtils {

  void print(TList * list, const TString& options = "");
  void print(TList * list, TQTaggable& options);
  void print(const std::vector<TString> & vec);
  
  TString makeCSV(const std::vector<TString> & vec);
 
  int removeElements(TList * l, const TString& filter);

  TList * getListOfNames(TCollection * collection, bool ownCollection = false);
 
  TList * getMergedListOfNames(TCollection * l1, TCollection * l2, bool ownCollections = false);

  bool reorder(TList * list, TList * order);
  bool isSubsetOf(TList * l1, TList * l2);
  bool areIsomorphic(TList * l1, TList * l2);
  bool hasDuplicates(TList * list);
  bool sortByStringLength(TList * list, bool ascending = true);
  bool sortByName(TList * list);  

  int addClones(TCollection* from, TCollection* to);
  int moveListContents(TList* origin, TList* target);
  int collectContentNames(TCollection* origin, TList* target, const TString& pattern);
 
  TObject* findInList(TList* l, const TString& name);
  TQTaggable* findInListByTag(TList* l, const TString& key, const TString& value);

  void printList(TCollection* c);
  int getMaxNameLength(TCollection* c);

  int setBranchStatus(TTree* tree, TCollection* list, int status);

}

#endif
 TQListUtils.h:1
 TQListUtils.h:2
 TQListUtils.h:3
 TQListUtils.h:4
 TQListUtils.h:5
 TQListUtils.h:6
 TQListUtils.h:7
 TQListUtils.h:8
 TQListUtils.h:9
 TQListUtils.h:10
 TQListUtils.h:11
 TQListUtils.h:12
 TQListUtils.h:13
 TQListUtils.h:14
 TQListUtils.h:15
 TQListUtils.h:16
 TQListUtils.h:17
 TQListUtils.h:18
 TQListUtils.h:19
 TQListUtils.h:20
 TQListUtils.h:21
 TQListUtils.h:22
 TQListUtils.h:23
 TQListUtils.h:24
 TQListUtils.h:25
 TQListUtils.h:26
 TQListUtils.h:27
 TQListUtils.h:28
 TQListUtils.h:29
 TQListUtils.h:30
 TQListUtils.h:31
 TQListUtils.h:32
 TQListUtils.h:33
 TQListUtils.h:34
 TQListUtils.h:35
 TQListUtils.h:36
 TQListUtils.h:37
 TQListUtils.h:38
 TQListUtils.h:39
 TQListUtils.h:40
 TQListUtils.h:41
 TQListUtils.h:42
 TQListUtils.h:43
 TQListUtils.h:44
 TQListUtils.h:45
 TQListUtils.h:46