本文整理汇总了C++中SbName类的典型用法代码示例。如果您正苦于以下问题:C++ SbName类的具体用法?C++ SbName怎么用?C++ SbName使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SbName类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: readValue
SbBool SoXipSFData::readValue(SoInput *in)
{
SbName name;
if( in->read( name ) )
{
if( name == "NULL" || name == "DATA" || name == "\"NULL\"" || name == "\"DATA\"" )
{
setVal( NULL );
SbXipDirtyFieldList::append(this);
return TRUE;
}
else
in->putBack( name.getString() );
}
SoBase* base;
if( !SoBase::read( in, base, SoXipData::getClassTypeId() ) )
{
setVal( NULL );
return FALSE;
}
setVal( NULL );
SbXipDirtyFieldList::append(this);
return TRUE;
}
示例2: setVal
SbBool
SoSFPath::readValue(SoInput *in)
//
////////////////////////////////////////////////////////////////////////
{
SbName name;
SoBase *base;
// See if it's a null pointer
if (in->read(name)) {
if (name == "NULL") {
setVal(NULL);
return TRUE;
}
else
in->putBack(name.getString());
}
// Read path
if (! SoBase::read(in, base, SoPath::getClassTypeId())) {
setVal(NULL);
return FALSE;
}
setVal((SoPath *) base);
return TRUE;
}
示例3: s
void
SoSFEnum::writeValue(SoOutput * out) const
{
const SbName *enumname;
if (findEnumName(this->getValue(), enumname)) {
out->write(const_cast<char *>(enumname->getString()));
return;
}
// If we don't have any legal values for this field,
// pass through read integer values.
if (!this->legalValuesSet) {
out->write(this->getValue());
return;
}
#if COIN_DEBUG
// An unknown enumeration value will usually be an indication of a
// more serious bug, so we elaborate a bit on the error to aid early
// debugging. mortene.
SbName name;
const SoFieldContainer * thecontainer = this->getContainer();
const SbBool fname = thecontainer && thecontainer->getFieldName(this, name);
SbString s("");
if (fname) { s.sprintf(" \"%s\"", name.getString()); }
SoDebugError::post("SoSFEnum::writeValue",
"Illegal enumeration value %d in field%s",
this->getValue(), s.getString());
#endif // COIN_DEBUG
}
示例4: QComboBox
QWidget* ParametersDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem& option, const QModelIndex &index) const
{
const ParametersModel* model = static_cast< const ParametersModel* >( index.model() );
SoField* field = model->ModelItem( index )->GetField();
if( field->getTypeId().isDerivedFrom( SoSFEnum::getClassTypeId() ) )
{
QComboBox* editor = new QComboBox( parent );
SoSFEnum* enumField = static_cast< SoSFEnum* >( field );
for( int i = 0; i < enumField->getNumEnums() ; ++i )
{
SbName enumName;
enumField->getEnum( i , enumName );
editor->addItem( enumName.getString() );
}
return editor;
}
else if( field->getTypeId().isDerivedFrom( SoMField::getClassTypeId() ) )
{
ContainerEditor* editor = new ContainerEditor( parent );
editor->setGeometry(option.rect);
connect( editor, SIGNAL( editingFinished( ) ), this, SLOT( CloseEditor() ));
return editor;
}
else
{
QLineEdit* editor = new QLineEdit(parent);
return editor;
}
}
示例5: setClassName
void
SoUnknownEngine::copyContents(const SoFieldContainer *fromFC,
SbBool copyConnections)
//
////////////////////////////////////////////////////////////////////////
{
// Make sure the copy has the correct class name
const SoUnknownEngine *fromUnk = (const SoUnknownEngine *) fromFC;
setClassName(fromUnk->className);
// For each input in the original engine, create a new input and add
// it to the new engine
// NOTE: We can't use SoEngine::copyContents() to copy the field
// data, since that uses SoFieldData::overlay(), which assumes the
// fields have the same offsets in both engines. Instead, we just
// copy the field values ourselves.
const SoFieldData *fromData = fromUnk->getFieldData();
SoFieldData *toData = (SoFieldData *) getFieldData();
int i;
for (i = 0; i < fromData->getNumFields(); i++) {
SoField *fromField = fromData->getField(fromUnk, i);
const SbName fieldName = fromData->getFieldName(i);
SoType fieldType = fromField->getTypeId();
SoField *toField = (SoField *) (fieldType.createInstance());
toField->enableNotify(FALSE);
toField->setContainer(this);
toField->setDefault(TRUE);
toField->enableNotify(TRUE);
toData->addField(this, fieldName.getString(), toField);
toField->setContainer(this);
toField->copyFrom(*fromField);
toField->setIgnored(fromField->isIgnored());
toField->setDefault(fromField->isDefault());
toField->fixCopy(copyConnections);
if (fromField->isConnected() && copyConnections)
toField->copyConnection(fromField);
}
// Copy the outputs
SoEngineOutputData *toOutData = (SoEngineOutputData *) getOutputData();
SoEngineOutputList outList;
fromUnk->getOutputs(outList);
for(i = 0; i < outList.getLength(); i++) {
SoEngineOutput *newOut = new SoEngineOutput;
const SoType outType = outList[i]->getConnectionType();
SbName outName;
getOutputName( outList[i], outName );
toOutData->addOutput(this, outName.getString(), newOut, outType);
newOut->setContainer(this);
}
}
示例6: list_enums
void list_enums(const Type * f)
{
const unsigned int nrenums = f->getNumEnums();
for (unsigned int k=0; k < nrenums; k++) {
SbName name;
const int val = f->getEnum(k, name);
(void)fprintf(stdout, " %s == %d\n",
name.getString(), val);
}
}
示例7:
SbBool
SoSFEnum::readValue(SoInput * in)
{
SbName n;
int val;
// Read mnemonic value as a character string identifier
if (!in->read(n, TRUE)) {
// If we don't have any legal values for this field,
// give some slack and accept integer values.
if (this->legalValuesSet || !in->read(val)) {
SoReadError::post(in, "Couldn't read enumeration name");
return FALSE;
}
}
else {
if (!this->findEnumValue(n, val)) {
// If we read an enum field written by an extension node,
// we won't have any defined enum values. This is indicated by
// this->legalValuesSet == FALSE. If this is the case, define
// any encountered enum values on the fly but keep legalValuesSet
// to FALSE in order not to fool built-in enum field to accept
// illegal values.
if (!this->legalValuesSet) {
int *newvalues = new int[this->numEnums+1];
SbName *newnames = new SbName[this->numEnums+1];
int i;
for (i = 0; i < this->numEnums; i++) {
newvalues[i] = this->enumValues[i];
newnames[i] = this->enumNames[i];
}
newvalues[i] = i;
newnames[i] = n;
delete[] this->enumValues;
delete[] this->enumNames;
this->enumValues = newvalues;
this->enumNames = newnames;
this->numEnums += 1;
val = i;
}
else {
SoReadError::post(in, "Unknown enumeration value \"%s\"", n.getString());
return FALSE;
}
}
}
this->value = val;
return TRUE;
}
示例8: soupgrader_exists
static SbBool
soupgrader_exists(const SbName & name)
{
assert(soupgrader_namedict);
void * dummy;
return soupgrader_namedict->get(name.getString(), dummy);
}
示例9: if
/*!
Action method for SoWriteAction.
Writes out a node object, and any connected nodes, engines etc, if
necessary.
*/
void
SoNode::write(SoWriteAction * action)
{
SoOutput * out = action->getOutput();
SoNode * node = this;
SoProtoInstance * proto = SoProtoInstance::findProtoInstance(this);
if (proto) { node = proto; }
if (out->getStage() == SoOutput::COUNT_REFS) {
node->addWriteReference(out, FALSE);
}
else if (out->getStage() == SoOutput::WRITE) {
if (node->writeHeader(out, FALSE, FALSE)) return;
// check for special case where we actually have to write out an
// SoEngineOutput "field". An engine output might be connected via
// an IS reference in a PROTO, and we then need to write back this
// IS reference when exporting the VRML file.
SoProto * proto = out->getCurrentProto();
if (proto && node->isOfType(SoNodeEngine::getClassTypeId())) {
SoEngineOutputList l;
const int num = ((SoNodeEngine*)node)->getOutputs(l);
for (int i = 0; i < num; i++) {
SbName name;
if (((SoNodeEngine*)node)->getOutputName(l[i], name)) {
SbName pname = proto->findISReference(node, name);
if (pname.getLength()) {
out->indent();
out->write(name.getString());
out->write(" IS ");
out->write(pname.getString());
out->write("\n");
}
}
}
}
node->getFieldData()->write(out, node);
node->writeFooter(out);
}
else assert(0 && "unknown stage");
}
示例10: main
int
main(void)
{
SoDB::init();
SoNodeKit::init();
SoInteraction::init();
SoTypeList tl;
const unsigned int n = SoType::getAllDerivedFrom(SoNode::getClassTypeId(), tl);
for (unsigned int i=0; i < n; i++) {
(void)fprintf(stdout, "%s", tl[i].getName().getString());
SoFieldContainer * fc = (SoFieldContainer *)
(tl[i].canCreateInstance() ? tl[i].createInstance() : NULL);
if (fc == NULL) {
(void)fprintf(stdout, " (abstract)\n");
continue;
}
(void)fprintf(stdout, "\n");
SoFieldList fl;
const unsigned int nrf = fc->getAllFields(fl);
for (unsigned int j=0; j < nrf; j++) {
SoField * f = fl[j];
SoType ftype = f->getTypeId();
SbName fname;
f->getContainer()->getFieldName(f, fname);
(void)fprintf(stdout, " %s (%s)\n",
fname.getString(),
ftype.getName().getString());
if (ftype.isDerivedFrom(SoSFEnum::getClassTypeId())) {
list_enums((SoSFEnum *)f);
}
else if (ftype.isDerivedFrom(SoMFEnum::getClassTypeId())) {
list_enums((SoMFEnum *)f);
}
}
}
return 0;
}
示例11:
SbBool
SoSFEnum::readValue(SoInput *in)
//
////////////////////////////////////////////////////////////////////////
{
SbName n;
// Read mnemonic value as a character string identifier
if (! in->read(n, TRUE))
return FALSE;
if (findEnumValue(n, value))
return TRUE;
// Not found? Too bad
SoReadError::post(in, "Unknown SoSFEnum enumeration value \"%s\"",
n.getString());
return FALSE;
}
示例12: COIN_UNUSED_ARG
/*!
Registers a concrete SoForeignFileKit subtype to be a handler for files with the given extension.
One class can be a handler for multiple filename extensions.
FIXME: \e identify is not implemented
*/
SbBool
SoForeignFileKit::registerFileExtension(SoType handler, SbName extension, SoForeignFileIdentifyFunc * COIN_UNUSED_ARG(identify))
{
assert(SoForeignFileKitP::fileexts != NULL);
assert(handler.canCreateInstance());
if (extension.getString()[0] == '.') {
#if COIN_DEBUG
SoDebugError::post("SoForeignFileKit::registerFileExtension",
"Do not include the extension separator '.' "
"when registering file extension.");
#endif // COIN_DEBUG
}
if (SoForeignFileKitP::fileexts->put(extension.getString(), handler)) {
return TRUE;
}
return FALSE;
}
示例13: sosfbool_read_value
// Read boolean value from input stream, return TRUE if
// successful. Used from SoSFBool and SoMFBool.
SbBool
sosfbool_read_value(SoInput * in, SbBool & val)
{
// accept 0 or 1
if (in->read(val)) {
if (val != 0 && val != 1) {
SoReadError::post(in, "Illegal value for field: %d (must be 0 or 1)",
val);
return FALSE;
}
return TRUE;
}
if (in->isBinary()) {
SoReadError::post(in, "Premature end of file");
return FALSE;
}
// read TRUE/FALSE keyword
SbName n;
if (!in->read(n, TRUE)) {
SoReadError::post(in, "Couldn't read field value");
return FALSE;
}
if (n == "TRUE") {
val = TRUE;
return TRUE;
}
if (n == "FALSE") {
val = FALSE;
return TRUE;
}
SoReadError::post(in,
"Invalid value \"%s\" for field (must be TRUE or FALSE)",
n.getString());
return FALSE;
}
示例14:
// Import node.
SbBool
SoSFNode::readValue(SoInput * in)
{
SoBase * baseptr;
SbBool isVRMLspecialCase = FALSE;
// Note: do *not* simply check for baseptr==NULL here, as that is a
// valid condition for VRML97 files, where nodes can indeed be
// explicitly given as a NULL value. See the 'vrml97nullchild' test
// case near the end of this file for a valid case that would fail.
if(in->isFileVRML1() || in->isFileVRML2()) {
SbName name;
in->read(name, TRUE);
if (name == "NULL") {
baseptr = NULL;
isVRMLspecialCase = TRUE;
}
else {
in->putBack(name.getString());
}
}
if (!isVRMLspecialCase) {
if (!SoBase::read(in, baseptr, SoNode::getClassTypeId())) return FALSE;
if (baseptr == NULL) {
SoReadError::post(in, "Invalid node specification");
return FALSE;
}
}
if (in->eof()) {
SoReadError::post(in, "Premature end of file");
return FALSE;
}
if (baseptr != NULL) {
this->setValue(coin_safe_cast<SoNode *>(baseptr));
}
return TRUE;
}
示例15: printf
void
SoDebug::writeField(SoField *field)
//
////////////////////////////////////////////////////////////////////////
{
SoFieldContainer *fc = field->getContainer();
SbName fieldName;
fc->getFieldName(field, fieldName);
printf("Field name is: %s\n", fieldName.getString());
if (fc->isOfType(SoNode::getClassTypeId())) {
printf("Field is part of node:\n");
SoNode *node = (SoNode *)fc;
node->ref();
SoWriteAction wa;
wa.apply(node);
node->unrefNoDelete();
}
}