Search for usage in LXR

tristate Class Reference

#include <KDbTristate.h>

Public Member Functions

 tristate ()
 tristate (bool boolValue)
 tristate (tristate_cancelled_t)
bool operator! () const
tristateoperator= (bool boolValue)
tristateoperator= (tristate tsValue)
tristateoperator= (tristate_cancelled_t)
bool operator~ () const
QString toString () const

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();
    3-state logical type with three values: true, false and cancelled and convenient operators.
  • 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 Q_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 canceling 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.

Definition at line 100 of file KDbTristate.h.

Constructor & Destructor Documentation

◆ tristate() [1/3]

tristate::tristate ( )

Default constructor, object has cancelled value set.

Definition at line 106 of file KDbTristate.h.

◆ tristate() [2/3]

tristate::tristate ( bool boolValue)

Constructor accepting a boolean value.

Definition at line 113 of file KDbTristate.h.

◆ tristate() [3/3]

tristate::tristate ( tristate_cancelled_t )

Constructor accepting a char value.

It is converted in the following way:

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

Definition at line 124 of file KDbTristate.h.

Member Function Documentation

◆ operator!()

bool tristate::operator! ( ) const

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

Definition at line 132 of file KDbTristate.h.

◆ operator=() [1/3]

tristate & tristate::operator= ( bool boolValue)

Definition at line 209 of file KDbTristate.h.

◆ operator=() [2/3]

tristate & tristate::operator= ( tristate tsValue)

Definition at line 203 of file KDbTristate.h.

◆ operator=() [3/3]

tristate & tristate::operator= ( tristate_cancelled_t )

Definition at line 215 of file KDbTristate.h.

◆ operator~()

bool tristate::operator~ ( ) const

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

Definition at line 140 of file KDbTristate.h.

◆ toString()

QString tristate::toString ( ) const
text representation of the value: "true", "false" or "cancelled".

Definition at line 179 of file KDbTristate.h.

The documentation for this class was generated from the following file:
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Fri May 17 2024 11:56:03 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.