RTC auf true

Committer:
kevman
Date:
Wed Mar 13 11:03:24 2019 +0000
Revision:
2:7aab896b1a3b
Parent:
0:38ceb79fef03
2019-03-13

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kevman 0:38ceb79fef03 1 /* mbed Microcontroller Library
kevman 0:38ceb79fef03 2 * Copyright (c) 2006-2015 ARM Limited
kevman 0:38ceb79fef03 3 *
kevman 0:38ceb79fef03 4 * Licensed under the Apache License, Version 2.0 (the "License");
kevman 0:38ceb79fef03 5 * you may not use this file except in compliance with the License.
kevman 0:38ceb79fef03 6 * You may obtain a copy of the License at
kevman 0:38ceb79fef03 7 *
kevman 0:38ceb79fef03 8 * http://www.apache.org/licenses/LICENSE-2.0
kevman 0:38ceb79fef03 9 *
kevman 0:38ceb79fef03 10 * Unless required by applicable law or agreed to in writing, software
kevman 0:38ceb79fef03 11 * distributed under the License is distributed on an "AS IS" BASIS,
kevman 0:38ceb79fef03 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kevman 0:38ceb79fef03 13 * See the License for the specific language governing permissions and
kevman 0:38ceb79fef03 14 * limitations under the License.
kevman 0:38ceb79fef03 15 */
kevman 0:38ceb79fef03 16 #ifndef MBED_FUNCTIONPOINTER_H
kevman 0:38ceb79fef03 17 #define MBED_FUNCTIONPOINTER_H
kevman 0:38ceb79fef03 18
kevman 0:38ceb79fef03 19 #include "platform/Callback.h"
kevman 0:38ceb79fef03 20 #include "platform/mbed_toolchain.h"
kevman 0:38ceb79fef03 21 #include <string.h>
kevman 0:38ceb79fef03 22 #include <stdint.h>
kevman 0:38ceb79fef03 23
kevman 0:38ceb79fef03 24 namespace mbed {
kevman 0:38ceb79fef03 25 /** \addtogroup platform */
kevman 0:38ceb79fef03 26 /** @{*/
kevman 0:38ceb79fef03 27 /**
kevman 0:38ceb79fef03 28 * \defgroup platform_FunctionPointer FunctionPointer class
kevman 0:38ceb79fef03 29 * @{
kevman 0:38ceb79fef03 30 */
kevman 0:38ceb79fef03 31
kevman 0:38ceb79fef03 32 // Declarations for backwards compatibility
kevman 0:38ceb79fef03 33 // To be foward compatible, code should adopt the Callback class
kevman 0:38ceb79fef03 34 template <typename R, typename A1>
kevman 0:38ceb79fef03 35 class FunctionPointerArg1 : public Callback<R(A1)> {
kevman 0:38ceb79fef03 36 public:
kevman 0:38ceb79fef03 37 MBED_DEPRECATED_SINCE("mbed-os-5.1",
kevman 0:38ceb79fef03 38 "FunctionPointerArg1<R, A> has been replaced by Callback<R(A)>")
kevman 0:38ceb79fef03 39 FunctionPointerArg1(R(*function)(A1) = 0)
kevman 0:38ceb79fef03 40 : Callback<R(A1)>(function) {}
kevman 0:38ceb79fef03 41
kevman 0:38ceb79fef03 42 template<typename T>
kevman 0:38ceb79fef03 43 MBED_DEPRECATED_SINCE("mbed-os-5.1",
kevman 0:38ceb79fef03 44 "FunctionPointerArg1<R, A> has been replaced by Callback<R(A)>")
kevman 0:38ceb79fef03 45 FunctionPointerArg1(T *object, R(T::*member)(A1))
kevman 0:38ceb79fef03 46 : Callback<R(A1)>(object, member) {}
kevman 0:38ceb79fef03 47
kevman 0:38ceb79fef03 48 R(*get_function())(A1)
kevman 0:38ceb79fef03 49 {
kevman 0:38ceb79fef03 50 return *reinterpret_cast<R(* *)(A1)>(this);
kevman 0:38ceb79fef03 51 }
kevman 0:38ceb79fef03 52
kevman 0:38ceb79fef03 53 R call(A1 a1) const
kevman 0:38ceb79fef03 54 {
kevman 0:38ceb79fef03 55 if (!Callback<R(A1)>::operator bool()) {
kevman 0:38ceb79fef03 56 return (R)0;
kevman 0:38ceb79fef03 57 }
kevman 0:38ceb79fef03 58
kevman 0:38ceb79fef03 59 return Callback<R(A1)>::call(a1);
kevman 0:38ceb79fef03 60 }
kevman 0:38ceb79fef03 61
kevman 0:38ceb79fef03 62 R operator()(A1 a1) const
kevman 0:38ceb79fef03 63 {
kevman 0:38ceb79fef03 64 return Callback<R(A1)>::call(a1);
kevman 0:38ceb79fef03 65 }
kevman 0:38ceb79fef03 66 };
kevman 0:38ceb79fef03 67
kevman 0:38ceb79fef03 68 template <typename R>
kevman 0:38ceb79fef03 69 class FunctionPointerArg1<R, void> : public Callback<R()> {
kevman 0:38ceb79fef03 70 public:
kevman 0:38ceb79fef03 71 MBED_DEPRECATED_SINCE("mbed-os-5.1",
kevman 0:38ceb79fef03 72 "FunctionPointer has been replaced by Callback<void()>")
kevman 0:38ceb79fef03 73 FunctionPointerArg1(R(*function)() = 0)
kevman 0:38ceb79fef03 74 : Callback<R()>(function) {}
kevman 0:38ceb79fef03 75
kevman 0:38ceb79fef03 76 template<typename T>
kevman 0:38ceb79fef03 77 MBED_DEPRECATED_SINCE("mbed-os-5.1",
kevman 0:38ceb79fef03 78 "FunctionPointer has been replaced by Callback<void()>")
kevman 0:38ceb79fef03 79 FunctionPointerArg1(T *object, R(T::*member)())
kevman 0:38ceb79fef03 80 : Callback<R()>(object, member) {}
kevman 0:38ceb79fef03 81
kevman 0:38ceb79fef03 82 R(*get_function())()
kevman 0:38ceb79fef03 83 {
kevman 0:38ceb79fef03 84 return *reinterpret_cast<R(* *)()>(this);
kevman 0:38ceb79fef03 85 }
kevman 0:38ceb79fef03 86
kevman 0:38ceb79fef03 87 R call() const
kevman 0:38ceb79fef03 88 {
kevman 0:38ceb79fef03 89 if (!Callback<R()>::operator bool()) {
kevman 0:38ceb79fef03 90 return (R)0;
kevman 0:38ceb79fef03 91 }
kevman 0:38ceb79fef03 92
kevman 0:38ceb79fef03 93 return Callback<R()>::call();
kevman 0:38ceb79fef03 94 }
kevman 0:38ceb79fef03 95
kevman 0:38ceb79fef03 96 R operator()() const
kevman 0:38ceb79fef03 97 {
kevman 0:38ceb79fef03 98 return Callback<R()>::call();
kevman 0:38ceb79fef03 99 }
kevman 0:38ceb79fef03 100 };
kevman 0:38ceb79fef03 101
kevman 0:38ceb79fef03 102 typedef FunctionPointerArg1<void, void> FunctionPointer;
kevman 0:38ceb79fef03 103
kevman 0:38ceb79fef03 104 /**@}*/
kevman 0:38ceb79fef03 105
kevman 0:38ceb79fef03 106 /**@}*/
kevman 0:38ceb79fef03 107
kevman 0:38ceb79fef03 108
kevman 0:38ceb79fef03 109 } // namespace mbed
kevman 0:38ceb79fef03 110
kevman 0:38ceb79fef03 111 #endif