Apache Log4cxx  Version 1.5.0
Loading...
Searching...
No Matches
singletonholder.h
Go to the documentation of this file.
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18#ifndef LOG4CXX_SINGLETON_HOLDER_H
19#define LOG4CXX_SINGLETON_HOLDER_H
20
22
23namespace LOG4CXX_NS
24{
25namespace helpers
26{
27
30template <class T>
31class SingletonHolder : public Object
32{
33 using ThisType = SingletonHolder<T>;
34 T m_data;
35 struct Unused : public helpers::Class
36 {
37 LogString getName() const override { return LOG4CXX_STR("SingletonHolder"); }
38 };
39public: // Object method stubs
40 const helpers::Class& getClass() const override { static Unused notUsed; return notUsed; }
42 LOG4CXX_CAST_ENTRY(ThisType)
44
45public: // ...structors
47 template < typename Arg0, typename ... Args
48 , typename = typename std::enable_if<!std::is_same<typename std::decay<Arg0>::type, SingletonHolder>::value>::type
49 >
50 SingletonHolder(Arg0 arg0, Args&& ... args)
51 : m_data(arg0, std::forward<Args>(args) ... )
52 {}
53 // Prevent copying
56
57public: // Accessors
58 T& value() { return m_data; }
59};
60
61} // namespace helpers
62} // namespace LOG4CXX_NS
63
64#endif //LOG4CXX_SINGLETON_HOLDER_H
Definition class.h:32
base class for java-like objects.
Definition object.h:106
Wraps any singleton object so it can be added to APRInitializer.
Definition singletonholder.h:32
const helpers::Class & getClass() const override
Definition singletonholder.h:40
SingletonHolder()
Definition singletonholder.h:46
SingletonHolder(const SingletonHolder &)=delete
SingletonHolder(Arg0 arg0, Args &&... args)
Definition singletonholder.h:50
T & value()
Definition singletonholder.h:58
SingletonHolder(SingletonHolder &&)=delete
std::basic_string< logchar > LogString
Definition logstring.h:60
#define LOG4CXX_CAST_ENTRY(Interface)
Definition object.h:158
#define END_LOG4CXX_CAST_MAP()
Definition object.h:152
#define BEGIN_LOG4CXX_CAST_MAP()
Definition object.h:146