---
name: "SoBoolOperation"
section: "3"
platform: "linux"
package: "coin"
version: "1:4.0.10-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/SoBoolOperation"
---

# SoBoolOperation(3)

The SoBoolOperation engine evaluates expressions of boolean logic.

## NAME

SoBoolOperation - The **SoBoolOperation** engine evaluates expressions of boolean logic.

## SYNOPSIS

\#include \<Inventor/engines/SoBoolOperation.h\>

Inherits **SoEngine**.

### Public Types

enum **Operation** { **CLEAR**, **SET**, **A**, **NOT\_A**, **B**, **NOT\_B**, **A\_OR\_B**, **NOT\_A\_OR\_B**, **A\_OR\_NOT\_B**, **NOT\_A\_OR\_NOT\_B**, **A\_AND\_B**, **NOT\_A\_AND\_B**, **A\_AND\_NOT\_B**, **NOT\_A\_AND\_NOT\_B**, **A\_EQUALS\_B**, **A\_NOT\_EQUALS\_B** }\

### Public Member Functions

virtual **SoType** **getTypeId** (void) const\
 virtual const **SoFieldData** \* **getFieldData** (void) const\
 virtual const **SoEngineOutputData** \* **getOutputData** (void) const\
 **SoBoolOperation** ()\

Public Member Functions inherited from **SoEngine** void **evaluateWrapper** (void)\
 virtual int **getOutputs** (**SoEngineOutputList** &l) const\
 **SoEngineOutput** \* **getOutput** (const **SbName** &outputname) const\
 SbBool **getOutputName** (const **SoEngineOutput** \*output, **SbName** &outputname) const\
 SbBool **isNotifying** (void) const\
 virtual void **notify** (**SoNotList** \*nl)\
 **SoEngine** \* **copy** (void) const\
 virtual **SoFieldContainer** \* **copyThroughConnection** (void) const\
 SbBool **shouldCopy** (void) const\
 virtual void **writeInstance** (**SoOutput** \*out)\

Public Member Functions inherited from **SoFieldContainer** void **setToDefaults** (void)\
 SbBool **hasDefaultValues** (void) const\
 SbBool **fieldsAreEqual** (const **SoFieldContainer** \*container) const\
 void **copyFieldValues** (const **SoFieldContainer** \*container, SbBool copyconnections=FALSE)\
 SbBool **set** (const char \*const fielddata)\
 void **get** (**SbString** &fielddata)\
 virtual int **getFields** (**SoFieldList** &l) const\
 virtual int **getAllFields** (**SoFieldList** &l) const\
 virtual **SoField** \* **getField** (const **SbName** &name) const\
 virtual **SoField** \* **getEventIn** (const **SbName** &name) const\
 virtual **SoField** \* **getEventOut** (const **SbName** &name) const\
 SbBool **getFieldName** (const **SoField** \*const field, **SbName** &name) const\
 SbBool **enableNotify** (const SbBool flag)\
 SbBool **isNotifyEnabled** (void) const\
 SbBool **set** (const char \*fielddata, **SoInput** \*input)\
 void **get** (**SbString** &fielddata, **SoOutput** \*out)\
 virtual SbBool **validateNewFieldValue** (**SoField** \*field, void \*newval)\
 virtual void **addWriteReference** (**SoOutput** \*out, SbBool isfromfield=FALSE)\
 SbBool **getIsBuiltIn** (void) const\
 virtual void **copyContents** (const **SoFieldContainer** \*from, SbBool copyconnections)\
 virtual void **getFieldsMemorySize** (size\_t &managed, size\_t &unmanaged) const\
 void **setUserData** (void \*userdata) const\
 void \* **getUserData** (void) const\

Public Member Functions inherited from **SoBase** void **ref** (void) const\
 void **unref** (void) const\
 void **unrefNoDelete** (void) const\
 int32\_t **getRefCount** (void) const\
 void **touch** (void)\
 SbBool **isOfType** (**SoType** type) const\
 Returns TRUE if the type of this object is either of the same type or inherited from *type*.  virtual **SbName** **getName** (void) const\
 virtual void **setName** (const **SbName** &newname)\
 virtual void **startNotify** (void)\
 void **addAuditor** (void \*const auditor, const **SoNotRec::Type** type)\
 void **removeAuditor** (void \*const auditor, const **SoNotRec::Type** type)\
 const **SoAuditorList** & **getAuditors** (void) const\
 SbBool **shouldWrite** (void)\
 void **assertAlive** (void) const\

