Skip to content

Commit bc098d0

Browse files
committed
BLE - add static interface helper.
1 parent b08ddaa commit bc098d0

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/* mbed Microcontroller Library
2+
* Copyright (c) 2019 ARM Limited
3+
* SPDX-License-Identifier: Apache-2.0
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+
#ifndef BLE_COMMON_STATICINTERFACE_H
19+
#define BLE_COMMON_STATICINTERFACE_H
20+
21+
namespace ble {
22+
23+
/**
24+
* Static Interface helper class.
25+
*
26+
* @tparam Impl Implementation class.
27+
* @tparam Interface Interface template
28+
*/
29+
template <typename Impl, template<typename> class Interface>
30+
struct StaticInterface
31+
{
32+
/**
33+
* @return A pointer to the implementation class.
34+
*/
35+
Impl* impl()
36+
{
37+
return static_cast<Impl*>(this);
38+
}
39+
40+
/**
41+
* @return A pointer to the implementation class.
42+
*/
43+
const Impl* impl() const
44+
{
45+
return static_cast<const Impl*>(this);
46+
}
47+
48+
private:
49+
StaticInterface() {}
50+
friend Interface<Impl>;
51+
};
52+
53+
} // namespace ble
54+
55+
#endif //BLE_COMMON_STATICINTERFACE_H

0 commit comments

Comments
 (0)