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.
Fork of BLE_API by
Diff: ble/CallChainOfFunctionPointersWithContext.h
- Revision:
- 1147:79a44226e47a
- Parent:
- 1146:3fbf341b09dd
- Child:
- 1155:e28c7aac64ab
--- a/ble/CallChainOfFunctionPointersWithContext.h Wed Apr 06 19:14:14 2016 +0100 +++ b/ble/CallChainOfFunctionPointersWithContext.h Wed Apr 06 19:14:15 2016 +0100 @@ -55,16 +55,17 @@ * } * @endcode */ - template <typename ContextType> class CallChainOfFunctionPointersWithContext : public SafeBool<CallChainOfFunctionPointersWithContext<ContextType> > { public: + /** + * The type of each callback in the callchain. + */ typedef FunctionPointerWithContext<ContextType> *pFunctionPointerWithContext_t; public: - /** Create an empty chain. - * - * @param size (optional) Initial size of the chain. + /** + * Create an empty chain. */ CallChainOfFunctionPointersWithContext() : chainHead(NULL) { /* empty */ @@ -74,44 +75,52 @@ clear(); } - /** Add a function at the front of the chain. + /** + * Add a function at the front of the chain. * - * @param function A pointer to a void function. + * @param[in] function + * A pointer to a void function. * - * @returns - * The function object created for 'function'. + * @return The function object created for @p function. */ pFunctionPointerWithContext_t add(void (*function)(ContextType context)) { return common_add(new FunctionPointerWithContext<ContextType>(function)); } - /** Add a function at the front of the chain. + /** + * Add a function at the front of the chain. * - * @param tptr Pointer to the object to call the member function on. - * @param mptr Pointer to the member function to be called. + * @param[in] tptr + * Pointer to the object to call the member function on. + * @param[in] mptr + * Pointer to the member function to be called. * - * @returns - * The function object created for 'tptr' and 'mptr'. + * @return The function object created for @p tptr and @p mptr. */ template<typename T> pFunctionPointerWithContext_t add(T *tptr, void (T::*mptr)(ContextType context)) { return common_add(new FunctionPointerWithContext<ContextType>(tptr, mptr)); } - /** Add a function at the front of the chain. + /** + * Add a function at the front of the chain. * - * @param func The FunctionPointerWithContext to add. + * @param[in] func + * The FunctionPointerWithContext to add. + * + * @return The function object created for @p func. */ pFunctionPointerWithContext_t add(const FunctionPointerWithContext<ContextType>& func) { return common_add(new FunctionPointerWithContext<ContextType>(func)); } /** - * Detach a function pointer from a callchain + * Detach a function pointer from a callchain. * - * @oaram toDetach FunctionPointerWithContext to detach from this callchain + * @param[in] toDetach + * FunctionPointerWithContext to detach from this callchain. * - * @return true if a function pointer has been detached and false otherwise + * @return true if a function pointer has been detached and false otherwise. */ bool detach(const FunctionPointerWithContext<ContextType>& toDetach) { pFunctionPointerWithContext_t current = chainHead; @@ -141,7 +150,8 @@ return false; } - /** Clear the call chain (remove all functions in the chain). + /** + * Clear the call chain (remove all functions in the chain). */ void clear(void) { pFunctionPointerWithContext_t fptr = chainHead; @@ -154,18 +164,24 @@ chainHead = NULL; } + /** + * Check whether the callchain contains any callbacks. + * + * @return true if the callchain is not empty and false otherwise. + */ bool hasCallbacksAttached(void) const { return (chainHead != NULL); } - /** Call all the functions in the chain in sequence + /** + * Call all the functions in the chain in sequence. */ void call(ContextType context) { ((const CallChainOfFunctionPointersWithContext*) this)->call(context); } /** - * @brief same as above but const + * Same as call() above, but const. */ void call(ContextType context) const { currentCalled = chainHead; @@ -182,8 +198,8 @@ } /** - * @brief same as above but with function call operator - * \code + * Same as call(), but with function call operator. + * @code * * void first(bool); * void second(bool); @@ -196,20 +212,27 @@ * // call the callchain like a function * foo(true); * - * \endcode + * @endcode */ void operator()(ContextType context) const { call(context); } /** - * @brief bool conversion operation + * Bool conversion operation. + * + * @return true if the callchain is not empty and false otherwise. */ bool toBool() const { return chainHead != NULL; } private: + /** + * Add a callback to the head of the callchain. + * + * @return A pointer to the head of the callchain. + */ pFunctionPointerWithContext_t common_add(pFunctionPointerWithContext_t pf) { if (chainHead == NULL) { chainHead = pf; @@ -222,10 +245,17 @@ } private: + /** + * A pointer to the first callback in the callchain or NULL if the callchain is empty. + */ pFunctionPointerWithContext_t chainHead; - // iterator during a function call, this has to be mutable because the call function is const. - // Note: mutable is the correct behaviour here, the iterator never leak outside the object. - // So the object can still be seen as logically const even if it change its internal state + + /** + * Iterator during a function call, this has to be mutable because the call function is const. + * + * @note Mutable is the correct behaviour here, the iterator never leaks outside the object. + * so the object can still be seen as logically const even if it is modified. + */ mutable pFunctionPointerWithContext_t currentCalled;