---
name: "SoSFEnum"
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/SoSFEnum"
---

# SoSFEnum(3)

The SoSFEnum class is a container for an enum value.

## NAME

SoSFEnum - The **SoSFEnum** class is a container for an enum value.

## SYNOPSIS

\#include \<Inventor/fields/SoSFEnum.h\>

Inherits **SoSField**.

Inherited by **SoSFBitMask**.

### Public Member Functions

virtual **SoType** **getTypeId** (void) const\
 virtual void **copyFrom** (const **SoField** &field)\
 const **SoSFEnum** & **operator=** (const **SoSFEnum** &field)\
 virtual SbBool **isSame** (const **SoField** &field) const\
 int **getValue** (void) const\
 void **setValue** (int newvalue)\
 int **operator=** (int newvalue)\
 int **operator==** (const **SoSFEnum** &field) const\
 int **operator!=** (const **SoSFEnum** &field) const\
 void **setValue** (const **SbName** name)\
 void **setEnums** (const int num, const int \*vals, const **SbName** \*names)\
 int **getNumEnums** (void) const\
 int **getEnum** (const int idx, **SbName** &name) const\

Public Member Functions inherited from **SoSField** virtual **~SoSField** ()\

Public Member Functions inherited from **SoField** virtual **~SoField** ()\
 void **setIgnored** (SbBool ignore)\
 SbBool **isIgnored** (void) const\
 void **setDefault** (SbBool defaultVal)\
 SbBool **isDefault** (void) const\
 SbBool **isOfType** (const **SoType** type) const\
 void **enableConnection** (SbBool flag)\
 SbBool **isConnectionEnabled** (void) const\
 SbBool **connectFrom** (**SoEngineOutput** \*master, SbBool notnotify=FALSE, SbBool append=FALSE)\
 SbBool **appendConnection** (**SoEngineOutput** \*master, SbBool notnotify=FALSE)\
 void **disconnect** (**SoEngineOutput** \*engineoutput)\
 SbBool **isConnectedFromEngine** (void) const\
 SbBool **getConnectedEngine** (**SoEngineOutput** \*&master) const\
 SbBool **connectFrom** (**SoField** \*master, SbBool notnotify=FALSE, SbBool append=FALSE)\
 SbBool **appendConnection** (**SoField** \*master, SbBool notnotify=FALSE)\
 void **disconnect** (**SoField** \*field)\
 SbBool **isConnectedFromField** (void) const\
 SbBool **getConnectedField** (**SoField** \*&master) const\
 int **getNumConnections** (void) const\
 int **getForwardConnections** (**SoFieldList** &slavelist) const\
 int **getConnections** (**SoFieldList** &masterlist) const\
 void **disconnect** (void)\
 SbBool **isConnected** (void) const\
 void **setContainer** (**SoFieldContainer** \*cont)\
 **SoFieldContainer** \* **getContainer** (void) const\
 SbBool **set** (const char \*valuestring)\
 void **get** (**SbString** &valuestring)\
 SbBool **shouldWrite** (void) const\
 virtual void **touch** (void)\
 virtual void **startNotify** (void)\
 virtual void **notify** (**SoNotList** \*nlist)\
 SbBool **enableNotify** (SbBool on)\
 SbBool **isNotifyEnabled** (void) const\
 void **addAuditor** (void \*f, **SoNotRec::Type** type)\
 void **removeAuditor** (void \*f, **SoNotRec::Type** type)\
 int **operator==** (const **SoField** &f) const\
 int **operator!=** (const **SoField** &f) const\
 virtual void **connectionStatusChanged** (int numconnections)\
 SbBool **isReadOnly** (void) const\
 virtual void **fixCopy** (SbBool copyconnections)\
 virtual SbBool **referencesCopy** (void) const\
 void **copyConnection** (const **SoField** \*fromfield)\
 virtual SbBool **read** (**SoInput** \*input, const **SbName** &name)\
 virtual void **write** (**SoOutput** \*out, const **SbName** &name) const\
 virtual void **countWriteRefs** (**SoOutput** \*out) const\
 void **setFieldType** (int type)\
 int **getFieldType** (void) const\
 SbBool **getDirty** (void) const\
 void **setDirty** (SbBool dirty)\
 void **evaluate** (void) const\

### Static Public Member Functions

static void \* **createInstance** (void)\
 static **SoType** **getClassTypeId** (void)\
 static void **initClass** (void)\

Static Public Member Functions inherited from **SoSField** static void **initClass** (void)\
 static **SoType** **getClassTypeId** (void)\
 static void **atexit\_cleanup** (void)\

Static Public Member Functions inherited from **SoField** static void **initClass** (void)\
 static void **initClasses** (void)\
 static void **cleanupClass** (void)\
 static **SoType** **getClassTypeId** (void)\

### Protected Member Functions

