activemq-cpp-3.6.0
Main Page
Namespaces
Data Structures
Files
File List
Globals
ThreadLocal.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 _DECAF_LANG_THREADLOCAL_H_
19
#define _DECAF_LANG_THREADLOCAL_H_
20
21
#include <
decaf/util/Config.h
>
22
23
#include <
decaf/internal/util/concurrent/ThreadLocalImpl.h
>
24
25
namespace
decaf {
26
namespace
lang {
27
42
template
<
typename
E>
43
class
ThreadLocal
:
protected
decaf::internal::util::concurrent::ThreadLocalImpl
{
44
private
:
45
46
ThreadLocal
(
const
ThreadLocal
&);
47
ThreadLocal
& operator= (
const
ThreadLocal
&);
48
49
public
:
50
54
ThreadLocal
() :
ThreadLocalImpl
() {}
55
56
virtual
~ThreadLocal
() {
57
try
{
58
removeAll
();
59
}
catch
(...) {}
60
}
61
69
E&
get
() {
70
void
* bytes =
getRawValue
();
71
if
(bytes ==
NULL
) {
72
E* value =
new
E();
73
*value =
initialValue
();
74
setRawValue
((
void
*)value);
75
bytes = value;
76
}
77
return
*((E*)bytes);
78
}
79
88
void
set
(
const
E& value) {
89
setRawValue
((
void
*)(
new
E(value)));
90
}
91
99
void
remove
() {
100
this->
setRawValue
(
NULL
);
101
}
102
103
protected
:
104
120
virtual
E
initialValue
()
const
{
121
return
E();
122
}
123
124
protected
:
125
126
virtual
void
doDelete
(
void
* value) {
127
if
(value != 0) {
128
delete
static_cast<
E*
>
(value);
129
}
130
}
131
132
};
133
134
}}
135
136
#endif
/* _DECAF_LANG_THREADLOCAL_H_ */
src
main
decaf
lang
ThreadLocal.h
Generated on Mon Mar 4 2013 10:25:46 for activemq-cpp-3.6.0 by
1.8.1.2