This file is indexed.

/usr/include/licq/plugin/protocolpluginfactory.h is in licq-dev 1.8.1-2build1.

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
/*
 * This file is part of Licq, an instant messaging client for UNIX.
 * Copyright (C) 2013 Licq Developers <licq-dev@googlegroups.com>
 *
 * Please refer to the COPYRIGHT file distributed with this source
 * distribution for the names of the individual contributors.
 *
 * Licq is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * Licq 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Licq; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */

#ifndef LICQ_PROTOCOLPLUGINFACTORY_H
#define LICQ_PROTOCOLPLUGINFACTORY_H

#include "pluginfactory.h"

#include <boost/shared_ptr.hpp>

namespace Licq
{

class Owner;
class ProtocolPluginInterface;
class User;
class UserId;

/**
 * Factory for protocol plugins implementing support for an IM protocol
 */
class ProtocolPluginFactory : public PluginFactory
{
public:
  /// Return the protocol's unique identifier
  virtual unsigned long protocolId() const = 0;

  /**
   * Return the protocol plugin's supported features
   *
   * @return A mask of bits from Capabilities enum
   */
  virtual unsigned long capabilities() const = 0;

  /// Create a new plugin instance
  virtual ProtocolPluginInterface* createPlugin() = 0;

  /**
   * Create a user object
   *
   * Called by UserManager when users are loaded or added.
   *
   * @param id User id
   * @param temporary True if user isn't permanently added to contact list
   * @return A newly created user object or NULL if the protocol doesn't have
   *         a specialized user class.
   */
  virtual User* createUser(const UserId& id, bool temporary) = 0;

  /**
   * Create an owner object
   *
   * Called by UserManager when owner is loaded or added.
   *
   * @param id User id of owner
   * @return A newly created owner object or NULL if the protocol doesn't have
   *         a specialized owner class.
   */
  virtual Owner* createOwner(const UserId& id) = 0;

protected:
  virtual ~ProtocolPluginFactory() { /* Empty */ }
};

/**
 * This struct contains the initial data and functions needed by Licq to load a
 * protocol plugin. Use the LICQ_PROTOCOL_PLUGIN_DATA macro to create it.
 */
struct ProtocolPluginData
{
  /// Magic value to identify an Licq protocol
  char magic[4];

  /// Version of Licq this plugin is built for
  int licqVersion;

  /// Pointer to a function that creates and returns a factory object.
  ProtocolPluginFactory* (*createFactory)();

  /// Called to destroy the factory when it is no longer needed
  void (*destroyFactory)(ProtocolPluginFactory* factory);
};

} // namespace Licq

#ifdef __cplusplus
extern "C" {
#endif

/**
 * Each protocol must contain the following symbol
 *
 * When a protocol is first loaded, this pointer is fetched and used to get
 * the ProtocolPluginData struct for the plugin.
 */
extern Licq::ProtocolPluginData LicqProtocolPluginData;

#ifdef __cplusplus
}
#endif

/*
 * Convenience macro to define protocol data in a plugin
 *
 * Note: <licq/version.h> must be included
 *
 * @param create Pointer to the create factory function
 * @param destroy Pointer to the destroy factory function
 */
#define LICQ_PROTOCOL_PLUGIN_DATA(create, destroy)  \
  Licq::ProtocolPluginData LicqProtocolPluginData = \
  { {'L', 'i', 'c', 'q' }, LICQ_VERSION, create, destroy }

#endif