This file is indexed.

/usr/include/PythonQt5/PythonQtObjectPtr.h is in libpythonqt-qt5-common-dev 3.2-7build2.

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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#ifndef _PYTHONQTOBJECTPTR_H
#define _PYTHONQTOBJECTPTR_H

/*
 *
 *  Copyright (C) 2010 MeVis Medical Solutions AG All Rights Reserved.
 *
 *  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 License, 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.
 *
 *  Further, this software is distributed without any warranty that it is
 *  free of the rightful claim of any third person regarding infringement
 *  or the like.  Any license provided herein, whether implied or
 *  otherwise, applies only to this software file.  Patent licenses, if
 *  any, provided herein do not apply to combinations of this program with
 *  other software, or any other product whatsoever.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *  Contact information: MeVis Medical Solutions AG, Universitaetsallee 29,
 *  28359 Bremen, Germany or:
 *
 *  http://www.mevis.de
 *
 */

//----------------------------------------------------------------------------------
/*!
// \file    PythonQtObjectPtr.h
// \author  Florian Link
// \author  Last changed by $Author: florian $
// \date    2006-05
*/
//----------------------------------------------------------------------------------

#include "PythonQtPythonInclude.h"

#include "PythonQtSystem.h"
#include <QVariant>
#include <QVariantList>
#include <QVariantMap>

//! a smart pointer that stores a PyObject pointer and that handles reference counting automatically
class PYTHONQT_EXPORT PythonQtObjectPtr
{
public:
  PythonQtObjectPtr():_object(NULL) {}

  PythonQtObjectPtr(const PythonQtObjectPtr &p)
  :_object(NULL) {
    setObject(p.object());
  }

  //! If the given variant holds a PythonQtObjectPtr, extract the value from it and hold onto the reference. This results in an increment of the reference count.
  PythonQtObjectPtr(const QVariant& variant):_object(NULL) {
      fromVariant(variant);
  }

  PythonQtObjectPtr(PyObject* o);
  
  ~PythonQtObjectPtr();
  
  //! If the given variant holds a PythonQtObjectPtr, extract the value from it and hold onto the reference. This results in an increment of the reference count.
  bool fromVariant(const QVariant& variant);

  PythonQtObjectPtr &operator=(const PythonQtObjectPtr &p) {
    setObject(p.object());
    return *this;
  }

  PythonQtObjectPtr &operator=(PyObject* o) {
    setObject(o);
    return *this;
  }


  PythonQtObjectPtr &operator=(const QVariant& variant) {
      fromVariant(variant);
      return *this;
  }


  bool operator==( const PythonQtObjectPtr &p ) const {
    return object() == p.object();
  }

  bool operator!= ( const PythonQtObjectPtr& p ) const {
    return !( *this == p );
  }

  bool operator==( PyObject* p ) const {
    return object() == p;
  }

  bool operator!= ( PyObject* p ) const {
    return object() != p;
  }

  bool isNull() const { return !object(); }

  PyObject* operator->() const { return object(); }

  PyObject& operator*() const { return *( object() ); }

  operator PyObject*() const { return object(); }

  //! sets the object and passes the ownership (stealing the reference, in Python slang)
  void setNewRef(PyObject* o);
  
  PyObject* object() const {
    return _object;
  }

  //! evaluates the given script code in the context of this object and returns the result value
  QVariant evalScript(const QString& script, int start = Py_file_input);

  //! evaluates the given code and returns the result value (use Py_Compile etc. to create pycode from string)
  //! If pycode is NULL, a python error is printed.
  QVariant evalCode(PyObject* pycode);

  //! evaluates the given code in the context
  void evalFile(const QString& filename);

  //! add the given \c object to the \c module as a variable with \c name (it can be removed via clearVariable)
  void addObject(const QString& name, QObject* object);

  //! add the given variable to the module
  void addVariable(const QString& name, const QVariant& v);

  //! remove the given variable
  void removeVariable(const QString& name);

  //! get the variable with the \c name of the \c module, returns an invalid QVariant on error
  QVariant getVariable(const QString& name);

  //! call the given python object (in the scope of the current object), returns the result converted to a QVariant
  QVariant call(const QString& callable, const QVariantList& args = QVariantList(), const QVariantMap& kwargs = QVariantMap());

  //! call the contained python object directly, returns the result converted to a QVariant
  QVariant call(const QVariantList& args = QVariantList(), const QVariantMap& kwargs = QVariantMap());

protected:

  void setObject(PyObject* o);
  
private:
  PyObject* _object;
};


// register it to the meta type system
Q_DECLARE_METATYPE(PythonQtObjectPtr)

#endif