diff --git a/Examples/p01basic/p01basic.vcxproj b/Examples/p01basic/p01basic.vcxproj
index 856d061..8ff402f 100644
--- a/Examples/p01basic/p01basic.vcxproj
+++ b/Examples/p01basic/p01basic.vcxproj
@@ -63,7 +63,7 @@
true
true
true
- $(ProjectDir)..\p01basic;$(ProjectDir)..\..\src;C:\Program Files (x86)\Arduino\libraries;$(ProjectDir)..\..\..\..\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino;C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard;C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\;C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\avr\;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.8.1\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.9.2\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.9.3\include;%(AdditionalIncludeDirectories)
+ $(ProjectDir)..\p01basic;$(ProjectDir)..\..\src;$(ProjectDir)..\..\..\AltSoftSerial;C:\Program Files (x86)\Arduino\libraries;$(ProjectDir)..\..\..\..\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino;C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard;C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\avr;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.8.1\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.9.2\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.9.3\include;%(AdditionalIncludeDirectories)
$(ProjectDir)__vm\.p01basic.vsarduino.h;%(ForcedIncludeFiles)
false
__AVR_ATmega328p__;__AVR_ATmega328P__;F_CPU=16000000L;ARDUINO=10805;ARDUINO_AVR_UNO;ARDUINO_ARCH_AVR;__cplusplus=201103L;_VMICRO_INTELLISENSE;%(PreprocessorDefinitions)
diff --git a/Examples/p02cStyle/p02cStyle.vcxproj b/Examples/p02cStyle/p02cStyle.vcxproj
index 0605d1c..404ed75 100644
--- a/Examples/p02cStyle/p02cStyle.vcxproj
+++ b/Examples/p02cStyle/p02cStyle.vcxproj
@@ -63,7 +63,7 @@
true
true
true
- $(ProjectDir)..\p02cStyle;$(ProjectDir)..\..\src;$(ProjectDir)..\..\..\AltSoftSerial;C:\Program Files (x86)\Arduino\libraries;$(ProjectDir)..\..\..\..\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino;C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard;C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\;C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\avr\;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.8.1\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.9.2\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.9.3\include;%(AdditionalIncludeDirectories)
+ $(ProjectDir)..\p02cStyle;$(ProjectDir)..\..\src;$(ProjectDir)..\..\..\AltSoftSerial;C:\Program Files (x86)\Arduino\libraries;$(ProjectDir)..\..\..\..\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino;C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard;C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\avr;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.8.1\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.9.2\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.9.3\include;%(AdditionalIncludeDirectories)
$(ProjectDir)__vm\.p02cStyle.vsarduino.h;%(ForcedIncludeFiles)
false
__AVR_ATmega328p__;__AVR_ATmega328P__;F_CPU=16000000L;ARDUINO=10805;ARDUINO_AVR_UNO;ARDUINO_ARCH_AVR;__cplusplus=201103L;_VMICRO_INTELLISENSE;%(PreprocessorDefinitions)
diff --git a/Examples/p03cppStyle/p03cppStyle.vcxproj b/Examples/p03cppStyle/p03cppStyle.vcxproj
index c7f5bba..60d43a5 100644
--- a/Examples/p03cppStyle/p03cppStyle.vcxproj
+++ b/Examples/p03cppStyle/p03cppStyle.vcxproj
@@ -63,7 +63,7 @@
true
true
true
- $(ProjectDir)..\p03cppStyle;$(ProjectDir)..\..\src;$(ProjectDir)..\..\..\AltSoftSerial;C:\Program Files (x86)\Arduino\libraries;$(ProjectDir)..\..\..\..\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino;C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard;C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\;C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\avr\;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.8.1\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.9.2\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.9.3\include;%(AdditionalIncludeDirectories)
+ $(ProjectDir)..\p03cppStyle;$(ProjectDir)..\..\src;$(ProjectDir)..\..\..\AltSoftSerial;C:\Program Files (x86)\Arduino\libraries;$(ProjectDir)..\..\..\..\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino;C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard;C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\avr;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.8.1\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.9.2\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.9.3\include;%(AdditionalIncludeDirectories)
$(ProjectDir)__vm\.p03cppStyle.vsarduino.h;%(ForcedIncludeFiles)
false
__AVR_ATmega328p__;__AVR_ATmega328P__;F_CPU=16000000L;ARDUINO=10805;ARDUINO_AVR_UNO;ARDUINO_ARCH_AVR;__cplusplus=201103L;_VMICRO_INTELLISENSE;%(PreprocessorDefinitions)
diff --git a/Examples/p04usingPmsx/p04usingPmsx.vcxproj b/Examples/p04usingPmsx/p04usingPmsx.vcxproj
index f90ec37..7105f8f 100644
--- a/Examples/p04usingPmsx/p04usingPmsx.vcxproj
+++ b/Examples/p04usingPmsx/p04usingPmsx.vcxproj
@@ -63,7 +63,7 @@
true
true
true
- $(ProjectDir)..\p04usingPmsx;$(ProjectDir)..\..\src;$(ProjectDir)..\..\..\AltSoftSerial;C:\Program Files (x86)\Arduino\libraries;$(ProjectDir)..\..\..\..\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino;C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard;C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\;C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\avr\;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.8.1\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.9.2\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.9.3\include;%(AdditionalIncludeDirectories)
+ $(ProjectDir)..\p04usingPmsx;$(ProjectDir)..\..\src;$(ProjectDir)..\..\..\AltSoftSerial;C:\Program Files (x86)\Arduino\libraries;$(ProjectDir)..\..\..\..\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries;C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino;C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard;C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\avr;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.8.1\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.9.2\include;C:\Program Files (x86)\Arduino\hardware\tools\avr\lib\gcc\avr\4.9.3\include;%(AdditionalIncludeDirectories)
$(ProjectDir)__vm\.p04usingPmsx.vsarduino.h;%(ForcedIncludeFiles)
false
__AVR_ATmega328p__;__AVR_ATmega328P__;F_CPU=16000000L;ARDUINO=10805;ARDUINO_AVR_UNO;ARDUINO_ARCH_AVR;__cplusplus=201103L;_VMICRO_INTELLISENSE;%(PreprocessorDefinitions)
diff --git a/src/tribool.h b/src/tribool.h
index 7206e71..c1b850b 100644
--- a/src/tribool.h
+++ b/src/tribool.h
@@ -2,10 +2,8 @@
#include
-class tribool;
-
// Class contains Arduino port of Boost.Tribool
-// http://www.boost.org/doc/libs/1_63_0/doc/html/tribool.html
+// http://www.boost.org/doc/libs/1_67_0/doc/html/tribool.html
//
// Changes
// indeterminate state is named unknown
@@ -15,7 +13,9 @@ class tribool;
// Ported by https://github.com/jbanaszczyk
struct unknown_t {};
-constexpr inline bool unknown(tribool arg, unknown_t dummy = unknown_t());
+
+class tribool;
+constexpr bool unknown(tribool arg, unknown_t dummy = unknown_t());
typedef bool(*unknown_keyword_t)(tribool, unknown_t);
class tribool {
@@ -24,11 +24,11 @@ class tribool {
constexpr tribool() : value(unknown_v) {}
constexpr tribool(bool v) : value(v ? true_v : false_v) {};
constexpr tribool(unknown_keyword_t) : value(unknown_v) {}
- constexpr inline operator bool() const {
+ constexpr operator bool() const {
return value == tribool::true_v ? true : false;
};
- constexpr inline tribool operator!() const {
+ constexpr tribool operator!() const {
return value == false_v
? tribool(true)
: value == true_v ? tribool(false) : tribool(unknown);
@@ -37,50 +37,50 @@ class tribool {
bool isBool() const { return value == false_v || value == true_v; }
};
-constexpr inline tribool operator&&(tribool lhs, tribool rhs) {
+constexpr tribool operator&&(tribool lhs, tribool rhs) {
return (static_cast(!lhs) || static_cast(!rhs))
? tribool(false)
: ((static_cast(lhs) && static_cast(rhs)) ? tribool(true) : unknown)
;
}
-constexpr inline tribool operator&&(tribool lhs, bool rhs) { return rhs ? lhs : tribool(false); }
-constexpr inline tribool operator&&(bool lhs, tribool rhs) { return lhs ? rhs : tribool(false); }
-constexpr inline tribool operator&&(unknown_keyword_t, tribool lhs) { return !lhs ? tribool(false) : tribool(unknown); }
-constexpr inline tribool operator&&(tribool lhs, unknown_keyword_t) { return !lhs ? tribool(false) : tribool(unknown); }
+constexpr tribool operator&&(tribool lhs, bool rhs) { return rhs ? lhs : tribool(false); }
+constexpr tribool operator&&(bool lhs, tribool rhs) { return lhs ? rhs : tribool(false); }
+constexpr tribool operator&&(unknown_keyword_t, tribool lhs) { return !lhs ? tribool(false) : tribool(unknown); }
+constexpr tribool operator&&(tribool lhs, unknown_keyword_t) { return !lhs ? tribool(false) : tribool(unknown); }
-constexpr inline tribool operator||(tribool lhs, tribool rhs) {
+constexpr tribool operator||(tribool lhs, tribool rhs) {
return (static_cast(!lhs) && static_cast(!rhs))
? tribool(false)
: ((static_cast(lhs) || static_cast(rhs)) ? tribool(true) : tribool(unknown))
;
}
-constexpr inline tribool operator||(tribool lhs, bool rhs) { return rhs ? tribool(true) : lhs; }
-constexpr inline tribool operator||(bool lhs, tribool rhs) { return lhs ? tribool(true) : rhs; }
-constexpr inline tribool operator||(unknown_keyword_t, tribool lhs) { return lhs ? tribool(true) : tribool(unknown); }
-constexpr inline tribool operator||(tribool lhs, unknown_keyword_t) { return lhs ? tribool(true) : tribool(unknown); }
+constexpr tribool operator||(tribool lhs, bool rhs) { return rhs ? tribool(true) : lhs; }
+constexpr tribool operator||(bool lhs, tribool rhs) { return lhs ? tribool(true) : rhs; }
+constexpr tribool operator||(unknown_keyword_t, tribool lhs) { return lhs ? tribool(true) : tribool(unknown); }
+constexpr tribool operator||(tribool lhs, unknown_keyword_t) { return lhs ? tribool(true) : tribool(unknown); }
-constexpr inline tribool operator==(tribool lhs, tribool rhs) {
+constexpr tribool operator==(tribool lhs, tribool rhs) {
return (unknown(lhs) || unknown(rhs))
? unknown
: ((lhs && rhs) || (!lhs && !rhs))
;
}
-constexpr inline tribool operator==(tribool lhs, bool rhs) { return lhs == tribool(rhs); }
-constexpr inline tribool operator==(bool lhs, tribool rhs) { return tribool(lhs) == rhs; }
-constexpr inline tribool operator==(unknown_keyword_t, tribool lhs) { return tribool(unknown) == lhs; }
-constexpr inline tribool operator==(tribool lhs, unknown_keyword_t) { return tribool(unknown) == lhs; }
+constexpr tribool operator==(tribool lhs, bool rhs) { return lhs == tribool(rhs); }
+constexpr tribool operator==(bool lhs, tribool rhs) { return tribool(lhs) == rhs; }
+constexpr tribool operator==(unknown_keyword_t, tribool lhs) { return tribool(unknown) == lhs; }
+constexpr tribool operator==(tribool lhs, unknown_keyword_t) { return tribool(unknown) == lhs; }
-constexpr inline tribool operator!=(tribool lhs, tribool rhs) {
+constexpr tribool operator!=(tribool lhs, tribool rhs) {
return (unknown(lhs) || unknown(rhs))
? unknown
: !((lhs && rhs) || (!lhs && !rhs))
;
}
-constexpr inline tribool operator!=(tribool lhs, bool rhs) { return lhs != tribool(rhs); }
-constexpr inline tribool operator!=(bool lhs, tribool rhs) { return tribool(lhs) != rhs; }
-constexpr inline tribool operator!=(unknown_keyword_t, tribool lhs) { return tribool(unknown) != lhs; }
-constexpr inline tribool operator!=(tribool lhs, unknown_keyword_t) { return lhs != tribool(unknown); }
+constexpr tribool operator!=(tribool lhs, bool rhs) { return lhs != tribool(rhs); }
+constexpr tribool operator!=(bool lhs, tribool rhs) { return tribool(lhs) != rhs; }
+constexpr tribool operator!=(unknown_keyword_t, tribool lhs) { return tribool(unknown) != lhs; }
+constexpr tribool operator!=(tribool lhs, unknown_keyword_t) { return lhs != tribool(unknown); }
-constexpr inline bool unknown(tribool arg, unknown_t dummy) { return false; };
+constexpr bool unknown(tribool arg, unknown_t dummy) { return arg.value == tribool::unknown_v; };