51#ifndef _SO_NODEKIT_CATALOG
52#define _SO_NODEKIT_CATALOG
54#include <Inventor/misc/SoBasic.h>
55#include <Inventor/SbString.h>
56#include <Inventor/SoLists.h>
57#include <Inventor/SoType.h>
59#define SO_CATALOG_NAME_NOT_FOUND -1
60#define SO_CATALOG_THIS_PART_NUM 0
62#ifndef HIDDEN_FROM_DOC
95 SoNodekitCatalogEntry(
const SbName &theName,
98 const SbName &theParentName,
const SbName &theRightSiblingName,
104 SoNodekitCatalogEntry *clone()
const;
105 SoNodekitCatalogEntry *clone(
SoType newType,
106 SoType newDefaultType )
const;
109 const SbName &getName()
const {
return name; };
110 SoType getType()
const {
return type; };
111 SoType getDefaultType()
const {
return defaultType; };
112 SbBool isNullByDefault()
const {
return nullByDefault; };
113 SbBool isLeaf()
const {
return leafPart; };
114 const SbName &getParentName()
const {
return parentName; };
115 const SbName &getRightSiblingName()
const {
return rightSiblingName; };
116 SbBool isList()
const {
return listPart; };
117 SoType getListContainerType()
const {
return listContainerType;};
118 const SoTypeList &getListItemTypes()
const {
return listItemTypes; };
119 SbBool isPublic()
const {
return publicPart; };
122 void addListItemType(
SoType typeToAdd );
124 void setNullByDefault(
SbBool newNullByDefault )
125 { nullByDefault = newNullByDefault; }
128 void setPublic(
SbBool newPublic ) { publicPart = newPublic; }
129 void setLeaf(
SbBool newLeafPart ) { leafPart = newLeafPart; }
130 void setRightSiblingName(
const SbName &newN ) { rightSiblingName = newN; }
134 { type = newType; defaultType = newDefaultType; }
141 void printCheck()
const;
194 static void initClass();
195 static void exitClass();
339 const SbName &theParentName,
341 SoType theListContainerType,
346 void addListItemType(
int thePartNumber,
SoType typeToAdd);
347 void addListItemType(
const SbName &theName,
SoType typeToAdd);
361 void narrowTypes(
const SbName &theName,
SoType newType,
364 void setNullByDefault(
const SbName &theName,
SbBool newNullByDefault );
370 SbBool recursiveSearch(
int partNumber,
const SbName &nameToFind,
373 void printCheck()
const;
376 static const SbName *emptyName;
381 SoNodekitCatalogEntry **entries;
390 const SbName &theParentName,
391 SoNodekitCatalogEntry *& parentEntry );
392 SbBool checkAndGetSiblings(
const SbName &theParentName,
393 const SbName &theRightSiblingName,
394 SoNodekitCatalogEntry *& leftEntry,
395 SoNodekitCatalogEntry *& rightEntry );
398 SoType theListContainerType );
Character string stored in a hash table.
SoType getListContainerType(int thePartNumber) const
Returns the list container type of the specified part.
SoType getListContainerType(const SbName &theName) const
Returns the list container type of the specified part.
SoType getType(int thePartNumber) const
Returns the type of the specified part.
const SoTypeList & getListItemTypes(const SbName &theName) const
Returns a list of the types of nodes that the specified part can contain.
SoType getDefaultType(const SbName &theName) const
Returns the default type of the specified part.
SoType getDefaultType(int thePartNumber) const
Returns the default type of the specified part.
int getNumEntries() const
Returns the number of entries in the catalog.
int getParentPartNumber(const SbName &theName) const
Returns the part number of the parent of the specified part.
SbBool isLeaf(int thePartNumber) const
Returns TRUE if the specified part is a leaf node.
const SbName & getParentName(const SbName &theName) const
Returns the parent of the specified part.
SbBool isList(const SbName &theName) const
Returns TRUE if the specified part is a parts list.
const SbName & getRightSiblingName(int thePartNumber) const
Returns the name of the right sibling of the specified part.
const SbName & getRightSiblingName(const SbName &theName) const
Returns the name of the right sibling of the specified part.
int getRightSiblingPartNumber(const SbName &theName) const
Returns the part number of the right sibling of the specified part.
SbBool isLeaf(const SbName &theName) const
Returns TRUE if the specified part is a leaf node.
SbBool isPublic(const SbName &theName) const
Returns TRUE if the specified part is public.
SbBool isList(int thePartNumber) const
Returns TRUE if the specified part is a parts list.
const SbName & getParentName(int thePartNumber) const
Returns the parent of the specified part.
const SoTypeList & getListItemTypes(int thePartNumber) const
Returns a list of the types of nodes that the specified part can contain.
SoType getType(const SbName &theName) const
Returns the type of the specified part.
SbBool isNullByDefault(int thePartNumber) const
Returns TRUE if the specified part is null by default.
int getParentPartNumber(int thePartNumber) const
Returns the part number of the parent of the specified part.
int getPartNumber(const SbName &theName) const
Given the name of a part, returns its part number in the catalog.
SbBool isPublic(int thePartNumber) const
Returns TRUE if the specified part is public.
SbBool isNullByDefault(const SbName &theName) const
Returns TRUE if the specified part is null by default.
const SbName & getName(int thePartNumber) const
Given the part number of a part, returns its name in the catalog.
int getRightSiblingPartNumber(int thePartNumber) const
Returns the part number of the right sibling of the specified part.
Stores runtime type information.
Maintains a list of SoTypes.