### Static Public Member Functions

static **SoType** **getClassTypeId** (void)\
 static void \* **createInstance** (void)\
 static void **initClass** ()\
 Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.

Static Public Member Functions inherited from **SoEngine** static void **initClass** (void)\
 Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.     static void **initClasses** (void)\
 static **SoType** **getClassTypeId** (void)\
 This static method returns the **SoType** object associated with objects of this class.     static **SoEngine** \* **getByName** (const **SbName** &name)\
 static int **getByName** (const **SbName** &name, **SoEngineList** &el)\

Static Public Member Functions inherited from **SoFieldContainer** static void **initClass** (void)\
 Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.     static **SoType** **getClassTypeId** (void)\
 This static method returns the **SoType** object associated with objects of this class.     static void **cleanupClass** (void)\
 static void **initCopyDict** (void)\
 static void **addCopy** (const **SoFieldContainer** \*orig, const **SoFieldContainer** \*copy)\
 static **SoFieldContainer** \* **checkCopy** (const **SoFieldContainer** \*orig)\
 static **SoFieldContainer** \* **findCopy** (const **SoFieldContainer** \*orig, const SbBool copyconnections)\
 static void **copyDone** (void)\

Static Public Member Functions inherited from **SoBase** static void **initClass** (void)\
 Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.  static **SoType** **getClassTypeId** (void)\
 This static method returns the **SoType** object associated with objects of this class.  static void **addName** (**SoBase** \*const base, const char \*const name)\
 static void **removeName** (**SoBase** \*const base, const char \*const name)\
 static void **incrementCurrentWriteCounter** (void)\
 static void **decrementCurrentWriteCounter** (void)\
 static **SoBase** \* **getNamedBase** (const **SbName** &name, **SoType** type)\
 static int **getNamedBases** (const **SbName** &name, **SoBaseList** &baselist, **SoType** type)\
 static SbBool **read** (**SoInput** \*input, **SoBase** \*&base, **SoType** expectedtype)\
 static void **setInstancePrefix** (const **SbString** &c)\
 static void **setTraceRefs** (SbBool trace)\
 static SbBool **getTraceRefs** (void)\
 static SbBool **connectRoute** (**SoInput** \*input, const **SbName** &fromnodename, const **SbName** &fromfieldname, const **SbName** &tonodename, const **SbName** &tofieldname)\
 static SbBool **readRoute** (**SoInput** \*input)\

### Public Attributes

**SoMFBool** **a**\
 **SoMFBool** **b**\
 **SoMFEnum** **operation**\
 **SoEngineOutput** **output**\
 **SoEngineOutput** **inverse**\

### Protected Member Functions

virtual **~SoBoolOperation** (void)\

Protected Member Functions inherited from **SoEngine** **SoEngine** (void)\
 virtual **~SoEngine** (void)\
 virtual SbBool **readInstance** (**SoInput** \*in, unsigned short flags)\
 virtual void **inputChanged** (**SoField** \*which)\
 void **writeOutputTypes** (**SoOutput** \*out)\

Protected Member Functions inherited from **SoFieldContainer** **SoFieldContainer** (void)\
 virtual **~SoFieldContainer** ()\

Protected Member Functions inherited from **SoBase** **SoBase** (void)\
 virtual **~SoBase** ()\
 SbBool **hasMultipleWriteRefs** (void) const\
 SbBool **writeHeader** (**SoOutput** \*out, SbBool isgroup, SbBool isengine) const\
 void **writeFooter** (**SoOutput** \*out) const\
 virtual const char \* **getFileFormatName** (void) const\
 virtual **SoNotRec** **createNotRec** (void)\

### Static Protected Member Functions

static const **SoFieldData** \*\* **getInputDataPtr** (void)\
 static const **SoEngineOutputData** \*\* **getOutputDataPtr** (void)\

Static Protected Member Functions inherited from **SoEngine** static const **SoFieldData** \*\* **getInputDataPtr** (void)\
 static const **SoEngineOutputData** \*\* **getOutputDataPtr** (void)\

