CUBRID Engine  latest
pinning.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2008 Search Solution Corporation
3  * Copyright 2016 CUBRID Corporation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * 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 
19 /*
20  * pinning.cpp
21  */
22 
23 #ident "$Id$"
24 
25 #include "pinning.hpp"
26 
27 namespace cubbase
28 {
29  int pinner::pin (pinnable *reference)
30  {
31  if (reference != NULL
32  && reference->add_pinner (this) == NO_ERROR)
33  {
34  references.insert (reference);
35  return NO_ERROR;
36  }
37 
38  return NO_ERROR;
39  }
40 
41  int pinner::unpin (pinnable *reference)
42  {
43  if (reference->remove_pinner (this) == NO_ERROR)
44  {
45  references.erase (reference);
46  return NO_ERROR;
47  }
48 
49  return NO_ERROR;
50  }
51 
52  int pinner::unpin_all (void)
53  {
54  for (auto it = references.begin (); it != references.end ();)
55  {
56  unpin (*it++);
57  }
58 
59  return NO_ERROR;
60  }
61 
62 } /* namespace pinning */
#define NO_ERROR
Definition: error_code.h:46
int pin(pinnable *reference)
Definition: pinning.cpp:29
int add_pinner(pinner *referencer)
Definition: pinning.hpp:62
std::set< pinnable * > references
Definition: pinning.hpp:53
#define NULL
Definition: freelistheap.h:34
int remove_pinner(pinner *referencer)
Definition: pinning.hpp:68
int unpin(pinnable *reference)
Definition: pinning.cpp:41
int unpin_all(void)
Definition: pinning.cpp:52