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

# SoMFNode(3)

The SoMFNode class is a container for nodes.

## NAME

SoMFNode - The **SoMFNode** class is a container for nodes.

## SYNOPSIS

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

Inherits **SoMField**.

### Public Member Functions

virtual **SoType** **getTypeId** (void) const\
 virtual void **copyFrom** (const **SoField** &field)\
 const **SoMFNode** & **operator=** (const **SoMFNode** &field)\
 virtual SbBool **isSame** (const **SoField** &field) const\
 **SoNode** \* **operator\[\]** (const int idx) const\
 const **SoNode** \*\* **getValues** (const int start) const\
 int **find** (**SoNode** \*value, SbBool addifnotfound=FALSE)\
 void **setValues** (const int start, const int **num**, const **SoNode** \*\*newvals)\
 void **set1Value** (const int idx, **SoNode** \*value)\
 void **setValue** (**SoNode** \*value)\
 **SoNode** \* **operator=** (**SoNode** \*val)\
 SbBool **operator==** (const **SoMFNode** &field) const\
 SbBool **operator!=** (const **SoMFNode** &field) const\
 **SoNode** \*\* **startEditing** (void)\
 void **finishEditing** (void)\
 virtual void **fixCopy** (SbBool copyconnections)\
 virtual SbBool **referencesCopy** (void) const\
 void **addNode** (**SoNode** \*node)\
 void **insertNode** (**SoNode** \*node, int idx)\
 **SoNode** \* **getNode** (int idx) const\
 int **findNode** (const **SoNode** \*node) const\
 int **getNumNodes** (void) const\
 void **removeNode** (int index)\
 void **removeNode** (**SoNode** \*node)\
 void **removeAllNodes** (void)\
 void **replaceNode** (int idx, **SoNode** \*newnode)\
 void **replaceNode** (**SoNode** \*oldnode, **SoNode** \*newnode)\
 virtual void **deleteValues** (int start, int **num**=-1)\
 virtual void **insertSpace** (int start, int **num**)\

Public Member Functions inherited from **SoMField** virtual **~SoMField** ()\
 int **getNum** (void) const\
 void **setNum** (const int **num**)\
 SbBool **set1** (const int index, const char \*const valuestring)\
 void **get1** (const int index, **SbString** &valuestring)\
 virtual void **enableDeleteValues** (void)\
 virtual SbBool **isDeleteValuesEnabled** (void) const\

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\
 void **copyConnection** (const **SoField** \*fromfield)\
 virtual SbBool **read** (**SoInput** \*input, const **SbName** &name)\
 virtual void **write** (**SoOutput** \*out, const **SbName** &name) 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 **SoMField** static **SoType** **getClassTypeId** (void)\
 static void **atexit\_cleanup** (void)\
 static void **initClass** (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 void **deleteAllValues** (void)\
 virtual void **copyValue** (int to, int from)\
 virtual int **fieldSizeof** (void) const\
 virtual void \* **valuesPtr** (void)\
 virtual void **setValuesPtr** (void \*ptr)\
 virtual void **allocValues** (int **num**)\

Protected Member Functions inherited from **SoMField** **SoMField** (void)\
 virtual void **makeRoom** (int newnum)\
 virtual **SoNotRec** **createNotRec** (**SoBase** \*container)\
 void **setChangedIndex** (const int chgidx)\
 void **setChangedIndices** (const int chgidx=-1, const int numchgind=0)\

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\

### Protected Attributes

**SoNode** \*\* **values**\

Protected Attributes inherited from **SoMField** int **num**\
 int **maxNum**\
 SbBool **userDataIsUsed**\

### Additional Inherited Members

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

## Detailed Description

The **SoMFNode** class is a container for nodes.

This field container stores an array of pointers to nodes. It takes care of the necessary functionality for handling copy, import and export operations.

Note that node pointers stored in field instances of this type may be NULL pointers.

**See also**

**SoNode**, **SoSFNode**

## Member Function Documentation

### void \* SoMFNode::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 SoMFNode::getClassTypeId (void ) \[static\]

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

### SoType SoMFNode::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**.

### void SoMFNode::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**.

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

Check for equal type and value(s).

Implements **SoField**.

### virtual void SoMFNode::deleteAllValues (void ) \[protected\], \[virtual\]

Implements **SoMField**.

### virtual void SoMFNode::copyValue (int to, int from) \[protected\], \[virtual\]

Implements **SoMField**.

### const SoNode \*\* SoMFNode::getValues (const int start) const \[inline\]

Returns a pointer to the values array.

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

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

### void SoMFNode::fixCopy (SbBool copyconnections) \[virtual\]

This method is internally called after **SoField::copyFrom()** during scene graph copies, and should do the operations necessary for fixing up the field instance after it has gotten a new value.

The default method in the **SoField** superclass does nothing.

The application programmer should normally not need to consider this method, unless he constructs a complex field type which contains new references to container instances (i.e. nodes or engines). Overriding this method is then necessary to update the reference pointers, as they could have been duplicated during the copy operation.

Reimplemented from **SoField**.

### SbBool SoMFNode::referencesCopy (void ) const \[virtual\]

Returns TRUE if this field has references to any containers in the scene graph which are also duplicated during the copy operation.

Note that this method *only* is valid to call during copy operations.

See also the note about the relevance of the **fixCopy()** method for application programmers, as it is applicable on this method as well.

Reimplemented from **SoField**.

### void SoMFNode::addNode (SoNode \* node)

Adds a node at the end of the array.

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

### void SoMFNode::insertNode (SoNode \* node, int idx)

Inserts a node at index *idx*.

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

### SoNode \* SoMFNode::getNode (int idx) const

Returns the node at index *idx*.

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 SoMFNode::findNode (const SoNode \* node) const

Returns the index for the first instance of *node* in the field, or -1 if not found.

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 SoMFNode::getNumNodes (void ) const

Returns the number of nodes in this field.

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

### void SoMFNode::removeNode (int idx)

Removes the node at index *idx*.

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

### void SoMFNode::removeNode (SoNode \* node)

Removes the first instance of *node* in the field.

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

### void SoMFNode::removeAllNodes (void )

Removes all nodes from the field.

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

### void SoMFNode::replaceNode (int idx, SoNode \* newnode)

Replaces the node at index *idx* with *newnode*.

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

### void SoMFNode::replaceNode (SoNode \* oldnode, SoNode \* newnode)

Replaces the first instance of *oldnode* with *newnode*.

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

### virtual void SoMFNode::deleteValues (int start, int numarg = -1) \[virtual\]

Remove value elements from index *start* up to and including index *start* + *num* - 1.

Elements with indices larger than the last deleted element will be moved downwards in the value array.

If *num* equals -1, delete from index *start* and to the end of the array.

Reimplemented from **SoMField**.

### virtual void SoMFNode::insertSpace (int start, int numarg) \[virtual\]

Insert *num* "slots" for new value elements from *start*. The elements already present from *start* will be moved "upward" in the extended array.

Reimplemented from **SoMField**.

## Author

Generated automatically by Doxygen for Coin from the source code.
