/usr/include/Poco/XML/NamePool.h is in libpoco-dev 1.8.0.1-1ubuntu4.
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 | //
// NamePool.h
//
// Library: XML
// Package: XML
// Module: NamePool
//
// Definition of the NamePool class.
//
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// SPDX-License-Identifier: BSL-1.0
//
#ifndef XML_NamePool_INCLUDED
#define XML_NamePool_INCLUDED
#include "Poco/XML/XML.h"
#include "Poco/XML/XMLString.h"
#include "Poco/XML/Name.h"
#ifndef POCO_XML_NAMEPOOL_DEFAULT_SIZE
#define POCO_XML_NAMEPOOL_DEFAULT_SIZE 509
#endif
namespace Poco {
namespace XML {
class NamePoolItem;
class XML_API NamePool
/// A hashtable that stores XML names consisting of an URI, a
/// local name and a qualified name.
{
public:
NamePool(unsigned long size = POCO_XML_NAMEPOOL_DEFAULT_SIZE);
/// Creates a name pool with room for up to size strings.
///
/// The given size should be a suitable prime number,
/// e.g. 251, 509, 1021 or 4093.
const Name& insert(const XMLString& qname, const XMLString& namespaceURI, const XMLString& localName);
/// Returns a const reference to an Name for the given names.
/// Creates the Name if it does not already exist.
/// Throws a PoolOverflowException if the name pool is full.
const Name& insert(const Name& name);
/// Returns a const reference to an Name for the given name.
/// Creates the Name if it does not already exist.
/// Throws a PoolOverflowException if the name pool is full.
void duplicate();
/// Increments the reference count.
void release();
/// Decrements the reference count and deletes the object if the reference count reaches zero.
protected:
unsigned long hash(const XMLString& qname, const XMLString& namespaceURI, const XMLString& localName);
~NamePool();
private:
NamePool(const NamePool&);
NamePool& operator = (const NamePool&);
NamePoolItem* _pItems;
unsigned long _size;
unsigned long _salt;
int _rc;
};
} } // namespace Poco::XML
#endif // XML_NamePool_INCLUDED
|