DriveHQ Start Menu
Cloud Drive Mapping
Folder Sync
Cloud Backup
True Drop Box
FTP/SFTP Hosting
Group Account
DriveHQ Start Menu
Online File Server
My Storage
|
Manage Shares
|
Publishes
|
Drop Boxes
|
Group Account
WebDAV Drive Mapping
Cloud Drive Home
|
WebDAV Guide
|
Drive Mapping Tool
|
Drive Mapping URL
Complete Data Backup
Backup Guide
|
Online Backup Tool
|
Cloud-to-Cloud Backup
FTP, Email & Web Service
FTP Home
|
FTP Hosting FAQ
|
Email Hosting
|
EmailManager
|
Web Hosting
Help & Resources
About
|
Enterprise Service
|
Partnership
|
Comparisons
|
Support
Quick Links
Security and Privacy
Download Software
Service Manual
Use Cases
Group Account
Online Help
Blog
Contact
Cloud Surveillance
Sign Up
Login
Features
Business Features
Online File Server
FTP Hosting
Cloud Drive Mapping
Cloud File Backup
Email Backup & Hosting
Cloud File Sharing
Folder Synchronization
Group Management
True Drop Box
Full-text Search
AD Integration/SSO
Mobile Access
IP Camera & DVR Solution
More...
Personal Features
Personal Cloud Drive
Backup All Devices
Mobile APPs
Personal Web Hosting
Sub-Account (for Kids)
Home/PC/Kids Monitoring
More...
Software
DriveHQ Drive Mapping Tool
DriveHQ FileManager
DriveHQ Online Backup
DriveHQ Mobile Apps
Pricing
Business Plans & Pricing
Personal Plans & Pricing
Price Comparison with Others
Feature Comparison with Others
Install Mobile App
Sign up
Creating account...
Invalid character in username! Only 0-9, a-z, A-Z, _, -, . allowed.
Username is required!
Invalid email address!
E-mail is required!
Password is required!
Password is invalid!
Password and confirmation do not match.
Confirm password is required!
I accept
Membership Agreement
Please read the Membership Agreement and check "I accept"!
Free Quick Sign-up
Sign-up Page
Log in
Signing in...
Username or e-mail address is required!
Password is required!
Keep me logged in
Quick Login
Forgot Password
Up
Upload
Download
Share
Publish
New Folder
New File
Copy
Cut
Delete
Paste
Rate
Upgrade
Rotate
Effect
Edit
Slide
History
// Three-state boolean logic library // Copyright Douglas Gregor 2002-2004. Use, modification and // distribution is subject to the Boost Software License, Version // 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // For more information, see http://www.boost.org #ifndef BOOST_LOGIC_TRIBOOL_HPP #define BOOST_LOGIC_TRIBOOL_HPP #include
#include
#include
#if BOOST_WORKAROUND(_MSC_VER, >= 1200) # pragma once #endif namespace boost { namespace logic { /// INTERNAL ONLY namespace detail { /** * INTERNAL ONLY * * \brief A type used only to uniquely identify the 'indeterminate' * function/keyword. */ struct indeterminate_t { #if BOOST_WORKAROUND(__BORLANDC__, < 0x0600) char dummy_; // BCB would use 8 bytes by default #endif }; } // end namespace detail /** * INTERNAL ONLY * The type of the 'indeterminate' keyword. This has the same type as the * function 'indeterminate' so that we can recognize when the keyword is * used. */ typedef bool (*indeterminate_keyword_t)(tribool, detail::indeterminate_t); /** * \brief Keyword and test function for the indeterminate tribool value * * The \c indeterminate function has a dual role. It's first role is * as a unary function that tells whether the tribool value is in the * "indeterminate" state. It's second role is as a keyword * representing the indeterminate (just like "true" and "false" * represent the true and false states). If you do not like the name * "indeterminate", and would prefer to use a different name, see the * macro \c BOOST_TRIBOOL_THIRD_STATE. * * \returns
x.value == tribool::indeterminate_value
* \throws nothrow */ inline bool indeterminate(tribool x, detail::indeterminate_t dummy = detail::indeterminate_t()); /** * \brief A 3-state boolean type. * * 3-state boolean values are either true, false, or * indeterminate. */ class tribool { private: /// INTERNAL ONLY struct dummy { void nonnull() {}; }; typedef void (dummy::*safe_bool)(); public: /** * Construct a new 3-state boolean value with the value 'false'. * * \throws nothrow */ tribool() : value(false_value) {} /** * Construct a new 3-state boolean value with the given boolean * value, which may be \c true or \c false. * * \throws nothrow */ tribool(bool value) : value(value? true_value : false_value) {} /** * Construct a new 3-state boolean value with an indeterminate value. * * \throws nothrow */ tribool(indeterminate_keyword_t) : value(indeterminate_value) {} /** * Use a 3-state boolean in a boolean context. Will evaluate true in a * boolean context only when the 3-state boolean is definitely true. * * \returns true if the 3-state boolean is true, false otherwise * \throws nothrow */ operator safe_bool() const { return value == true_value? &dummy::nonnull : 0; } /** * The actual stored value in this 3-state boolean, which may be false, true, * or indeterminate. */ enum value_t { false_value, true_value, indeterminate_value } value; }; // Check if the given tribool has an indeterminate value. Also doubles as a // keyword for the 'indeterminate' value inline bool indeterminate(tribool x, detail::indeterminate_t) { return x.value == tribool::indeterminate_value; } /** @defgroup logical Logical operations */ //@{ /** * \brief Computes the logical negation of a tribool * * \returns the logical negation of the tribool, according to the * table: *
*
*
!
*
*
*
*
false
*
true
*
*
*
true
*
false
*
*
*
indeterminate
*
indeterminate
*
*
* \throws nothrow */ inline tribool operator!(tribool x) { return x.value == tribool::false_value? tribool(true) :x.value == tribool::true_value? tribool(false) :tribool(indeterminate); } /** * \brief Computes the logical conjuction of two tribools * * \returns the result of logically ANDing the two tribool values, * according to the following table: *
*
*
&&
*
false
*
true
*
indeterminate
*
*
*
false
*
false
*
false
*
false
*
*
*
true
*
false
*
true
*
indeterminate
*
*
*
indeterminate
*
false
*
indeterminate
*
indeterminate
*
*
* \throws nothrow */ inline tribool operator&&(tribool x, tribool y) { if (static_cast
(!x) || static_cast
(!y)) return false; else if (static_cast
(x) && static_cast
(y)) return true; else return indeterminate; } /** * \overload */ inline tribool operator&&(tribool x, bool y) { return y? x : tribool(false); } /** * \overload */ inline tribool operator&&(bool x, tribool y) { return x? y : tribool(false); } /** * \overload */ inline tribool operator&&(indeterminate_keyword_t, tribool x) { return !x? tribool(false) : tribool(indeterminate); } /** * \overload */ inline tribool operator&&(tribool x, indeterminate_keyword_t) { return !x? tribool(false) : tribool(indeterminate); } /** * \brief Computes the logical disjunction of two tribools * * \returns the result of logically ORing the two tribool values, * according to the following table: *
*
*
||
*
false
*
true
*
indeterminate
*
*
*
false
*
false
*
true
*
indeterminate
*
*
*
true
*
true
*
true
*
true
*
*
*
indeterminate
*
indeterminate
*
true
*
indeterminate
*
*
* \throws nothrow */ inline tribool operator||(tribool x, tribool y) { if (static_cast
(!x) && static_cast
(!y)) return false; else if (static_cast
(x) || static_cast
(y)) return true; else return indeterminate; } /** * \overload */ inline tribool operator||(tribool x, bool y) { return y? tribool(true) : x; } /** * \overload */ inline tribool operator||(bool x, tribool y) { return x? tribool(true) : y; } /** * \overload */ inline tribool operator||(indeterminate_keyword_t, tribool x) { return x? tribool(true) : tribool(indeterminate); } /** * \overload */ inline tribool operator||(tribool x, indeterminate_keyword_t) { return x? tribool(true) : tribool(indeterminate); } //@} /** * \brief Compare tribools for equality * * \returns the result of comparing two tribool values, according to * the following table: *
*
*
==
*
false
*
true
*
indeterminate
*
*
*
false
*
true
*
false
*
indeterminate
*
*
*
true
*
false
*
true
*
indeterminate
*
*
*
indeterminate
*
indeterminate
*
indeterminate
*
indeterminate
*
*
* \throws nothrow */ inline tribool operator==(tribool x, tribool y) { if (indeterminate(x) || indeterminate(y)) return indeterminate; else return (x && y) || (!x && !y); } /** * \overload */ inline tribool operator==(tribool x, bool y) { return x == tribool(y); } /** * \overload */ inline tribool operator==(bool x, tribool y) { return tribool(x) == y; } /** * \overload */ inline tribool operator==(indeterminate_keyword_t, tribool x) { return tribool(indeterminate) == x; } /** * \overload */ inline tribool operator==(tribool x, indeterminate_keyword_t) { return tribool(indeterminate) == x; } /** * \brief Compare tribools for inequality * * \returns the result of comparing two tribool values for inequality, * according to the following table: *
*
*
!=
*
false
*
true
*
indeterminate
*
*
*
false
*
false
*
true
*
indeterminate
*
*
*
true
*
true
*
false
*
indeterminate
*
*
*
indeterminate
*
indeterminate
*
indeterminate
*
indeterminate
*
*
* \throws nothrow */ inline tribool operator!=(tribool x, tribool y) { if (indeterminate(x) || indeterminate(y)) return indeterminate; else return !((x && y) || (!x && !y)); } /** * \overload */ inline tribool operator!=(tribool x, bool y) { return x != tribool(y); } /** * \overload */ inline tribool operator!=(bool x, tribool y) { return tribool(x) != y; } /** * \overload */ inline tribool operator!=(indeterminate_keyword_t, tribool x) { return tribool(indeterminate) != x; } /** * \overload */ inline tribool operator!=(tribool x, indeterminate_keyword_t) { return x != tribool(indeterminate); } } } // end namespace boost::logic // Pull tribool and indeterminate into namespace "boost" namespace boost { using logic::tribool; using logic::indeterminate; } /** * \brief Declare a new name for the third state of a tribool * * Use this macro to declare a new name for the third state of a * tribool. This state can have any number of new names (in addition * to \c indeterminate), all of which will be equivalent. The new name will be * placed in the namespace in which the macro is expanded. * * Example: * BOOST_TRIBOOL_THIRD_STATE(true_or_false) * * tribool x(true_or_false); * // potentially set x * if (true_or_false(x)) { * // don't know what x is * } */ #define BOOST_TRIBOOL_THIRD_STATE(Name) \ inline bool \ Name(boost::logic::tribool x, \ boost::logic::detail::indeterminate_t dummy = \ boost::logic::detail::indeterminate_t()) \ { return x.value == boost::logic::tribool::indeterminate_value; } #endif // BOOST_LOGIC_TRIBOOL_HPP
tribool.hpp
Page URL
File URL
Prev 1/3
Next
Download
( 12 KB )
Note: The DriveHQ service banners will NOT be displayed if the file owner is a paid member.
Comments
Total ratings:
0
Average rating:
Not Rated
Would you like to comment?
Join DriveHQ
for a free account, or
Logon
if you are already a member.