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

# SoNodekitCatalog(3)

The SoNodekitCatalog class is a container for nodekit layouts.

## NAME

SoNodekitCatalog - The **SoNodekitCatalog** class is a container for nodekit layouts.

## SYNOPSIS

\#include \<Inventor/nodekits/SoNodekitCatalog.h\>

### Public Member Functions

**SoNodekitCatalog** (void)\
 **~SoNodekitCatalog** ()\
 int **getNumEntries** (void) const\
 int **getPartNumber** (const **SbName** &name) const\
 const **SbName** & **getName** (int part) const\
 **SoType** **getType** (int part) const\
 **SoType** **getType** (const **SbName** &name) const\
 **SoType** **getDefaultType** (int part) const\
 **SoType** **getDefaultType** (const **SbName** &name) const\
 SbBool **isNullByDefault** (int part) const\
 SbBool **isNullByDefault** (const **SbName** &name) const\
 SbBool **isLeaf** (int part) const\
 SbBool **isLeaf** (const **SbName** &name) const\
 const **SbName** & **getParentName** (int part) const\
 const **SbName** & **getParentName** (const **SbName** &name) const\
 int **getParentPartNumber** (int part) const\
 int **getParentPartNumber** (const **SbName** &name) const\
 const **SbName** & **getRightSiblingName** (int part) const\
 const **SbName** & **getRightSiblingName** (const **SbName** &name) const\
 int **getRightSiblingPartNumber** (int part) const\
 int **getRightSiblingPartNumber** (const **SbName** &name) const\
 SbBool **isList** (int part) const\
 SbBool **isList** (const **SbName** &name) const\
 **SoType** **getListContainerType** (int part) const\
 **SoType** **getListContainerType** (const **SbName** &name) const\
 const **SoTypeList** & **getListItemTypes** (int part) const\
 const **SoTypeList** & **getListItemTypes** (const **SbName** &name) const\
 SbBool **isPublic** (int part) const\
 SbBool **isPublic** (const **SbName** &name) const\
 **SoNodekitCatalog** \* **clone** (**SoType** type) const\
 SbBool **addEntry** (const **SbName** &name, **SoType** type, **SoType** defaulttype, SbBool isdefaultnull, const **SbName** &parent, const **SbName** &rightsibling, SbBool islist, **SoType** listcontainertype, **SoType** listitemtype, SbBool ispublic)\
 void **addListItemType** (int part, **SoType** type)\
 void **addListItemType** (const **SbName** &name, **SoType** type)\
 void **narrowTypes** (const **SbName** &name, **SoType** newtype, **SoType** newdefaulttype)\
 void **setNullByDefault** (const **SbName** &name, SbBool nullbydefault)\
 SbBool **recursiveSearch** (int part, const **SbName** &name, **SoTypeList** \*checked) const\
 void **printCheck** (void) const\

### Static Public Member Functions

static void **initClass** (void)\

## Detailed Description

The **SoNodekitCatalog** class is a container for nodekit layouts.

Nodekits store all their hierarchical layout information and part information in instances of this class.

**See also**

**SoNodeKit**, **SoBaseKit**

## Constructor & Destructor Documentation

### SoNodekitCatalog::SoNodekitCatalog (void )

Constructor.

### SoNodekitCatalog::~SoNodekitCatalog ()

Destructor.

## Member Function Documentation

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

Initialization of static variables.

### int SoNodekitCatalog::getNumEntries (void ) const

Returns total number of entries in the catalog.

### int SoNodekitCatalog::getPartNumber (const SbName & name) const

Returns part number in catalog with *name*. If no part exists with *name*, returns SO\_CATALOG\_NAME\_NOT\_FOUND.

### const SbName & SoNodekitCatalog::getName (int part) const

Given the *part* number, return name of that part.

### SoType SoNodekitCatalog::getType (int part) const

Given the *part* number, return type.

### SoType SoNodekitCatalog::getType (const SbName & name) const

Given the part *name*, return type.

### SoType SoNodekitCatalog::getDefaultType (int part) const

Given *part* number, return default type of part.

### SoType SoNodekitCatalog::getDefaultType (const SbName & name) const

Given part *name*, return default type of part.

### SbBool SoNodekitCatalog::isNullByDefault (int part) const

Returns TRUE if the *part* is empty by default, otherwise FALSE.

### SbBool SoNodekitCatalog::isNullByDefault (const SbName & name) const

Returns TRUE if part *name* is empty by default, otherwise FALSE.

### SbBool SoNodekitCatalog::isLeaf (int part) const

Returns TRUE if the *part* is *not* a parent for any other parts in the nodekit catalog.