virtual SbBool **findEnumValue** (const **SbName** &name, int &val)\
 virtual SbBool **findEnumName** (int value, const **SbName** \*&name) const\

Protected Member Functions inherited from **SoSField** **SoSField** (void)\

Protected Member Functions inherited from **SoField** **SoField** (void)\
 void **valueChanged** (SbBool resetdefault=TRUE)\
 virtual void **evaluateConnection** (void) const\
 virtual SbBool **readConnection** (**SoInput** \*in)\
 virtual void **writeConnection** (**SoOutput** \*out) const\
 SbBool **isDestructing** (void) const\
 virtual **SoNotRec** **createNotRec** (**SoBase** \*cont)\

### Protected Attributes

int **value**\
 int **numEnums**\
 int \* **enumValues**\
 **SbName** \* **enumNames**\
 SbBool **legalValuesSet**\

### Additional Inherited Members

Public Types inherited from **SoField** enum **FieldType** { **NORMAL\_FIELD** = 0, **EVENTIN\_FIELD**, **EVENTOUT\_FIELD**, **EXPOSED\_FIELD** }\

## Detailed Description

The **SoSFEnum** class is a container for an enum value.

This field is used where nodes, engines or other field containers needs to store one particular value out of an enumerated set.

A field of this type stores its value to file as the symbolic name, rather than the actual integer value.

**SoSFEnum** instances are initialized on an instance basis, usually in the constructor of the field container with the macros **SO\_NODE\_DEFINE\_ENUM\_VALUE(enumtype, symbolvalue)** and SO\_NODE\_SET\_SF\_ENUM\_TYPE(enumfield, enumtype) for nodes, or for engines; SO\_ENGINE\_DEFINE\_ENUM\_VALUE() and SO\_ENGINE\_SET\_SF\_ENUM\_TYPE().

Example initialization from the constructor of the **SoCone** class:

```
SO_NODE_DEFINE_ENUM_VALUE(Part, SIDES);
SO_NODE_DEFINE_ENUM_VALUE(Part, BOTTOM);
SO_NODE_DEFINE_ENUM_VALUE(Part, ALL);
SO_NODE_SET_SF_ENUM_TYPE(parts, Part);
```

**See also**

**SoMFEnum**, **SoSFBitMask**

## Member Function Documentation

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

*This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.*\

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

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

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

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

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

Implements **SoField**.

Reimplemented in **SoSFBitMask**.

### void SoSFEnum::copyFrom (const SoField & f) \[virtual\]

Copy value(s) from *f* into this field. *f* must be of the same type as this field.

Implements **SoField**.

Reimplemented in **SoSFBitMask**.

### SbBool SoSFEnum::isSame (const SoField & f) const \[virtual\]

Check for equal type and value(s).

Implements **SoField**.

Reimplemented in **SoSFBitMask**.

### void SoSFEnum::initClass (void ) \[static\]

Internal method called upon initialization of the library (from **SoDB::init()**) to set up the type system.

### void SoSFEnum::setValue (const SbName name)

Set the value of this field by specifying an enumeration string value.

### void SoSFEnum::setEnums (const int num, const int \* vals, const SbName \* names)

Makes a set of *num* enumeration *names* map to integer values, given by *vals*.

### int SoSFEnum::getNumEnums (void ) const

Returns the number of enum names the **SoSFEnum** object understands.

Note that this API method is not part of the original SGI Inventor 2.1 API, and is an extension specific to Coin.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.\

**Since**

Coin 2.0

### int SoSFEnum::getEnum (const int idx, SbName & name) const

Returns the value of the Nth enum this **SoSFEnum** object understands, and mutates *name* to contain the Nth enum's name.

Note that this API method is not part of the original SGI Inventor 2.1 API, and is an extension specific to Coin.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.\

**Since**

Coin 2.0

### SbBool SoSFEnum::findEnumValue (const SbName & name, int & val) \[protected\], \[virtual\]

Return in *val* the enumeration value which matches the given enumeration *name*.

Returns TRUE if *name* is a valid enumeration string, otherwise FALSE.

### SbBool SoSFEnum::findEnumName (int valuearg, const SbName \*& name) const \[protected\], \[virtual\]

Set the enumeration *name* which matches the given enumeration value.

Returns TRUE if *value* is a valid enumeration value, otherwise FALSE.

## Member Data Documentation

### int SoSFEnum::numEnums \[protected\]

Number of enumeration mappings.

### int\* SoSFEnum::enumValues \[protected\]

Array of enumeration values. Maps 1-to-1 with the enumNames.

### SbName\* SoSFEnum::enumNames \[protected\]

Array of enumeration names. Maps 1-to-1 with the enumValues.

### SbBool SoSFEnum::legalValuesSet \[protected\]

Is TRUE if a set of enum name-to-value mappings has been set.

## Author

Generated automatically by Doxygen for Coin from the source code.
