libzypp  13.10.6
PoolQueryUtil.tcc
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
14 #ifndef ZYPP_POOLQUERYUTIL_TCC
15 #define ZYPP_POOLQUERYUTIL_TCC
16 
17 #include <fstream>
18 
19 #include "zypp/Pathname.h"
20 #include "zypp/PoolQuery.h"
21 #include "zypp/base/String.h"
22 
23 namespace zypp
24 {
25 
35  template <class OutputIterator>
37  OutputIterator out )
38  {
39  bool found;
40  std::ifstream fin( file.c_str() );
41 
42  if (!fin)
43  ZYPP_THROW(Exception(str::form("Cannot open file %s",file.c_str())));
44 
45  do
46  {
48  found = q.recover( fin );
49  if (found)
50  *out++ = q;
51  } while ( found );
52 
53  fin.close();
54  }
55 
60  template <class InputIterator>
62  InputIterator begin, InputIterator end )
63  {
64  std::ofstream fout( file.c_str(), std::ios_base::out | std::ios_base::trunc );
65 
66  if (!fout)
67  ZYPP_THROW(Exception(str::form("Cannot open file %s",file.c_str())));
68 
69  for_( it, begin, end )
70  {
71  it->serialize( fout );
72  }
73 
74  fout.close();
75  }
76 
77 }
78 #endif // ZYPP_POOLQUERYUTIL_H
#define ZYPP_THROW(EXCPT)
Drops a logline and throws the Exception.
Definition: Exception.h:320
void readPoolQueriesFromFile(const zypp::filesystem::Pathname &file, OutputIterator out)
sends to output iterator all queries readed from file.
bool recover(std::istream &str, char delim= '\n')
Reads from stream query.
Definition: PoolQuery.cc:1108
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
Definition: Easy.h:27
const char * c_str() const
String representation.
Definition: Pathname.h:109
void writePoolQueriesToFile(const zypp::filesystem::Pathname &file, InputIterator begin, InputIterator end)
Writes all queries from begin to end.
std::string form(const char *format,...)
Printf style construction of std::string.
Definition: String.cc:34
Meta-data query API.
Definition: PoolQuery.h:90
Base class for Exception.
Definition: Exception.h:143