### SbBool SoNodekitCatalog::isLeaf (const SbName & name) const

Returns TRUE if the part *name* is *not* a parent for any other parts in the nodekit catalog.

### const SbName & SoNodekitCatalog::getParentName (int part) const

Returns name of parent of *part*. If *part* doesn't have a parent, the empty string is returned.

### const SbName & SoNodekitCatalog::getParentName (const SbName & name) const

Returns name of parent of the part. If *name* doesn't have a parent, the empty string is returned.

### int SoNodekitCatalog::getParentPartNumber (int part) const

Returns part number of given part's parent. If *part* doesn't have a parent, SO\_CATALOG\_NAME\_NOT\_FOUND is returned.

### int SoNodekitCatalog::getParentPartNumber (const SbName & name) const

Returns part number of given part's parent. If *name* doesn't have a parent, SO\_CATALOG\_NAME\_NOT\_FOUND is returned.

### const SbName & SoNodekitCatalog::getRightSiblingName (int part) const

Returns name of right sibling of *part*. Returns the empty string if *part* doesn't have a right sibling.

### const SbName & SoNodekitCatalog::getRightSiblingName (const SbName & name) const

Returns name of sibling of the part. Returns the empty string if *name* doesn't have a right sibling.

### int SoNodekitCatalog::getRightSiblingPartNumber (int part) const

Returns part number of given part's sibling. Returns SO\_CATALOG\_NAME\_NOT\_FOUND if *part* doesn't have a right sibling.

### int SoNodekitCatalog::getRightSiblingPartNumber (const SbName & name) const

Returns part number of given part's right sibling. Returns SO\_CATALOG\_NAME\_NOT\_FOUND if part doesn't have a right sibling.

### SbBool SoNodekitCatalog::isList (int part) const

Returns TRUE if the given *part* is a list container.

### SbBool SoNodekitCatalog::isList (const SbName & name) const

Returns TRUE if the given part is a list container.

### SoType SoNodekitCatalog::getListContainerType (int part) const

Returns type of list container (**SoGroup**, **SoSeparator**, **SoSwitch**, etc) which *part* is.

### SoType SoNodekitCatalog::getListContainerType (const SbName & name) const

Returns type of list container (**SoGroup**, **SoSeparator**, **SoSwitch**, etc) which the named part is.

### const SoTypeList & SoNodekitCatalog::getListItemTypes (int part) const

Returns list of node types which are allowed to be children of the list container *part*.

### const SoTypeList & SoNodekitCatalog::getListItemTypes (const SbName & name) const

Returns list of node types which are allowed to be children of the named list container part.

### SbBool SoNodekitCatalog::isPublic (int part) const

Returns TRUE if *part* is visible and publicly available for queries and modifications, FALSE if *part* is hidden.

### SbBool SoNodekitCatalog::isPublic (const SbName & name) const

Returns TRUE if the part is visible and publicly available for queries and modifications, FALSE if it is hidden.

### SoNodekitCatalog \* SoNodekitCatalog::clone (SoType type) const

Return a clone of this catalog. *type* will be used to set the type and default type values of the top level this entry.

### SbBool SoNodekitCatalog::addEntry (const SbName & name, SoType type, SoType defaulttype, SbBool isdefaultnull, const SbName & parentname, const SbName & rightsiblingname, SbBool islist, SoType listcontainertype, SoType listitemtype, SbBool ispublic)

Add a new entry to the catalog. Returns TRUE if add was OK.

### void SoNodekitCatalog::addListItemType (int part, SoType type)

Add another allowable type for the given *part*. *part* must of course be a list container item.

### void SoNodekitCatalog::addListItemType (const SbName & name, SoType type)

Add another allowable type for the *name* part. The part must of course be a list container.

### void SoNodekitCatalog::narrowTypes (const SbName & name, SoType newtype, SoType newdefaulttype)

Set the type and default type of a part to be subtypes of the old types. Useful for "narrowing" the specification of a nodekit which inherits the catalog of a more generic nodekit superclass.

### void SoNodekitCatalog::setNullByDefault (const SbName & name, SbBool nullbydefault)

Change whether or not the part with the given *name* is created by default.

### SbBool SoNodekitCatalog::recursiveSearch (int part, const SbName & name, SoTypeList \* checked) const

Recursively search *part* number in catalog for the *name* part.

The *checked* **SoTypeList** is just used as a placeholder to remember which nodekit class catalogs have already been scanned (or are being scanned) during the recursion. You should normally just pass in an empty list.

### void SoNodekitCatalog::printCheck (void ) const

Lists all catalog parts, which is useful for debugging.

## Author

Generated automatically by Doxygen for Coin from the source code.
