• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

KIOSlave

  • sources
  • kde-4.12
  • kdelibs
  • kioslave
  • http
parsinghelpers.h
Go to the documentation of this file.
1 /* This file is part of the KDE libraries
2  Copyright (C) 2008 Andreas Hartmetz <ahartmetz@gmail.com>
3 
4  This library is free software; you can redistribute it and/or
5  modify it under the terms of the GNU Library General Public
6  License as published by the Free Software Foundation; either
7  version 2 of the License, or (at your option) any later version.
8 
9  This library is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  Library General Public License for more details.
13 
14  You should have received a copy of the GNU Library General Public License
15  along with this library; see the file COPYING.LIB. If not, write to
16  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  Boston, MA 02110-1301, USA.
18 */
19 
20 #ifndef PARSINGHELPERS_H
21 #define PARSINGHELPERS_H
22 
23 #include <QtCore/QList>
24 #include <QtCore/QPair>
25 #include <QtCore/QMap>
26 
27 struct HeaderField {
28  HeaderField(bool multiValued)
29  { isMultiValued = multiValued; }
30  // QHash requires a default constructor
31  HeaderField()
32  { isMultiValued = false; }
33 
34  bool isMultiValued;
35  QList<QPair<int, int> > beginEnd;
36 };
37 
38 class HeaderTokenizer;
39 class TokenIterator
40 {
41 public:
42  inline bool hasNext() const
43  {
44  return m_currentToken < m_tokens.count();
45  }
46 
47  QByteArray next();
48 
49  QByteArray current() const;
50 
51  QList<QByteArray> all() const;
52 
53 private:
54  friend class HeaderTokenizer;
55  QList<QPair<int, int> > m_tokens;
56  int m_currentToken;
57  const char *m_buffer;
58  TokenIterator(const QList<QPair<int, int> > &tokens, const char *buffer)
59  : m_tokens(tokens),
60  m_currentToken(0),
61  m_buffer(buffer) {}
62 };
63 
64 class HeaderTokenizer : public QHash<QByteArray, HeaderField>
65 {
66 public:
67  HeaderTokenizer(char *buffer);
68  // note that buffer is not const - in the parsed area CR/LF will be overwritten
69  // with spaces if there is a line continuation.
71  int tokenize(int begin, int end);
72 
73  // after tokenize() has been called use the QHash part of this class to
74  // ask for a list of begin-end indexes in buffer for header values.
75 
76  TokenIterator iterator(const char *key) const;
77 private:
78  char *m_buffer;
79  struct HeaderFieldTemplate {
80  const char *name;
81  bool isMultiValued;
82  };
83  QList<QPair<int, int> > m_nullTokens; //long-lived, allows us to pass out references.
84 };
85 
86 #endif //PARSINGHELPERS_H
TokenIterator::hasNext
bool hasNext() const
Definition: parsinghelpers.h:42
TokenIterator::next
QByteArray next()
Definition: parsinghelpers.cpp:90
name
const char * name(StandardAction id)
QHash
HeaderField::HeaderField
HeaderField()
Definition: parsinghelpers.h:31
HeaderField::beginEnd
QList< QPair< int, int > > beginEnd
Definition: parsinghelpers.h:35
HeaderTokenizer
Definition: parsinghelpers.h:64
TokenIterator
Definition: parsinghelpers.h:39
TokenIterator::current
QByteArray current() const
Definition: parsinghelpers.cpp:100
TokenIterator::all
QList< QByteArray > all() const
Definition: parsinghelpers.cpp:107
HeaderField::isMultiValued
bool isMultiValued
Definition: parsinghelpers.h:34
HeaderField
Definition: parsinghelpers.h:27
QPair
HeaderTokenizer::HeaderTokenizer
HeaderTokenizer(char *buffer)
Definition: parsinghelpers.cpp:118
HeaderField::HeaderField
HeaderField(bool multiValued)
Definition: parsinghelpers.h:28
end
const KShortcut & end()
HeaderTokenizer::tokenize
int tokenize(int begin, int end)
Definition: parsinghelpers.cpp:169
QList
begin
const KShortcut & begin()
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:50:58 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KIOSlave

Skip menu "KIOSlave"
  • Main Page
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal