Node::NodePtr Node::node(Index index) const { if (index >= nodeCount()) return nullptr; return clone(nodeKey(index)); }
Node::NodePtr Node::last() const { auto count = nodeCount(); if (count == 0) return nullptr; return clone(nodeKey(count - 1)); }
/* determine which tags should be saved to history database. */ void CInMemoryBuffer::buildStreamList() { RTK_CURSOR hNode; RTK_CURSOR hGroup; RTK_CURSOR hTag; PCRTK_TAG pTag; TAG_NAME tn; char nodeName[rtkm_node_key_length + 1]; GetPrivateProfileString( "PMC", "ServerName", "LocalServer", nodeName, sizeof(nodeName), get_config_file() ); CNodeName nodeKey(nodeName); //utils_debug("wlock 3\n"); WriteLock(); if(!lock_rtdb(__false, 100)){ //utils_debug("release 6\n"); Release(); return; } // clear list clearStreamList(); hNode = open_node(nodeKey); if(hNode){ hGroup = cursor_open_first_subitem(hNode); while(!cursor_is_end(hGroup)){ hTag = cursor_open_first_subitem(hGroup); while(!cursor_is_end(hTag)){ pTag = (PCRTK_TAG)cursor_get_item(hTag); if(pTag->s.Flags & TF_SaveToHistory){ tn.node = pTag->node; tn.sname.group = pTag->group; tn.sname.tag = pTag->key; addTag(&tn); } cursor_move_next(hTag); } close_handle(hTag); cursor_move_next(hGroup); } close_handle(hGroup); } unlock_rtdb(); //utils_debug("release 7\n"); Release(); }
QString arnConfig::findkey(const char *key) { QString nodeKey(key); QDomNode out; if (doc->nodeName() == nodeKey) return doc->firstChild().nodeValue(); // ???????????????????????????? if (!(out = _findkeyonchildren (*doc,key)).isNull()) return out.firstChild().nodeValue(); return 0; /* xmlNodePtr rn = xmlDocGetRootElement(doc); xmlNodePtr out; if ((!xmlStrcmp(rn->name,(const xmlChar*)key))) return xmlNodeListGetString(doc,rn->xmlChildrenNode,1); if ((out = _findkeyonchildren(rn,key))) return xmlNodeListGetString(doc,out->xmlChildrenNode,1); return ((xmlChar *) 0); */ }
TEST(BucketRepositoryTest, createBuckets) { stk::ParallelMachine comm = MPI_COMM_WORLD; size_t spatialDim = 3; stk::mesh::MetaData stkMeshMetaData(spatialDim, stk::mesh::entity_rank_names()); stk::mesh::OrdinalVector parts; parts.push_back(stkMeshMetaData.universal_part().mesh_meta_data_ordinal()); parts.push_back(stkMeshMetaData.locally_owned_part().mesh_meta_data_ordinal()); parts.push_back(stkMeshMetaData.declare_part("part1").mesh_meta_data_ordinal()); parts.push_back(stkMeshMetaData.declare_part("part2").mesh_meta_data_ordinal()); stkMeshMetaData.commit(); stk::unit_test_util::BulkDataTester stkMeshBulkData(stkMeshMetaData, comm); stk::mesh::impl::EntityRepository entityRepository(stkMeshBulkData); stk::mesh::impl::BucketRepository &bucketRepository = stkMeshBulkData.my_get_bucket_repository(); stk::mesh::impl::Partition* partition = bucketRepository.get_or_create_partition(stk::topology::NODE_RANK, parts); size_t numNodes = 1024; for(size_t i=0; i<numNodes; i++) { stk::mesh::EntityId nodeID = i+1; stk::mesh::EntityKey nodeKey(stk::topology::NODE_RANK, nodeID); std::pair<stk::mesh::Entity,bool> createResult = entityRepository.internal_create_entity(nodeKey); stk::mesh::Entity node = createResult.first; bool aNewEntityWasCreated = createResult.second; EXPECT_TRUE(aNewEntityWasCreated); partition->add(node); } size_t expectedNumBuckets = 2; EXPECT_EQ(expectedNumBuckets, partition->num_buckets()); const stk::mesh::BucketVector & nodeBuckets = bucketRepository.buckets(stk::topology::NODE_RANK); EXPECT_EQ(expectedNumBuckets, nodeBuckets.size()); size_t expectedBucketSize = 512; EXPECT_EQ(expectedBucketSize, nodeBuckets[0]->size()); EXPECT_EQ(expectedBucketSize, nodeBuckets[1]->size()); stk::mesh::EntityId nodeID = numNodes+1; stk::mesh::EntityKey nodeKey(stk::topology::NODE_RANK, nodeID); std::pair<stk::mesh::Entity,bool> createResult = entityRepository.internal_create_entity(nodeKey); stk::mesh::Entity node = createResult.first; bool aNewEntityWasCreated = createResult.second; EXPECT_TRUE(aNewEntityWasCreated); partition->add(node); expectedNumBuckets = 3; const stk::mesh::BucketVector & newNodeBuckets = bucketRepository.buckets(stk::topology::NODE_RANK); EXPECT_EQ(expectedNumBuckets, newNodeBuckets.size()); EXPECT_EQ(expectedNumBuckets, partition->num_buckets()); EXPECT_EQ(expectedBucketSize, nodeBuckets[0]->size()); EXPECT_EQ(expectedBucketSize, nodeBuckets[1]->size()); expectedBucketSize = 1; EXPECT_EQ(expectedBucketSize, nodeBuckets[2]->size()); size_t expectedBucketCapacity = 512; EXPECT_EQ(expectedBucketCapacity, nodeBuckets[0]->capacity()); EXPECT_EQ(expectedBucketCapacity, nodeBuckets[1]->capacity()); EXPECT_EQ(expectedBucketCapacity, nodeBuckets[2]->capacity()); }