xref: /netbsd-src/external/bsd/openldap/dist/contrib/ldapc++/src/LdifReader.h (revision ba65fde2d7fefa7d39838fa5fa855e62bd606b5e)
1 /*	$NetBSD: LdifReader.h,v 1.1.1.2 2010/03/08 02:14:20 lukem Exp $	*/
2 
3 /*
4  * Copyright 2008, OpenLDAP Foundation, All Rights Reserved.
5  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
6  */
7 
8 #ifndef LDIF_READER_H
9 #define LDIF_READER_H
10 
11 #include <LDAPEntry.h>
12 #include <iosfwd>
13 #include <list>
14 
15 typedef std::list< std::pair<std::string, std::string> > LdifRecord;
16 class LdifReader
17 {
18     public:
19         LdifReader( std::istream &input );
20 
21         inline bool isEntryRecords() const
22         {
23             return !m_ldifTypeRequest;
24         }
25 
26         inline bool isChangeRecords() const
27         {
28             return m_ldifTypeRequest;
29         }
30 
31         inline int getVersion() const
32         {
33             return m_version;
34         }
35 
36         LDAPEntry getEntryRecord();
37         int readNextRecord( bool first=false );
38         //LDAPRequest getChangeRecord();
39 
40     private:
41         int getLdifLine(std::string &line);
42 
43         void splitLine(const std::string& line,
44                     std::string &type,
45                     std::string &value ) const;
46 
47         std::string readIncludeLine( const std::string &line) const;
48 
49         std::istream &m_ldifstream;
50         LdifRecord m_currentRecord;
51         int m_version;
52         int m_curRecType;
53         int m_lineNumber;
54         bool m_ldifTypeRequest;
55         bool m_currentIsFirst;
56 };
57 
58 #endif /* LDIF_READER_H */
59