diff --git a/hal/api/FunctionPointer.h b/hal/api/FunctionPointer.h index 32853fe8778..2d49ba035e1 100644 --- a/hal/api/FunctionPointer.h +++ b/hal/api/FunctionPointer.h @@ -21,566 +21,38 @@ namespace mbed { -// Reusable FuncPtr class based on template specialization -template -class FuncPtr; - -/** A class for storing and calling a pointer to a static or member function - */ -template -class FuncPtr { -public: - /** Create a FuncPtr, attaching a static function - * - * @param function The static function to attach (default is none) - */ - FuncPtr(R (*function)(A1, A2, A3, A4) = 0) { - attach(function); - } - - /** Create a FuncPtr, attaching a static function with bound pointer - * - * @param object Pointer to object to bind to function - * @param function The static function to attach - */ - template - FuncPtr(T *object, R (*function)(T*, A1, A2, A3, A4)) { - attach(object, function); - } - - /** Create a FuncPtr, attaching a member function - * - * @param object The object pointer to invoke the member function on (i.e. the this pointer) - * @param function The address of the member function to attach - */ - template - FuncPtr(T *object, R (T::*member)(A1, A2, A3, A4)) { - attach(object, member); - } - - /** Create a FuncPtr, attaching a function object - * - * @param object Pointer to a function object to attach - */ - template - FuncPtr(T *object) { - attach(object, &T::operator()); - } - - /** Create a FuncPtr from another FuncPtr - * - * @param func The func to attach - */ - FuncPtr(const FuncPtr &func) { - attach(func); - } - - /** Attach a static function - * - * @param function The static function to attach (default is none) - */ - void attach(R (*function)(A1, A2, A3, A4)) { - _object = 0; - memcpy(&_function, &function, sizeof function); - _thunk = &FuncPtr::staticthunk; - } - - /** Attach a static function with bound pointer - * - * @param object Pointer to object to bind to function - * @param function The static function to attach - */ - template - void attach(T *object, R (*function)(T*, A1, A2, A3, A4)) { - _object = static_cast(object); - memcpy(&_function, &function, sizeof function); - _thunk = &FuncPtr::boundthunk; - } - - /** Attach a member function - * - * @param object The object pointer to invoke the member function on (i.e. the this pointer) - * @param function The address of the member function to attach - */ - template - void attach(T *object, R (T::*method)(A1, A2, A3, A4)) { - _object = static_cast(object); - memcpy(&_function, &method, sizeof method); - _thunk = &FuncPtr::methodthunk; - } - - /** Attach a function object - * - * @param object Pointer to a function object to attach - */ - template - void attach(T *object) { - attach(object, &T::operator()); - } - - /** Attach a FuncPtr - * - * @param func The func to attach - */ - void attach(const FuncPtr &func) { - _object = func._object; - memcpy(&_function, &func._function, sizeof _function); - _thunk = func._thunk; - } - - /** Call the attached static or member function - */ - R call(A1 a1, A2 a2, A3 a3, A4 a4) { - return _thunk(_object, _function, a1, a2, a3, a4); - } - - /** Get registered static function - */ - R (*get_function(A1, A2, A3, A4))() { - return reinterpret_cast(_object ? 0 : _function); - } - -#ifdef MBED_OPERATORS - R operator ()(A1 a1, A2 a2, A3 a3, A4 a4) { - return call(a1, a2, a3, a4); - } - operator bool(void) const { - return static_cast(_function); - } -#endif -private: - // Static thunks for various function types - static R staticthunk(void*, void *func, A1 a1, A2 a2, A3 a3, A4 a4) { - R (*f)(A1, A2, A3, A4) = *reinterpret_cast(func); - return f(a1, a2, a3, a4); - } - - template - static R boundthunk(void *object, void *func, A1 a1, A2 a2, A3 a3, A4 a4) { - T *o = static_cast(object); - R (*f)(T*, A1, A2, A3, A4) = *reinterpret_cast(func); - return f(o, a1); - } - - template - static R methodthunk(void *object, void *member, A1 a1, A2 a2, A3 a3, A4 a4) { - T* o = static_cast(object); - R (T::*m)(A1, A2, A3, A4) = *reinterpret_cast(member); - return (o->*m)(a1, a2, a3, a4); - } - - // Forward declaration of an unknown class - // this kind of declaration is authorized by the standard (see 8.3.3/2 of C++ 03 standard). - // As a result, the compiler will allocate for UnknownFunctionMember_t the biggest size - // and biggest alignment possible for member function. - // This type can be used inside unions, it will help to provide the storage - // with the proper size and alignment guarantees - class UnknownClass; - - // object this pointer - void *_object; - - // aligned raw member function pointer storage - converted back by registered thunk - char _function[sizeof(void (UnknownClass::*)())]; - - // registered function to convert back and call _m.member on _object - R (*_thunk)(void*, void*, A1, A2, A3, A4); -}; - -/** A class for storing and calling a pointer to a static or member function - */ -template -class FuncPtr { -public: - /** Create a FuncPtr, attaching a static function - * - * @param function The static function to attach (default is none) - */ - FuncPtr(R (*function)(A1, A2, A3) = 0) { - attach(function); - } - - /** Create a FuncPtr, attaching a static function with bound pointer - * - * @param object Pointer to object to bind to function - * @param function The static function to attach - */ - template - FuncPtr(T *object, R (*function)(T*, A1, A2, A3)) { - attach(object, function); - } - - /** Create a FuncPtr, attaching a member function - * - * @param object The object pointer to invoke the member function on (i.e. the this pointer) - * @param function The address of the member function to attach - */ - template - FuncPtr(T *object, R (T::*member)(A1, A2, A3)) { - attach(object, member); - } - - /** Create a FuncPtr, attaching a function object - * - * @param object Pointer to a function object to attach - */ - template - FuncPtr(T *object) { - attach(object, &T::operator()); - } - - /** Create a FuncPtr from another FuncPtr - * - * @param func The func to attach - */ - FuncPtr(const FuncPtr &func) { - attach(func); - } - - /** Attach a static function - * - * @param function The static function to attach (default is none) - */ - void attach(R (*function)(A1, A2, A3)) { - _object = 0; - memcpy(&_function, &function, sizeof function); - _thunk = &FuncPtr::staticthunk; - } - - /** Attach a static function with bound pointer - * - * @param object Pointer to object to bind to function - * @param function The static function to attach - */ - template - void attach(T *object, R (*function)(T*, A1, A2, A3)) { - _object = static_cast(object); - memcpy(&_function, &function, sizeof function); - _thunk = &FuncPtr::boundthunk; - } - - /** Attach a member function - * - * @param object The object pointer to invoke the member function on (i.e. the this pointer) - * @param function The address of the member function to attach - */ - template - void attach(T *object, R (T::*method)(A1, A2, A3)) { - _object = static_cast(object); - memcpy(&_function, &method, sizeof method); - _thunk = &FuncPtr::methodthunk; - } - - /** Attach a function object - * - * @param object Pointer to a function object to attach - */ - template - void attach(T *object) { - attach(object, &T::operator()); - } - - /** Attach a FuncPtr - * - * @param func The func to attach - */ - void attach(const FuncPtr &func) { - _object = func._object; - memcpy(&_function, &func._function, sizeof _function); - _thunk = func._thunk; - } - - /** Call the attached static or member function - */ - R call(A1 a1, A2 a2, A3 a3) { - return _thunk(_object, _function, a1, a2, a3); - } - - /** Get registered static function - */ - R (*get_function(A1, A2, A3))() { - return reinterpret_cast(_object ? 0 : _function); - } - -#ifdef MBED_OPERATORS - R operator ()(A1 a1, A2 a2, A3 a3) { - return call(a1, a2, a3); - } - operator bool(void) const { - return static_cast(_function); - } -#endif -private: - // Static thunks for various function types - static R staticthunk(void*, void *func, A1 a1, A2 a2, A3 a3) { - R (*f)(A1, A2, A3) = *reinterpret_cast(func); - return f(a1, a2, a3); - } - - template - static R boundthunk(void *object, void *func, A1 a1, A2 a2, A3 a3) { - T *o = static_cast(object); - R (*f)(T*, A1, A2, A3) = *reinterpret_cast(func); - return f(o, a1); - } - - template - static R methodthunk(void *object, void *member, A1 a1, A2 a2, A3 a3) { - T* o = static_cast(object); - R (T::*m)(A1, A2, A3) = *reinterpret_cast(member); - return (o->*m)(a1, a2, a3); - } - - // Forward declaration of an unknown class - // this kind of declaration is authorized by the standard (see 8.3.3/2 of C++ 03 standard). - // As a result, the compiler will allocate for UnknownFunctionMember_t the biggest size - // and biggest alignment possible for member function. - // This type can be used inside unions, it will help to provide the storage - // with the proper size and alignment guarantees - class UnknownClass; - - // object this pointer - void *_object; - - // aligned raw member function pointer storage - converted back by registered thunk - char _function[sizeof(void (UnknownClass::*)())]; - - // registered function to convert back and call _m.member on _object - R (*_thunk)(void*, void*, A1, A2, A3); -}; - -/** A class for storing and calling a pointer to a static or member function - */ -template -class FuncPtr { -public: - /** Create a FuncPtr, attaching a static function - * - * @param function The static function to attach (default is none) - */ - FuncPtr(R (*function)(A1, A2) = 0) { - attach(function); - } - - /** Create a FuncPtr, attaching a static function with bound pointer - * - * @param object Pointer to object to bind to function - * @param function The static function to attach - */ - template - FuncPtr(T *object, R (*function)(T*, A1, A2)) { - attach(object, function); - } - - /** Create a FuncPtr, attaching a member function - * - * @param object The object pointer to invoke the member function on (i.e. the this pointer) - * @param function The address of the member function to attach - */ - template - FuncPtr(T *object, R (T::*member)(A1, A2)) { - attach(object, member); - } - - /** Create a FuncPtr, attaching a function object - * - * @param object Pointer to a function object to attach - */ - template - FuncPtr(T *object) { - attach(object, &T::operator()); - } - - /** Create a FuncPtr from another FuncPtr - * - * @param func The func to attach - */ - FuncPtr(const FuncPtr &func) { - attach(func); - } - - /** Attach a static function - * - * @param function The static function to attach (default is none) - */ - void attach(R (*function)(A1, A2)) { - _object = 0; - memcpy(&_function, &function, sizeof function); - _thunk = &FuncPtr::staticthunk; - } - - /** Attach a static function with bound pointer - * - * @param object Pointer to object to bind to function - * @param function The static function to attach - */ - template - void attach(T *object, R (*function)(T*, A1, A2)) { - _object = static_cast(object); - memcpy(&_function, &function, sizeof function); - _thunk = &FuncPtr::boundthunk; - } - - /** Attach a member function - * - * @param object The object pointer to invoke the member function on (i.e. the this pointer) - * @param function The address of the member function to attach - */ - template - void attach(T *object, R (T::*method)(A1, A2)) { - _object = static_cast(object); - memcpy(&_function, &method, sizeof method); - _thunk = &FuncPtr::methodthunk; - } - - /** Attach a function object - * - * @param object Pointer to a function object to attach - */ - template - void attach(T *object) { - attach(object, &T::operator()); - } - - /** Attach a FuncPtr - * - * @param func The func to attach - */ - void attach(const FuncPtr &func) { - _object = func._object; - memcpy(&_function, &func._function, sizeof _function); - _thunk = func._thunk; - } - - /** Call the attached static or member function - */ - R call(A1 a1, A2 a2) { - return _thunk(_object, _function, a1, a2); - } - - /** Get registered static function - */ - R (*get_function(A1, A2))() { - return reinterpret_cast(_object ? 0 : _function); - } - -#ifdef MBED_OPERATORS - R operator ()(A1 a1, A2 a2) { - return call(a1, a2); - } - operator bool(void) const { - return static_cast(_function); - } -#endif -private: - // Static thunks for various function types - static R staticthunk(void*, void *func, A1 a1, A2 a2) { - R (*f)(A1, A2) = *reinterpret_cast(func); - return f(a1, a2); - } - - template - static R boundthunk(void *object, void *func, A1 a1, A2 a2) { - T *o = static_cast(object); - R (*f)(T*, A1, A2) = *reinterpret_cast(func); - return f(o, a1); - } - - template - static R methodthunk(void *object, void *member, A1 a1, A2 a2) { - T* o = static_cast(object); - R (T::*m)(A1, A2) = *reinterpret_cast(member); - return (o->*m)(a1, a2); - } - - // Forward declaration of an unknown class - // this kind of declaration is authorized by the standard (see 8.3.3/2 of C++ 03 standard). - // As a result, the compiler will allocate for UnknownFunctionMember_t the biggest size - // and biggest alignment possible for member function. - // This type can be used inside unions, it will help to provide the storage - // with the proper size and alignment guarantees - class UnknownClass; - - // object this pointer - void *_object; - - // aligned raw member function pointer storage - converted back by registered thunk - char _function[sizeof(void (UnknownClass::*)())]; - - // registered function to convert back and call _m.member on _object - R (*_thunk)(void*, void*, A1, A2); -}; +/* If we had variaditic templates, this wouldn't be a problem, but until C++11 is enabled, we are stuck with multiple classes... */ /** A class for storing and calling a pointer to a static or member function */ template -class FuncPtr { +class FunctionPointerArg1{ public: - /** Create a FuncPtr, attaching a static function + /** Create a FunctionPointer, attaching a static function * * @param function The static function to attach (default is none) */ - FuncPtr(R (*function)(A1) = 0) { + FunctionPointerArg1(R (*function)(A1) = 0) { attach(function); } - /** Create a FuncPtr, attaching a static function with bound pointer - * - * @param object Pointer to object to bind to function - * @param function The static function to attach - */ - template - FuncPtr(T *object, R (*function)(T*, A1)) { - attach(object, function); - } - - /** Create a FuncPtr, attaching a member function + /** Create a FunctionPointer, attaching a member function * * @param object The object pointer to invoke the member function on (i.e. the this pointer) * @param function The address of the member function to attach */ template - FuncPtr(T *object, R (T::*member)(A1)) { + FunctionPointerArg1(T *object, R (T::*member)(A1)) { attach(object, member); } - /** Create a FuncPtr, attaching a function object - * - * @param object Pointer to a function object to attach - */ - template - FuncPtr(T *object) { - attach(object, &T::operator()); - } - - /** Create a FuncPtr from another FuncPtr - * - * @param func The func to attach - */ - FuncPtr(const FuncPtr &func) { - attach(func); - } - /** Attach a static function * * @param function The static function to attach (default is none) */ void attach(R (*function)(A1)) { - _object = 0; - memcpy(&_function, &function, sizeof function); - _thunk = &FuncPtr::staticthunk; - } - - /** Attach a static function with bound pointer - * - * @param object Pointer to object to bind to function - * @param function The static function to attach - */ - template - void attach(T *object, R (*function)(T*, A1)) { - _object = static_cast(object); - memcpy(&_function, &function, sizeof function); - _thunk = &FuncPtr::boundthunk; + _p.function = function; + _membercaller = 0; } /** Attach a member function @@ -589,258 +61,141 @@ class FuncPtr { * @param function The address of the member function to attach */ template - void attach(T *object, R (T::*method)(A1)) { - _object = static_cast(object); - memcpy(&_function, &method, sizeof method); - _thunk = &FuncPtr::methodthunk; - } - - /** Attach a function object - * - * @param object Pointer to a function object to attach - */ - template - void attach(T *object) { - attach(object, &T::operator()); - } - - /** Attach a FuncPtr - * - * @param func The func to attach - */ - void attach(const FuncPtr &func) { - _object = func._object; - memcpy(&_function, &func._function, sizeof _function); - _thunk = func._thunk; + void attach(T *object, R (T::*member)(A1)) { + _p.object = static_cast(object); + *reinterpret_cast(_member) = member; + _membercaller = &FunctionPointerArg1::membercaller; } /** Call the attached static or member function */ - R call(A1 a1) { - return _thunk(_object, _function, a1); + R call(A1 a) { + if (_membercaller == 0 && _p.function) { + return _p.function(a); + } else if (_membercaller && _p.object) { + return _membercaller(_p.object, _member, a); + } + return (R)0; } /** Get registered static function */ - R (*get_function(A1))() { - return reinterpret_cast(_object ? 0 : _function); + R(*get_function(A1))() { + return _membercaller ? (R(*)(A1))0 : (R(*)(A1))_p.function; } #ifdef MBED_OPERATORS - R operator ()(A1 a1) { - return call(a1); + R operator ()(A1 a) { + return call(a); } operator bool(void) const { - return static_cast(_function); + return (_membercaller != NULL ? _p.object : (void*)_p.function) != NULL; } #endif private: - // Static thunks for various function types - static R staticthunk(void*, void *func, A1 a1) { - R (*f)(A1) = *reinterpret_cast(func); - return f(a1); - } - - template - static R boundthunk(void *object, void *func, A1 a1) { - T *o = static_cast(object); - R (*f)(T*, A1) = *reinterpret_cast(func); - return f(o, a1); - } - template - static R methodthunk(void *object, void *member, A1 a1) { + static R membercaller(void *object, uintptr_t *member, A1 a) { T* o = static_cast(object); - R (T::*m)(A1) = *reinterpret_cast(member); - return (o->*m)(a1); + R (T::**m)(A1) = reinterpret_cast(member); + return (o->**m)(a); } - // Forward declaration of an unknown class - // this kind of declaration is authorized by the standard (see 8.3.3/2 of C++ 03 standard). - // As a result, the compiler will allocate for UnknownFunctionMember_t the biggest size - // and biggest alignment possible for member function. - // This type can be used inside unions, it will help to provide the storage - // with the proper size and alignment guarantees - class UnknownClass; - - // object this pointer - void *_object; - - // aligned raw member function pointer storage - converted back by registered thunk - char _function[sizeof(void (UnknownClass::*)())]; - - // registered function to convert back and call _m.member on _object - R (*_thunk)(void*, void*, A1); + union { + R (*function)(A1); // static function pointer + void *object; // object this pointer + } _p; + uintptr_t _member[4]; // aligned raw member function pointer storage - converted back by registered _membercaller + R (*_membercaller)(void*, uintptr_t*, A1); // registered membercaller function to convert back and call _m.member on _object }; -/** A class for storing and calling a pointer to a static or member function +/** A class for storing and calling a pointer to a static or member function (R ()(void)) */ template -class FuncPtr { +class FunctionPointerArg1{ public: - /** Create a FuncPtr, attaching a static function + /** Create a FunctionPointer, attaching a static function * * @param function The static function to attach (default is none) */ - FuncPtr(R (*function)() = 0) { + FunctionPointerArg1(R (*function)(void) = 0) { attach(function); } - /** Create a FuncPtr, attaching a static function with bound pointer - * - * @param object Pointer to object to bind to function - * @param function The static function to attach - */ - template - FuncPtr(T *object, R (*function)(T*)) { - attach(object, function); - } - - /** Create a FuncPtr, attaching a member function + /** Create a FunctionPointer, attaching a member function * * @param object The object pointer to invoke the member function on (i.e. the this pointer) - * @param function The address of the member function to attach + * @param function The address of the void member function to attach */ template - FuncPtr(T *object, R (T::*member)()) { + FunctionPointerArg1(T *object, R (T::*member)(void)) { attach(object, member); } - /** Create a FuncPtr, attaching a function object - * - * @param object Pointer to a function object to attach - */ - template - FuncPtr(T *object) { - attach(object, &T::operator()); - } - - /** Create a FuncPtr from another FuncPtr - * - * @param func The func to attach - */ - FuncPtr(const FuncPtr &func) { - attach(func); - } - /** Attach a static function * - * @param function The static function to attach (default is none) + * @param function The void static function to attach (default is none) */ - void attach(R (*function)()) { - _object = 0; - memcpy(&_function, &function, sizeof function); - _thunk = &FuncPtr::staticthunk; - } - - /** Attach a static function with bound pointer - * - * @param object Pointer to object to bind to function - * @param function The static function to attach - */ - template - void attach(T *object, R (*function)(T*)) { - _object = static_cast(object); - memcpy(&_function, &function, sizeof function); - _thunk = &FuncPtr::boundthunk; + void attach(R (*function)(void)) { + _p.function = function; + _membercaller = 0; } /** Attach a member function * * @param object The object pointer to invoke the member function on (i.e. the this pointer) - * @param function The address of the member function to attach - */ - template - void attach(T *object, R (T::*method)()) { - _object = static_cast(object); - memcpy(&_function, &method, sizeof method); - _thunk = &FuncPtr::methodthunk; - } - - /** Attach a function object - * - * @param object Pointer to a function object to attach + * @param function The address of the void member function to attach */ template - void attach(T *object) { - attach(object, &T::operator()); - } - - /** Attach a FuncPtr - * - * @param func The func to attach - */ - void attach(const FuncPtr &func) { - _object = func._object; - memcpy(&_function, &func._function, sizeof _function); - _thunk = func._thunk; + void attach(T *object, R (T::*member)(void)) { + _p.object = static_cast(object); + *reinterpret_cast(_member) = member; + _membercaller = &FunctionPointerArg1::membercaller; } /** Call the attached static or member function */ - R call() { - return _thunk(_object, _function); + R call(){ + if (_membercaller == 0 && _p.function) { + return _p.function(); + } else if (_membercaller && _p.object) { + return _membercaller(_p.object, _member); + } + return (R)0; } /** Get registered static function */ - R (*get_function())() { - return reinterpret_cast(_object ? 0 : _function); + R(*get_function())() { + return _membercaller ? (R(*)())0 : (R(*)())_p.function; } #ifdef MBED_OPERATORS - R operator ()() { + R operator ()(void) { return call(); } operator bool(void) const { - return static_cast(_function); + return (_membercaller != NULL ? _p.object : (void*)_p.function) != NULL; } #endif -private: - // Static thunks for various function types - static R staticthunk(void*, void *func) { - R (*f)() = *reinterpret_cast(func); - return f(); - } - - template - static R boundthunk(void *object, void *func) { - T *o = static_cast(object); - R (*f)(T*) = *reinterpret_cast(func); - return f(o); - } +private: template - static R methodthunk(void *object, void *member) { + static R membercaller(void *object, uintptr_t *member) { T* o = static_cast(object); - R (T::*m)() = *reinterpret_cast(member); - return (o->*m)(); + R (T::**m)(void) = reinterpret_cast(member); + return (o->**m)(); } - // Forward declaration of an unknown class - // this kind of declaration is authorized by the standard (see 8.3.3/2 of C++ 03 standard). - // As a result, the compiler will allocate for UnknownFunctionMember_t the biggest size - // and biggest alignment possible for member function. - // This type can be used inside unions, it will help to provide the storage - // with the proper size and alignment guarantees - class UnknownClass; - - // object this pointer - void *_object; - - // aligned raw member function pointer storage - converted back by registered thunk union { - char _function[sizeof(void (UnknownClass::*)())]; - void (UnknownClass::*_unknownMethod)(); - }; - - // registered function to convert back and call _m.member on _object - R (*_thunk)(void*, void*); + R (*function)(void); // static function pointer + void *object; // object this pointer + } _p; + uintptr_t _member[4]; // aligned raw member function pointer storage - converted back by registered _membercaller + R (*_membercaller)(void*, uintptr_t*); // registered membercaller function to convert back and call _m.member on _object }; -// Overloads for backwards compatibility -typedef FuncPtr FunctionPointer; -typedef FuncPtr event_callback_t; +typedef FunctionPointerArg1 FunctionPointer; +typedef FunctionPointerArg1 event_callback_t; } // namespace mbed diff --git a/net/NetworkSocketAPI/NetworkInterface.h b/net/NetworkSocketAPI/NetworkInterface.h index bb167ad6880..654e3a5e554 100644 --- a/net/NetworkSocketAPI/NetworkInterface.h +++ b/net/NetworkSocketAPI/NetworkInterface.h @@ -17,10 +17,7 @@ #ifndef NETWORK_INTERFACE_H #define NETWORK_INTERFACE_H -#ifndef MBED_OPERATORS -#define MBED_OPERATORS -#endif -#include "FunctionPointer.h" +#include "mbed.h" #include "SocketAddress.h" /** diff --git a/net/NetworkSocketAPI/Socket.cpp b/net/NetworkSocketAPI/Socket.cpp index 88ce3ee6858..7f90895edea 100644 --- a/net/NetworkSocketAPI/Socket.cpp +++ b/net/NetworkSocketAPI/Socket.cpp @@ -77,6 +77,6 @@ int Socket::close(bool shutdown) void Socket::thunk(void *p) { - mbed::FuncPtr *fptr = (mbed::FuncPtr *)p; + FunctionPointer *fptr = (FunctionPointer *)p; (*fptr)(); } diff --git a/net/NetworkSocketAPI/TCPServer.cpp b/net/NetworkSocketAPI/TCPServer.cpp index 535c69f2ffc..aa3623caa09 100644 --- a/net/NetworkSocketAPI/TCPServer.cpp +++ b/net/NetworkSocketAPI/TCPServer.cpp @@ -68,7 +68,7 @@ int TCPServer::accept(TCPSocket *connection) } -void TCPServer::attach_accept(mbed::FuncPtr callback) +void TCPServer::attach_accept(FunctionPointer callback) { _accept_cb = callback; diff --git a/net/NetworkSocketAPI/TCPServer.h b/net/NetworkSocketAPI/TCPServer.h index c8baa1203f6..697104c66f6 100644 --- a/net/NetworkSocketAPI/TCPServer.h +++ b/net/NetworkSocketAPI/TCPServer.h @@ -53,15 +53,15 @@ class TCPServer : public Socket { \param callback Function to call when accept will succeed, may be called in interrupt context. */ - void attach_accept(mbed::FuncPtr callback); + void attach_accept(FunctionPointer callback); template void attach_accept(T *tptr, M mptr) { - attach_accept(mbed::FuncPtr(tptr, mptr)); + attach_accept(FunctionPointer(tptr, mptr)); } private: - mbed::FuncPtr _accept_cb; + FunctionPointer _accept_cb; }; #endif diff --git a/net/NetworkSocketAPI/TCPSocket.cpp b/net/NetworkSocketAPI/TCPSocket.cpp index 4f917d1d0ee..13bd8b6c0a9 100644 --- a/net/NetworkSocketAPI/TCPSocket.cpp +++ b/net/NetworkSocketAPI/TCPSocket.cpp @@ -83,7 +83,7 @@ int TCPSocket::recv(void *data, unsigned size) } -void TCPSocket::attach_send(mbed::FuncPtr callback) +void TCPSocket::attach_send(FunctionPointer callback) { _send_cb = callback; @@ -94,7 +94,7 @@ void TCPSocket::attach_send(mbed::FuncPtr callback) } } -void TCPSocket::attach_recv(mbed::FuncPtr callback) +void TCPSocket::attach_recv(FunctionPointer callback) { _recv_cb = callback; diff --git a/net/NetworkSocketAPI/TCPSocket.h b/net/NetworkSocketAPI/TCPSocket.h index c7845d91402..36693c387f8 100644 --- a/net/NetworkSocketAPI/TCPSocket.h +++ b/net/NetworkSocketAPI/TCPSocket.h @@ -67,29 +67,29 @@ class TCPSocket : public Socket { \param callback Function to call when send will succeed, may be called in interrupt context. */ - void attach_send(mbed::FuncPtr callback); + void attach_send(FunctionPointer callback); template void attach_send(T *tptr, M mptr) { - attach_send(mbed::FuncPtr(tptr, mptr)); + attach_send(FunctionPointer(tptr, mptr)); } /** Register a callback on when recv is ready \param callback Function to call when recv will succeed, may be called in interrupt context. */ - void attach_recv(mbed::FuncPtr callback); + void attach_recv(FunctionPointer callback); template void attach_recv(T *tptr, M mptr) { - attach_recv(mbed::FuncPtr(tptr, mptr)); + attach_recv(FunctionPointer(tptr, mptr)); } private: friend class TCPServer; - mbed::FuncPtr _send_cb; - mbed::FuncPtr _recv_cb; + FunctionPointer _send_cb; + FunctionPointer _recv_cb; }; #endif diff --git a/net/NetworkSocketAPI/UDPSocket.cpp b/net/NetworkSocketAPI/UDPSocket.cpp index 5ab756cc9e0..90ed74ad39e 100644 --- a/net/NetworkSocketAPI/UDPSocket.cpp +++ b/net/NetworkSocketAPI/UDPSocket.cpp @@ -68,7 +68,7 @@ int UDPSocket::recvfrom(SocketAddress *address, void *buffer, unsigned size) } -void UDPSocket::attach_send(mbed::FuncPtr callback) +void UDPSocket::attach_send(FunctionPointer callback) { _send_cb = callback; if (_socket && _send_cb) { @@ -78,7 +78,7 @@ void UDPSocket::attach_send(mbed::FuncPtr callback) } } -void UDPSocket::attach_recv(mbed::FuncPtr callback) +void UDPSocket::attach_recv(FunctionPointer callback) { _recv_cb = callback; if (_socket && _recv_cb) { diff --git a/net/NetworkSocketAPI/UDPSocket.h b/net/NetworkSocketAPI/UDPSocket.h index a216142242a..9d1ab06112b 100644 --- a/net/NetworkSocketAPI/UDPSocket.h +++ b/net/NetworkSocketAPI/UDPSocket.h @@ -58,27 +58,27 @@ class UDPSocket : public Socket { \param callback Function to call when send will succeed, may be called in interrupt context. */ - void attach_send(mbed::FuncPtr callback); + void attach_send(FunctionPointer callback); template void attach_send(T *tptr, M mptr) { - attach_send(mbed::FuncPtr(tptr, mptr)); + attach_send(FunctionPointer(tptr, mptr)); } /** Register a callback on when recv is ready \param callback Function to call when recv will succeed, may be called in interrupt context. */ - void attach_recv(mbed::FuncPtr callback); + void attach_recv(FunctionPointer callback); template void attach_recv(T *tptr, M mptr) { - attach_recv(mbed::FuncPtr(tptr, mptr)); + attach_recv(FunctionPointer(tptr, mptr)); } private: - mbed::FuncPtr _send_cb; - mbed::FuncPtr _recv_cb; + FunctionPointer _send_cb; + FunctionPointer _recv_cb; }; #endif