Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
FunctionPointer.h
00001 /* mbed Microcontroller Library 00002 * Copyright (c) 2006-2015 ARM Limited 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 #ifndef MBED_FUNCTIONPOINTER_H 00017 #define MBED_FUNCTIONPOINTER_H 00018 00019 #include "platform/Callback.h" 00020 #include "platform/mbed_toolchain.h" 00021 #include <string.h> 00022 #include <stdint.h> 00023 00024 namespace mbed { 00025 /** \addtogroup platform */ 00026 /** @{*/ 00027 /** 00028 * \defgroup platform_FunctionPointer FunctionPointer class 00029 * @{ 00030 */ 00031 00032 // Declarations for backwards compatibility 00033 // To be foward compatible, code should adopt the Callback class 00034 template <typename R, typename A1> 00035 class FunctionPointerArg1 : public Callback<R(A1)> { 00036 public: 00037 MBED_DEPRECATED_SINCE("mbed-os-5.1", 00038 "FunctionPointerArg1<R, A> has been replaced by Callback<R(A)>") 00039 FunctionPointerArg1(R (*function)(A1) = 0) 00040 : Callback<R(A1)>(function) {} 00041 00042 template<typename T> 00043 MBED_DEPRECATED_SINCE("mbed-os-5.1", 00044 "FunctionPointerArg1<R, A> has been replaced by Callback<R(A)>") 00045 FunctionPointerArg1(T *object, R (T::*member)(A1)) 00046 : Callback<R(A1)>(object, member) {} 00047 00048 R (*get_function())(A1) { 00049 return *reinterpret_cast<R (**)(A1)>(this); 00050 } 00051 00052 R call(A1 a1) const { 00053 if (!Callback<R(A1)>::operator bool()) { 00054 return (R)0; 00055 } 00056 00057 return Callback<R(A1)>::call(a1); 00058 } 00059 00060 R operator()(A1 a1) const { 00061 return Callback<R(A1)>::call(a1); 00062 } 00063 }; 00064 00065 template <typename R> 00066 class FunctionPointerArg1<R, void> : public Callback<R()> { 00067 public: 00068 MBED_DEPRECATED_SINCE("mbed-os-5.1", 00069 "FunctionPointer has been replaced by Callback<void()>") 00070 FunctionPointerArg1(R (*function)() = 0) 00071 : Callback<R()>(function) {} 00072 00073 template<typename T> 00074 MBED_DEPRECATED_SINCE("mbed-os-5.1", 00075 "FunctionPointer has been replaced by Callback<void()>") 00076 FunctionPointerArg1(T *object, R (T::*member)()) 00077 : Callback<R()>(object, member) {} 00078 00079 R (*get_function())() { 00080 return *reinterpret_cast<R (**)()>(this); 00081 } 00082 00083 R call() const { 00084 if (!Callback<R()>::operator bool()) { 00085 return (R)0; 00086 } 00087 00088 return Callback<R()>::call(); 00089 } 00090 00091 R operator()() const { 00092 return Callback<R()>::call(); 00093 } 00094 }; 00095 00096 typedef FunctionPointerArg1<void, void> FunctionPointer; 00097 00098 /**@}*/ 00099 00100 /**@}*/ 00101 00102 00103 } // namespace mbed 00104 00105 #endif
Generated on Tue Jul 12 2022 14:23:48 by
