objectregistry.h
Go to the documentation of this file.
// -*- C++ -*-
// Module: Log4CPLUS
// File: objectregistry.h
// Created: 3/2003
// Author: Tad E. Smith
//
//
// Copyright 2003-2017 Tad E. Smith
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef LOG4CPLUS_SPI_OBJECT_REGISTRY_HEADER_
#define LOG4CPLUS_SPI_OBJECT_REGISTRY_HEADER_
#include <log4cplus/config.hxx>
#if defined (LOG4CPLUS_HAVE_PRAGMA_ONCE)
#pragma once
#endif
#include <log4cplus/tstring.h>
#include <log4cplus/thread/syncprims.h>
#include <map>
#include <memory>
#include <vector>
namespace log4cplus {
namespace spi {
class LOG4CPLUS_EXPORT ObjectRegistryBase {
public:
// public methods
bool exists(const log4cplus::tstring& name) const;
std::vector<log4cplus::tstring> getAllNames() const;
void _enableLocking (bool);
protected:
// Ctor and Dtor
ObjectRegistryBase();
virtual ~ObjectRegistryBase();
// protected methods
bool putVal(const log4cplus::tstring& name, void* object);
void* getVal(const log4cplus::tstring& name) const;
virtual void deleteObject(void *object) const = 0;
virtual void clear();
// Types
typedef std::map<log4cplus::tstring, void*> ObjectMap;
// Data
thread::Mutex mutex;
ObjectMap data;
private:
ObjectRegistryBase (ObjectRegistryBase const &);
ObjectRegistryBase & operator = (ObjectRegistryBase const &);
bool volatile locking;
};
}
}
#endif // LOG4CPLUS_SPI_OBJECT_REGISTRY_HEADER_
log4cplus::spi::ObjectRegistryBase::data
ObjectMap data
Definition objectregistry.h:99
log4cplus::spi::ObjectRegistryBase::ObjectRegistryBase
ObjectRegistryBase()
log4cplus::spi::ObjectRegistryBase::getAllNames
std::vector< log4cplus::tstring > getAllNames() const
Returns the names of all registered objects.
log4cplus::spi::ObjectRegistryBase::exists
bool exists(const log4cplus::tstring &name) const
Tests to see whether or not an object is bound in the registry as name.
log4cplus::spi::ObjectRegistryBase::putVal
bool putVal(const log4cplus::tstring &name, void *object)
Used to enter an object into the registry.
log4cplus::spi::ObjectRegistryBase::mutex
thread::Mutex mutex
Definition objectregistry.h:98
log4cplus::spi::ObjectRegistryBase::ObjectMap
std::map< log4cplus::tstring, void * > ObjectMap
Definition objectregistry.h:95
log4cplus::spi::ObjectRegistryBase::getVal
void * getVal(const log4cplus::tstring &name) const
Used to retrieve an object from the registry.
log4cplus::spi::ObjectRegistryBase::~ObjectRegistryBase
virtual ~ObjectRegistryBase()
log4cplus::spi::ObjectRegistryBase::_enableLocking
void _enableLocking(bool)
log4cplus::spi::ObjectRegistryBase::deleteObject
virtual void deleteObject(void *object) const =0
Deletes object.
log4cplus::spi::ObjectRegistryBase::clear
virtual void clear()
Deletes all objects from this registry.
log4cplus::thread::Mutex
Definition syncprims.h:83
config.hxx
log4cplus::spi
Definition layout.h:62
log4cplus
Definition appender.h:46
log4cplus::tstring
std::basic_string< tchar > tstring
Definition tstring.h:39
syncprims.h
tstring.h
LOG4CPLUS_EXPORT
#define LOG4CPLUS_EXPORT
Definition win32.h:141