kexi

tristate Class Reference

#include <tristate.h>

List of all members.


Detailed Description

3-state logical type with three values: true, false and cancelled and convenient operators.

cancelled state can be also called dontKnow, it behaves as null in SQL. A main goal of this class is to improve readibility when there's a need for storing third, cancelled, state, especially in case C++ exceptions are not in use. With it, developer can forget about declaring a specific enum type having just three values: true, false, cancelled.

Objects of this class can be used with similar convenience as standard bool type:

  • use as return value when 'cancelled'
       tristate doSomething();
    
  • convert from bool (1) or to bool (2)
       tristate t = true; //(1)
       setVisible(t);   //(2)
    
  • clear comparisons
       tristate t = doSomething();
       if (t) doSomethingIfTrue();
       if (!t) doSomethingIfFalse();
       if (~t) doSomethingIfCancelled();
    

"! ~" can be used as "not cancelled".

With tristate class, developer can also forget about it's additional meaning and treat it just as a bool, if the third state is irrelevant to the current situation.

Other use for tristate class could be to allow cancellation within a callback function or a Qt slot. Example:

 public slots:
   void validateData(tristate& result);
Having the single parameter, signals and slots have still simple look. Developers can alter their code (by replacing 'bool& result' with 'tristate& result') in case when a possibility of cancelling of, say, data provessing needs to be implemented. Let's say validateData() function uses a QDialog to get some validation from a user. While QDialog::Rejected is returned after cancellation of the validation process, the information about cancellation needs to be transferred up to a higher level of the program. Storing values of type QDialog::DialogCode there could be found as unreadable, and casting these to int is not typesafe. With tristate class it's easier to make it obvious that cancellation should be taken into account.

Author:
Jaroslaw Staniek

Definition at line 97 of file tristate.h.


Public Member Functions

 tristate ()
 tristate (bool boolValue)
 tristate (char c)
 tristate (int intValue)
 operator bool () const
bool operator! () const
bool operator~ () const
tristateoperator= (const tristate &tsValue)

Friends

bool operator!= (bool boolValue, tristate tsValue)
bool operator!= (tristate tsValue, bool boolValue)

Constructor & Destructor Documentation

tristate::tristate  )  [inline]
 

Default constructor, object has cancelled value set.

Definition at line 103 of file tristate.h.

tristate::tristate bool  boolValue  )  [inline]
 

Constructor accepting a boolean value.

Definition at line 111 of file tristate.h.

tristate::tristate char  c  )  [inline]
 

Constructor accepting a char value.

It is converted in the following way:

  • 2 -> cancelled
  • 1 -> true
  • other -> false

Definition at line 123 of file tristate.h.

tristate::tristate int  intValue  )  [inline]
 

Constructor accepting an integer value.

It is converted in the following way:

  • 2 -> cancelled
  • 1 -> true
  • other -> false

Definition at line 134 of file tristate.h.


Member Function Documentation

tristate::operator bool  )  const [inline]
 

Casting to bool type: true is only returned if the original tristate value is equal to true.

Definition at line 143 of file tristate.h.

bool tristate::operator!  )  const [inline]
 

Casting to bool type with negation: true is only returned if the original tristate value is equal to false.

Definition at line 149 of file tristate.h.

bool tristate::operator~  )  const [inline]
 

Special casting to bool type: true is only returned if the original tristate value is equal to cancelled.

Definition at line 155 of file tristate.h.


Friends And Related Function Documentation

bool operator!= tristate  tsValue,
bool  boolValue
[friend]
 

Inequality operator comparing a tristate value tsValue and a bool value boolValue.

See also:
bool operator!=(bool boolValue, tristate tsValue)

Definition at line 196 of file tristate.h.

bool operator!= bool  boolValue,
tristate  tsValue
[friend]
 

Inequality operator comparing a bool value boolValue and a tristate value tsValue.

Returns:
false if both boolValue and tsValue are true or if both boolValue and tsValue are false. Else, returns true.

Definition at line 186 of file tristate.h.


The documentation for this class was generated from the following file:
KDE Home | KDE Accessibility Home | Description of Access Keys