xref: /netbsd-src/external/bsd/openldap/dist/contrib/ldapc++/src/LdifReader.h (revision 549b59ed3ccf0d36d3097190a0db27b770f3a839)
1*549b59edSchristos /*	$NetBSD: LdifReader.h,v 1.3 2021/08/14 16:14:49 christos Exp $	*/
24e6df137Slukem 
3d11b170bStron // $OpenLDAP$
42de962bdSlukem /*
5*549b59edSchristos  * Copyright 2008-2021 The OpenLDAP Foundation, All Rights Reserved.
62de962bdSlukem  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
72de962bdSlukem  */
82de962bdSlukem 
92de962bdSlukem #ifndef LDIF_READER_H
102de962bdSlukem #define LDIF_READER_H
112de962bdSlukem 
122de962bdSlukem #include <LDAPEntry.h>
132de962bdSlukem #include <iosfwd>
142de962bdSlukem #include <list>
152de962bdSlukem 
162de962bdSlukem typedef std::list< std::pair<std::string, std::string> > LdifRecord;
172de962bdSlukem class LdifReader
182de962bdSlukem {
192de962bdSlukem     public:
202de962bdSlukem         LdifReader( std::istream &input );
212de962bdSlukem 
isEntryRecords()222de962bdSlukem         inline bool isEntryRecords() const
232de962bdSlukem         {
242de962bdSlukem             return !m_ldifTypeRequest;
252de962bdSlukem         }
262de962bdSlukem 
isChangeRecords()272de962bdSlukem         inline bool isChangeRecords() const
282de962bdSlukem         {
292de962bdSlukem             return m_ldifTypeRequest;
302de962bdSlukem         }
312de962bdSlukem 
getVersion()322de962bdSlukem         inline int getVersion() const
332de962bdSlukem         {
342de962bdSlukem             return m_version;
352de962bdSlukem         }
362de962bdSlukem 
372de962bdSlukem         LDAPEntry getEntryRecord();
382de962bdSlukem         int readNextRecord( bool first=false );
392de962bdSlukem         //LDAPRequest getChangeRecord();
402de962bdSlukem 
412de962bdSlukem     private:
422de962bdSlukem         int getLdifLine(std::string &line);
432de962bdSlukem 
442de962bdSlukem         void splitLine(const std::string& line,
452de962bdSlukem                     std::string &type,
462de962bdSlukem                     std::string &value ) const;
472de962bdSlukem 
482de962bdSlukem         std::string readIncludeLine( const std::string &line) const;
492de962bdSlukem 
502de962bdSlukem         std::istream &m_ldifstream;
512de962bdSlukem         LdifRecord m_currentRecord;
522de962bdSlukem         int m_version;
532de962bdSlukem         int m_curRecType;
542de962bdSlukem         int m_lineNumber;
552de962bdSlukem         bool m_ldifTypeRequest;
562de962bdSlukem         bool m_currentIsFirst;
572de962bdSlukem };
582de962bdSlukem 
592de962bdSlukem #endif /* LDIF_READER_H */
60