1 #ifndef _misc_h_
2 #define _misc_h_
3 
4 #include <string>
5 #include <iostream>
6 
7 #include <list>
8 
9 using namespace std;
10 
11 string indent(unsigned);
12 string int_to_str(int);
13 
14 bool str2int(const string&, int&);
15 bool str2float(const string&, float&);
16 
17 bool is_validip(const string&);
18 void skiptillendofline(istream&);
19 
20 
21 template <class T>
contains(list<T> & l,const T & t)22 bool contains(list<T>& l, const T& t)
23 {
24     for(typename list<T>::iterator li = l.begin(); li != l.end(); li++)
25 	if((*li) == t)
26 	    return true;
27     return false;
28 }
29 
30 template <class T>
intersect(list<T> & l1,list<T> & l2)31 list<T> intersect(list<T>& l1, list<T>& l2)
32 {
33     list<T> result;
34     for(typename list<T>::iterator li = l1.begin(); li != l1.end(); li++)
35 	if(contains(l2, *li))
36 	    result.push_back(*li);
37 
38     result.sort();
39     result.unique();
40 
41     return result;
42 }
43 
44 #endif
45