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.
Dependents: BLE_NordicUART_IDB0XA1
Fork of BLE_API by
Diff: ble/SafeBool.h
- Revision:
- 1179:4ab722f8dca0
- Parent:
- 1156:e1ea38b576c6
- Child:
- 1183:1589830dbdb7
diff -r a4418fcb462f -r 4ab722f8dca0 ble/SafeBool.h
--- a/ble/SafeBool.h Wed Apr 06 19:15:28 2016 +0100
+++ b/ble/SafeBool.h Wed Apr 06 19:15:30 2016 +0100
@@ -17,32 +17,26 @@
#ifndef BLE_API_SAFE_BOOL_H_
#define BLE_API_SAFE_BOOL_H_
-/* Safe bool idiom, see : http://www.artima.com/cppsource/safebool.html */
+//safe bool idiom, see : http://www.artima.com/cppsource/safebool.html
namespace SafeBool_ {
/**
- * @brief Base class for all intances of SafeBool.
- * This base class reduces instantiation of trueTag function.
+ * @brief Base class for all intances of SafeBool,
+ * This base class reduce instantiation of trueTag function
*/
class base {
template<typename>
friend class SafeBool;
protected:
- /**
- * The bool type is a pointer to method which can be used in boolean context.
- */
- typedef void (base::*BoolType_t)() const;
+ //the bool type is a pointer to method which can be used in boolean context
+ typedef void (base::*BoolType_t)() const;
- /**
- * Non implemented call, use to disallow conversion between unrelated types.
- */
- void invalidTag() const;
+ // non implemented call, use to disallow conversion between unrelated types
+ void invalidTag() const;
- /**
- * Member function which indicate true value.
- */
- void trueTag() const {}
+ // member function which indicate true value
+ void trueTag() const {}
};
@@ -50,75 +44,71 @@
/**
* @brief template class SafeBool use CRTP to made boolean conversion easy and correct.
- * Derived class should implement the function bool toBool() const to make this work. Inheritance
+ * Derived class should implement the function bool toBool() const to make this work. Inheritance
* should be public.
*
* @tparam T Type of the derived class
- *
- * @code
- *
- * class A : public SafeBool<A> {
+ *
+ * \code
+ *
+ * class A : public SafeBool<A> {
* public:
- *
+ *
* // boolean conversion
- * bool toBool() {
- *
- * }
+ * bool toBool() {
+ *
+ * }
* };
- *
- * class B : public SafeBool<B> {
+ *
+ * class B : public SafeBool<B> {
* public:
- *
+ *
* // boolean conversion
- * bool toBool() const {
- *
- * }
+ * bool toBool() const {
+ *
+ * }
* };
- *
+ *
* A a;
* B b;
- *
- * // will compile
- * if(a) {
- *
+ *
+ * // will compile
+ * if(a) {
+ *
* }
- *
- * // compilation error
- * if(a == b) {
- *
+ *
+ * // compilation error
+ * if(a == b) {
+ *
* }
- *
- *
- * @endcode
+ *
+ *
+ * \endcode
*/
-template <typename T>
+template <typename T>
class SafeBool : public SafeBool_::base {
public:
- /**
- * Bool operator implementation, derived class has to provide bool toBool() const function.
- */
- operator BoolType_t() const {
- return (static_cast<const T*>(this))->toBool()
- ? &SafeBool<T>::trueTag : 0;
- }
+ /**
+ * bool operator implementation, derived class has to provide bool toBool() const function.
+ */
+ operator BoolType_t() const {
+ return (static_cast<const T*>(this))->toBool()
+ ? &SafeBool<T>::trueTag : 0;
+ }
};
-/**
- * Avoid conversion to bool between different classes.
- */
+//Avoid conversion to bool between different classes
template <typename T, typename U>
void operator==(const SafeBool<T>& lhs,const SafeBool<U>& rhs) {
lhs.invalidTag();
- // return false;
+// return false;
}
-/**
- * Avoid conversion to bool between different classes.
- */
+//Avoid conversion to bool between different classes
template <typename T,typename U>
void operator!=(const SafeBool<T>& lhs,const SafeBool<U>& rhs) {
- lhs.invalidTag();
- // return false;
+ lhs.invalidTag();
+// return false;
}
#endif /* BLE_API_SAFE_BOOL_H_ */
\ No newline at end of file