Static Protected Member Functions inherited from **SoBase** static uint32\_t **getCurrentWriteCounter** (void)\
 static void **staticDataLock** (void)\
 static void **staticDataUnlock** (void)\

### Additional Inherited Members

Protected Types inherited from **SoBase** enum **BaseFlags** { **IS\_ENGINE** = 0x01, **IS\_GROUP** = 0x02 }\

Protected Attributes inherited from **SoFieldContainer** SbBool **isBuiltIn**\

## Detailed Description

The **SoBoolOperation** engine evaluates expressions of boolean logic.

The multivalue fields **SoBoolOperation::a** and **SoBoolOperation::b** are combined according to the operations set in **SoBoolOperation::operation**, with the resulting TRUE or FALSE value set on **SoBoolOperation::output**.

## Member Enumeration Documentation

### enum SoBoolOperation::Operation

Enumeration of available boolean logic operators.

**Enumerator**

- ***CLEAR***

  Always set **SoBoolOperation::output** to FALSE, no matter the input values.

- ***SET***

  Always set **SoBoolOperation::output** to TRUE, no matter the input values.

- ***A***

  Output result = **SoBoolOperation::a**

- ***NOT\_A***

  Output result = ! **SoBoolOperation::a**

- ***B***

  Output result = **SoBoolOperation::b**

- ***NOT\_B***

  Output result = ! **SoBoolOperation::b**

- ***A\_OR\_B***

  r = a \|\| b

- ***NOT\_A\_OR\_B***

  r = !a \|\| b

- ***A\_OR\_NOT\_B***

  r = a \|\| !b

- ***NOT\_A\_OR\_NOT\_B***

  r = !a \|\| !b

- ***A\_AND\_B***

  r = a && b

- ***NOT\_A\_AND\_B***

  r = !a && b

- ***A\_AND\_NOT\_B***

  r = a && !b

- ***NOT\_A\_AND\_NOT\_B***

  r = !a && !b

- ***A\_EQUALS\_B***

  r = a==b

- ***A\_NOT\_EQUALS\_B***

  r = ! a==b

## Constructor & Destructor Documentation

### SoBoolOperation::SoBoolOperation (void )

Default constructor.

### SoBoolOperation::~SoBoolOperation (void ) \[protected\], \[virtual\]

Destructor.

## Member Function Documentation

### SoType SoBoolOperation::getClassTypeId (void ) \[static\]

This static method returns the **SoType** object associated with objects of this class.

### SoType SoBoolOperation::getTypeId (void ) const \[virtual\]

Returns the type identification of an object derived from a class inheriting **SoBase**. This is used for runtime type checking and "downward" casting.

Implements **SoBase**.

### const SoFieldData \*\* SoBoolOperation::getInputDataPtr (void ) \[static\], \[protected\]

Returns the **SoFieldData** class which holds information about inputs in this engine.

### const SoEngineOutputData \*\* SoBoolOperation::getOutputDataPtr (void ) \[static\], \[protected\]

Returns the **SoEngineOutputData** class which holds information about the outputs in this engine.

### const SoFieldData \* SoBoolOperation::getFieldData (void ) const \[virtual\]

Returns the **SoFieldData** class which holds information about inputs in this engine.

Reimplemented from **SoFieldContainer**.

### const SoEngineOutputData \* SoBoolOperation::getOutputData (void ) const \[virtual\]

Returns the **SoEngineOutputData** class which holds information about the outputs in this engine.

Implements **SoEngine**.

### void \* SoBoolOperation::createInstance (void ) \[static\]

Creates a new instance of the class type corresponding to the **SoType** object.

## Member Data Documentation

### SoMFBool SoBoolOperation::a

First set of boolean input "signal" values.

### SoMFBool SoBoolOperation::b

Second set of boolean input "signal" values.

### SoMFEnum SoBoolOperation::operation

Set of boolean logic expressions. Each of these are used to combine **SoBoolOperation::a** with **SoBoolOperation::b** (for each index value from 0 to the last value) to produce the results on the **SoBoolOperation::output** field.

### SoEngineOutput SoBoolOperation::output

(**SoMFBool**) The result of each (a\[i\] operation\[i\] b\[i\]) expression.

### SoEngineOutput SoBoolOperation::inverse

(**SoMFBool**) The set of inverse results.

## Author

Generated automatically by Doxygen for Coin from the source code.
