本文整理汇总了C++中BaseType::type方法的典型用法代码示例。如果您正苦于以下问题:C++ BaseType::type方法的具体用法?C++ BaseType::type怎么用?C++ BaseType::type使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BaseType
的用法示例。
在下文中一共展示了BaseType::type方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
Sequence *OGRDODSSequenceLayer::FindSuperSequence( BaseType *poChild )
{
BaseType *poParent;
for( poParent = poChild->get_parent();
poParent != NULL;
poParent = poParent->get_parent() )
{
if( poParent->type() == dods_sequence_c )
{
return dynamic_cast<Sequence *>( poParent );
}
}
return NULL;
}
示例2: if
OGRFeature *OGRDODSSequenceLayer::GetFeature( GIntBig nFeatureId )
{
/* -------------------------------------------------------------------- */
/* Ensure we have the dataset. */
/* -------------------------------------------------------------------- */
if( !ProvideDataDDS() )
return NULL;
Sequence *seq = dynamic_cast<Sequence *>(poTargetVar);
/* -------------------------------------------------------------------- */
/* Figure out what the super and subsequence number this */
/* feature will be, and validate it. If there is not super */
/* sequence the feature id is the subsequence number. */
/* -------------------------------------------------------------------- */
int iSubSeq = -1;
if( nFeatureId < 0 || nFeatureId >= nRecordCount )
return NULL;
if( poSuperSeq == NULL )
iSubSeq = nFeatureId;
else
{
int nSeqOffset = 0, iSuperSeq;
// for now we just scan through till find find out what
// super sequence this in. In the long term we need a better (cached)
// approach that doesn't involve this quadratic cost.
for( iSuperSeq = 0;
iSuperSeq < nSuperSeqCount;
iSuperSeq++ )
{
if( nSeqOffset + panSubSeqSize[iSuperSeq] > nFeatureId )
{
iSubSeq = nFeatureId - nSeqOffset;
break;
}
nSeqOffset += panSubSeqSize[iSuperSeq];
}
CPLAssert( iSubSeq != -1 );
// Make sure we have the right target var ... the one
// corresponding to our current super sequence.
if( iSuperSeq != iLastSuperSeq )
{
iLastSuperSeq = iSuperSeq;
poTargetVar = poSuperSeq->var_value( iSuperSeq, pszSubSeqPath );
seq = dynamic_cast<Sequence *>(poTargetVar);
}
}
/* -------------------------------------------------------------------- */
/* Create the feature being read. */
/* -------------------------------------------------------------------- */
OGRFeature *poFeature;
poFeature = new OGRFeature( poFeatureDefn );
poFeature->SetFID( nFeatureId );
m_nFeaturesRead++;
/* -------------------------------------------------------------------- */
/* Process all the regular data fields. */
/* -------------------------------------------------------------------- */
int iField;
for( iField = 0; iField < poFeatureDefn->GetFieldCount(); iField++ )
{
if( papoFields[iField]->pszPathToSequence )
continue;
BaseType *poFieldVar = GetFieldValue( papoFields[iField], iSubSeq,
NULL );
if( poFieldVar == NULL )
continue;
switch( poFieldVar->type() )
{
case dods_byte_c:
{
signed char byVal;
void *pValPtr = &byVal;
poFieldVar->buf2val( &pValPtr );
poFeature->SetField( iField, byVal );
}
break;
case dods_int16_c:
{
GInt16 nIntVal;
void *pValPtr = &nIntVal;
poFieldVar->buf2val( &pValPtr );
poFeature->SetField( iField, nIntVal );
}
break;
//.........这里部分代码省略.........
示例3: getNextInstance
Instance MemoryDump::getNextInstance(const QString& component,
const Instance& instance,
KnowledgeSources src) const
{
Instance result;
QString typeString, symbol, offsetString, candidate, arrayIndexString;
bool okay;
// quint32 compatibleCnt = 0;
// A component should have the form (symbol(-offset)?)?symbol(<candidate>)?([index])?
#define SYMBOL "[A-Za-z0-9_]+"
#define NUMBER "\\d+"
QRegExp re(
"^\\s*(?:"
"\\(\\s*"
"(" SYMBOL ")"
"(?:"
"\\s*-\\s*(" SYMBOL ")"
")?"
"\\s*\\)"
")?"
"\\s*(" SYMBOL ")\\s*"
"(?:<\\s*(" NUMBER ")\\s*>\\s*)?"
"((?:\\[\\s*" NUMBER "\\s*\\]\\s*)*)\\s*");
if (!re.exactMatch(component)) {
queryError(QString("Could not parse a part of the query string: %1")
.arg(component));
}
// Set variables according to the matching
typeString = re.cap(1);
offsetString = re.cap(2).trimmed();
symbol = re.cap(3);
candidate = re.cap(4);
arrayIndexString = re.cap(5).trimmed();
int candidateIndex = candidate.isEmpty() ? -1 : candidate.toInt();
// debugmsg(QString("1: %1, 2: %2, 3: %3, 4: %4, 5: %5")
// .arg(re.cap(1))
// .arg(re.cap(2))
// .arg(re.cap(3))
// .arg(re.cap(4))
// .arg(re.cap(5)));
// A candidate index of 0 means to ignore the alternative types
if (candidateIndex == 0)
src = static_cast<KnowledgeSources>(src|ksNoAltTypes);
// If the given instance is Null, we interpret this as the first component
// in the query string and will therefore try to resolve the variable.
if (!instance.isValid()) {
Variable* v = _factory->findVarByName(symbol);
if (!v)
queryError(QString("Variable does not exist: %1").arg(symbol));
if (candidateIndex > 0) {
if (v->altRefTypeCount() < candidateIndex)
queryError(QString("Variable \"%1\" does not have a candidate "
"with index %2")
.arg(symbol)
.arg(candidateIndex));
result = v->altRefTypeInstance(_vmem, candidateIndex - 1);
}
else {
result = v->toInstance(_vmem, BaseType::trLexical, src);
}
}
else {
// Dereference any pointers/arrays first
result = instance.dereference(BaseType::trAnyNonNull);
// Did we get a null instance?
if (!(result.type()->type() & StructOrUnion) &&
(result.isNull() || !result.toPointer()))
queryError(QString("Member \"%1\" is null")
.arg(result.fullName()));
// We have a instance therefore we resolve the member
if (!(result.type()->type() & StructOrUnion))
queryError(QString("Member \"%1\" is not a struct or union")
.arg(result.fullName()));
if (!result.memberExists(symbol))
queryError(QString("Struct \"%1\" has no member named \"%2\"")
.arg(result.typeName())
.arg(symbol));
// Do we have a candidate index?
if (candidateIndex > 0) {
if (result.memberCandidatesCount(symbol) < candidateIndex)
queryError(QString("Member \"%1\" does not have a candidate "
"with index %2")
.arg(symbol)
.arg(candidateIndex));
result = result.memberCandidate(symbol, candidateIndex - 1);
}
else {
result = result.member(symbol, BaseType::trLexical, 0, src);
//.........这里部分代码省略.........
示例4: ProvideDataDDS
bool OGRDODSGridLayer::ProvideDataDDS()
{
if( bDataLoaded )
return poTargetVar != NULL;
const bool bResult = OGRDODSLayer::ProvideDataDDS();
if( !bResult )
return bResult;
for( int iArray=0; iArray < nArrayRefCount; iArray++ )
{
OGRDODSArrayRef *poRef = paoArrayRefs + iArray;
BaseType *poTarget = poDataDDS->var( poRef->pszName );
// Reset ref array pointer to point in DataDDS result.
if( poTarget->type() == dods_grid_c )
{
Grid *poGrid = dynamic_cast<Grid *>( poTarget );
poRef->poArray = dynamic_cast<Array *>(poGrid->array_var());
if( iArray == 0 )
poTargetGrid = poGrid;
}
else if( poTarget->type() == dods_array_c )
{
poRef->poArray = dynamic_cast<Array *>( poTarget );
}
else
{
CPLAssert( false );
return false;
}
if( iArray == 0 )
poTargetArray = poRef->poArray;
// Allocate appropriate raw data array, and pull out data into it.
poRef->pRawData = CPLMalloc( poRef->poArray->width() );
poRef->poArray->buf2val( &(poRef->pRawData) );
}
// Setup pointers to each of the map objects.
if( poTargetGrid != NULL )
{
int iMap = 0;
Grid::Map_iter iterMap;
for( iterMap = poTargetGrid->map_begin();
iterMap != poTargetGrid->map_end();
iterMap++, iMap++ )
{
paoDimensions[iMap].poMap = dynamic_cast<Array *>(*iterMap);
if( paoDimensions[iMap].poMap == NULL )
return false;
paoDimensions[iMap].pRawData =
CPLMalloc( paoDimensions[iMap].poMap->width() );
paoDimensions[iMap].poMap->buf2val( &(paoDimensions[iMap].pRawData) );
}
}
return bResult;
}
示例5: if
OGRDODSGridLayer::OGRDODSGridLayer( OGRDODSDataSource *poDSIn,
const char *pszTargetIn,
AttrTable *poOGRLayerInfoIn ) :
OGRDODSLayer( poDSIn, pszTargetIn, poOGRLayerInfoIn ),
poTargetGrid(NULL),
poTargetArray(NULL),
nArrayRefCount(0),
paoArrayRefs(NULL),
nDimCount(0),
paoDimensions(NULL),
nMaxRawIndex(0)
{
/* -------------------------------------------------------------------- */
/* What is the layer name? */
/* -------------------------------------------------------------------- */
string oLayerName;
const char *pszLayerName = pszTargetIn;
if( poOGRLayerInfo != NULL )
{
oLayerName = poOGRLayerInfo->get_attr( "layer_name" );
if( strlen(oLayerName.c_str()) > 0 )
pszLayerName = oLayerName.c_str();
}
poFeatureDefn = new OGRFeatureDefn( pszLayerName );
poFeatureDefn->Reference();
/* -------------------------------------------------------------------- */
/* Fetch the target variable. */
/* -------------------------------------------------------------------- */
BaseType *poTargVar = poDS->poDDS->var( pszTargetIn );
if( poTargVar->type() == dods_grid_c )
{
poTargetGrid = dynamic_cast<Grid *>( poTargVar );
poTargetArray = dynamic_cast<Array *>(poTargetGrid->array_var());
}
else if( poTargVar->type() == dods_array_c )
{
poTargetGrid = NULL;
poTargetArray = dynamic_cast<Array *>( poTargVar );
}
else
{
CPLAssert( false );
return;
}
/* -------------------------------------------------------------------- */
/* Count arrays in use. */
/* -------------------------------------------------------------------- */
AttrTable *poExtraContainers = NULL;
nArrayRefCount = 1; // primary target.
if( poOGRLayerInfo != NULL )
poExtraContainers = poOGRLayerInfo->find_container("extra_containers");
if( poExtraContainers != NULL )
{
AttrTable::Attr_iter dv_i;
for( dv_i = poExtraContainers->attr_begin();
dv_i != poExtraContainers->attr_end(); dv_i++ )
{
nArrayRefCount++;
}
}
/* -------------------------------------------------------------------- */
/* Collect extra_containers. */
/* -------------------------------------------------------------------- */
paoArrayRefs = new OGRDODSArrayRef[nArrayRefCount];
paoArrayRefs[0].pszName = CPLStrdup( pszTargetIn );
paoArrayRefs[0].poArray = poTargetArray;
nArrayRefCount = 1;
if( poExtraContainers != NULL )
{
AttrTable::Attr_iter dv_i;
for( dv_i = poExtraContainers->attr_begin();
dv_i != poExtraContainers->attr_end(); dv_i++ )
{
const char *pszTargetName=poExtraContainers->get_attr(dv_i).c_str();
BaseType *poExtraTarget = poDS->poDDS->var( pszTargetName );
if( poExtraTarget == NULL )
{
CPLError( CE_Warning, CPLE_AppDefined,
"Unable to find extra_container '%s', skipping.",
pszTargetName );
continue;
}
if( poExtraTarget->type() == dods_array_c )
paoArrayRefs[nArrayRefCount].poArray =
dynamic_cast<Array *>( poExtraTarget );
else if( poExtraTarget->type() == dods_grid_c )
//.........这里部分代码省略.........
示例6: Open
//.........这里部分代码省略.........
}
/* -------------------------------------------------------------------- */
/* We presume we only work with version 3 servers. */
/* -------------------------------------------------------------------- */
if (version.empty() || version.find("/3.") == string::npos)
{
CPLError( CE_Warning, CPLE_AppDefined,
"I connected to the URL but could not get a DAP 3.x version string\n"
"from the server. I will continue to connect but access may fail.");
}
/* -------------------------------------------------------------------- */
/* Fetch the DAS and DDS info about the server. */
/* -------------------------------------------------------------------- */
try
{
poConnection->request_das( oDAS );
poConnection->request_dds( *poDDS, oProjection + oConstraints );
}
catch (Error &e)
{
CPLError(CE_Failure, CPLE_AppDefined,
"Error fetching DAS or DDS:\n%s",
e.get_error_message().c_str() );
return FALSE;
}
/* -------------------------------------------------------------------- */
/* Do we have any ogr_layer_info attributes in the DAS? If so, */
/* use them to define the layers. */
/* -------------------------------------------------------------------- */
AttrTable::Attr_iter dv_i;
#ifdef LIBDAP_39
AttrTable* poTable = oDAS.container();
if (poTable == NULL)
{
CPLError(CE_Failure, CPLE_AppDefined, "Cannot get container");
return FALSE;
}
#else
AttrTable* poTable = &oDAS;
#endif
for( dv_i = poTable->attr_begin(); dv_i != poTable->attr_end(); dv_i++ )
{
if( EQUALN(poTable->get_name(dv_i).c_str(),"ogr_layer_info",14)
&& poTable->is_container( dv_i ) )
{
AttrTable *poAttr = poTable->get_attr_table( dv_i );
string target_container = poAttr->get_attr( "target_container" );
BaseType *poVar = poDDS->var( target_container.c_str() );
if( poVar == NULL )
{
CPLError( CE_Warning, CPLE_AppDefined,
"Unable to find variable '%s' named in\n"
"ogr_layer_info.target_container, skipping.",
target_container.c_str() );
continue;
}
if( poVar->type() == dods_sequence_c )
AddLayer(
new OGRDODSSequenceLayer(this,
target_container.c_str(),
poAttr) );
else if( poVar->type() == dods_grid_c
|| poVar->type() == dods_array_c )
AddLayer( new OGRDODSGridLayer(this,target_container.c_str(),
poAttr) );
}
}
/* -------------------------------------------------------------------- */
/* Walk through the DODS variables looking for easily targetted */
/* ones. Eventually this will need to be driven by the AIS info. */
/* -------------------------------------------------------------------- */
if( nLayers == 0 )
{
DDS::Vars_iter v_i;
for( v_i = poDDS->var_begin(); v_i != poDDS->var_end(); v_i++ )
{
BaseType *poVar = *v_i;
if( poVar->type() == dods_sequence_c )
AddLayer( new OGRDODSSequenceLayer(this,poVar->name().c_str(),
NULL) );
else if( poVar->type() == dods_grid_c
|| poVar->type() == dods_array_c )
AddLayer( new OGRDODSGridLayer(this,poVar->name().c_str(),
NULL) );
}
}
return TRUE;
}
示例7: write
//.........这里部分代码省略.........
// 6.h (qint32) number of type alternatives
// 6.i (AltRefType) 1st alternative
// 6.j (AltRefType) 2nd alternative
// 6.k (AltRefType) ...
// 6.l ...
// 7.a (qint32) number of struct members with alternative types
// 7.b (qint32) 1st id of struct member with alternatives
// 7.c (qint32) id of belonging struct
// 7.d (qint32) number of type alternatives
// 7.e (AltRefType) 1st alternative
// 7.f (AltRefType) 2nd alternative
// 7.g (AltRefType) ...
// 7.h (qint32) 2st id of struct member with alternatives
// 7.i (qint32) id of belonging struct
// 7.j (qint32) number of type alternatives
// 7.k (AltRefType) 1st alternative
// 7.l (AltRefType) 2nd alternative
// 7.m (AltRefType) ...
// 7.l ...
// 8.a (qint32) number of variable with alternative types
// 8.b (qint32) 1st id of variable with alternatives
// 8.c (qint32) number of type alternatives
// 8.d (AltRefType) 1st alternative
// 8.e (AltRefType) 2nd alternative
// 8.f (AltRefType) ...
// 8.g (qint32) 2st id of variable with alternatives
// 8.h (qint32) number of type alternatives
// 8.i (AltRefType) 1st alternative
// 8.j (AltRefType) 2nd alternative
// 8.k (AltRefType) ...
// 8.l ...
try {
QSet<qint32> written_types;
// Write the memory specifications
out << *_specs;
#ifdef WRITE_ASCII_FILE
dout << endl << "# Memory specifications" << endl
<< _specs->toString();
#endif
// Write list of compile units
out << (qint32) _factory->sources().size();
#ifdef WRITE_ASCII_FILE
dout << endl << "# Compile units" << endl
<< _factory->sources().size() << endl;
#endif
CompileUnitIntHash::const_iterator cu_it = _factory->sources().constBegin();
while (cu_it != _factory->sources().constEnd()) {
const CompileUnit* c = cu_it.value();
out << *c;
#ifdef WRITE_ASCII_FILE
dout << "0x" << hex << c->id() << " " << c->name() << endl;
#endif
++cu_it;
checkOperationProgress();
}
// Write list of types
const int types_to_write = _factory->types().size();
out << (qint32) types_to_write;
#ifdef WRITE_ASCII_FILE
dout << endl << "# Types" << endl
<< dec << types_to_write << endl;