This file is indexed.

/usr/include/grantlee/outputstream.h is in libgrantlee-dev 0.4.0-0ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/*
  This file is part of the Grantlee template system.

  Copyright (c) 2010 Stephen Kelly <steveire@gmail.com>

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either version
  2.1 of the Licence, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public
  License along with this library.  If not, see <http://www.gnu.org/licenses/>.

*/

#ifndef GRANTLEE_OUTPUTSTREAM_H
#define GRANTLEE_OUTPUTSTREAM_H

#include "grantlee_core_export.h"

#include <QtCore/QSharedPointer>
#include <QtCore/QTextStream>

namespace Grantlee
{

class SafeString;

/// @headerfile outputstream.h grantlee/outputstream.h

/**
  @brief The OutputStream class is used to render templates to a QTextStream

  A OutputStream instance may be passed to the render method of a Template to render
  the template to a stream.

  @code
    QFile outputFile("./output");
    outputFile.open(QFile::WriteOnly);
    QTextStream tstream( &outputFile );

    OutputStream os(&tstream);
    t->render( &os, &context );
  @endcode

  The OutputStream is used to escape the content streamed to it. By default, the escaping is html escaping, converting "&" to "&amp;" for example. If generating non-html output, the escape method may be overriden to perform a different escaping, or non at all.

  If overriding the escape method, the clone method must also be overriden to return an OutputStream with the same escaping behaviour.

  @code
    class NoEscapeStream : public Grantlee::OutputStream
    {
    public:
      // ...

      QString escape( const QString &input ) const
      {
        return input;
      }

      QSharedPointer<OutputStream> clone( QTextStream *stream ) const
      {
        QSharedPointer<OutputStream> clonedStream = QSharedPointer<OutputStream>( new NoEscapeStream( stream ) );
        return clonedStream;
      }
    };
  @endcode

  @author Stephen Kelly <steveire@gmail.com>
*/
class GRANTLEE_CORE_EXPORT OutputStream
{
public:
  /**
    Creates a null OutputStream. Content streamed to this OutputStream is sent to /dev/null
  */
  OutputStream();

  /**
    Creates an OutputStream which will stream content to @p stream with appropriate escaping.
  */
  explicit OutputStream( QTextStream *stream );

  /**
    Destructor
  */
  virtual ~OutputStream();

  /**
    Returns an escaped version of @p input. Does not write anything to the stream.
  */
  virtual QString escape( const QString &input ) const;

  /**
    Returns an escaped version of @p input. Does not write anything to the stream.
  */
  QString escape( const SafeString &input ) const;

  /**
    Returns an cloned OutputStream with the same filtering behaviour.
  */
  virtual QSharedPointer<OutputStream> clone( QTextStream *stream ) const;

  /**
    Returns @p after escaping it, unless @p input is "safe", in which case, @p input is returned unmodified.
  */
  QString conditionalEscape( const Grantlee::SafeString &input ) const;

  /**
    Writes @p input to the stream after escaping it.
  */
  OutputStream& operator<<( const QString &input );

  /**
    Writes @p input to the stream after escaping it if necessary.
  */
  OutputStream& operator<<( const SafeString &input );

  /**
    Reads the content of @p stream and writes it unmodified to the result stream.
  */
  OutputStream& operator<<( QTextStream *stream );

private:
  QTextStream *m_stream;
  Q_DISABLE_COPY( OutputStream )
};

}

#endif