CNode CSelection::nodeAt(size_t i) { if (i >= mNodes.size()) { return CNode(); } return CNode(mNodes[i]); }
CNode CSelection::nodeAt(unsigned int i) { if (i >= mNodes.size()) { return CNode(); } return CNode(mNodes[i]); }
CNode CNode::childAt(size_t i) { if (mpNode->type != GUMBO_NODE_ELEMENT || i >= mpNode->v.element.children.length) { return CNode(); } return CNode((GumboNode*) mpNode->v.element.children.data[i]); }
void endRep() { // add 'tmp' here. nodes.push_back(CNode()); CNode *node = &nodes.back(); node->value = 0; // not used assert(!tmp.empty()); for(std::list<int>::iterator i = tmp.begin(); i != tmp.end(); ++i) { nodes.push_back(CNode()); nodes.back().value = *i; node->children.push_back(&nodes.back()); } root->children.push_back(node); tmp.clear(); inRep = false; }
// next alternative of the production. void reset() { if(root != NULL) update(); inRep = false; root = NULL; nodes.clear(); nodes.push_back(CNode()); root = &nodes.back(); }
void add(int value) { if(inRep) tmp.push_back(value); else { // add 'value' here. nodes.push_back(CNode()); nodes.back().value = value; root->children.push_back(&nodes.back()); } }
//--------------------------------------------------------------------------- // @function: // CTreeMapTest::Pnd // // @doc: // Constructor function for result tree // //--------------------------------------------------------------------------- CTreeMapTest::CNode* CTreeMapTest::Pnd ( IMemoryPool *pmp, ULONG *pul, DrgPnd *pdrgpnd, BOOL *fTestTrue ) { // The test passes 'true' to PrUnrank and the rehydrate function expects to find it here. GPOS_ASSERT(NULL != fTestTrue); GPOS_ASSERT(*fTestTrue && "Flag is expected to be true"); *fTestTrue = true; return GPOS_NEW(pmp) CNode(pmp, pul, pdrgpnd); }
////////////////////////////////////////////////////////////////////////////// // // - Sets up lights for the scene. // - Loads textures. // - Allocates OpenGL quadric for the "node" spheres. // - Originally I was going to read points from a text file, but with the // "Coma 2" party less than 2 weeks away, I opted to use this brute force // way of entering in the points. Yes, I know it's hacky. I should have // at least written a macro. // // RETURNS: true, On success. // false, On failure. // // THROWS: char * // ////////////////////////////////////////////////////////////////////////////// bool CComaLogo::init() { // Setup initial lights and positions m_ambientLight[0] = 0.2f; m_ambientLight[1] = 0.2f; m_ambientLight[2] = 0.2f; m_ambientLight[3] = 1.0f; m_diffuseLight[0] = 0.7f; m_diffuseLight[1] = 0.7f; m_diffuseLight[2] = 0.7f; m_diffuseLight[3] = 1.0f; m_lightPos[0] = fSHADOW_RANGE * 8; m_lightPos[1] = 60.0f; m_lightPos[2] = 10.0f; m_lightPos[3] = 1.0f; // Format: x, y, connecting nodes list... // Good luck, I did this on graph paper. // "O" // [[1 - 5]] m_vNodes.push_back(CNode(0,0,2,3)); m_vNodes.push_back(CNode(0,1,5)); m_vNodes.push_back(CNode(-1,1,2,4,5)); m_vNodes.push_back(CNode(-2,2,6,14)); m_vNodes.push_back(CNode(0,2,6,7)); // [[6 - 10]] m_vNodes.push_back(CNode(-1,2,3)); m_vNodes.push_back(CNode(1,2,8,19)); m_vNodes.push_back(CNode(1,3,5,9)); m_vNodes.push_back(CNode(2,4,10)); m_vNodes.push_back(CNode(3,3,11,12,13)); // [[11 - 15]] m_vNodes.push_back(CNode(2,3,8,9,12)); m_vNodes.push_back(CNode(2,2,7,8,19)); m_vNodes.push_back(CNode(4,4,28,61)); // to "M" m_vNodes.push_back(CNode(-3,3,15)); m_vNodes.push_back(CNode(-4,4,16,37)); // to "C" // [[16 - 20]] m_vNodes.push_back(CNode(-3,5,17)); m_vNodes.push_back(CNode(-2,6,18,21)); m_vNodes.push_back(CNode(-2,5,16,20)); m_vNodes.push_back(CNode(1,1,1,2,5)); m_vNodes.push_back(CNode(-1,5,17,21,22)); // [[21 - 25]] m_vNodes.push_back(CNode(-1,6,26,27)); m_vNodes.push_back(CNode(-2,4,14,24,23,16,18)); m_vNodes.push_back(CNode(-3,4,14,15,16)); m_vNodes.push_back(CNode(-2,3,4,14,25)); m_vNodes.push_back(CNode(-1,3,4,5,6,22)); // [[26 - 30]] m_vNodes.push_back(CNode(-1,7,17)); m_vNodes.push_back(CNode(0,6,20,26,33)); m_vNodes.push_back(CNode(3,5,9,29,30)); m_vNodes.push_back(CNode(3,4,9,10,13)); m_vNodes.push_back(CNode(2,5,9,31)); // [[31 - 35]] m_vNodes.push_back(CNode(1,5,9,27,33,32)); m_vNodes.push_back(CNode(2,6,28,30,33)); m_vNodes.push_back(CNode(1,6,34)); m_vNodes.push_back(CNode(1,7,27,32,35,36)); m_vNodes.push_back(CNode(0,8,26,36)); // [[36 - 40]] m_vNodes.push_back(CNode(0,7,26,27)); // "C" m_vNodes.push_back(CNode(LINK, LINK, 38, 59)); m_vNodes.push_back(CNode(-6,6,39,42,47)); m_vNodes.push_back(CNode(-5,7,40,41)); m_vNodes.push_back(CNode(-6,7,38,41,42)); // [[41 - 45]] m_vNodes.push_back(CNode(-6,8,42)); m_vNodes.push_back(CNode(-7,7,43,44)); m_vNodes.push_back(CNode(-7,6,38,44)); m_vNodes.push_back(CNode(-8,6,45,46,47)); m_vNodes.push_back(CNode(-9,5,46)); // [[46 - 50]] m_vNodes.push_back(CNode(-8,5,50)); m_vNodes.push_back(CNode(-7,5,46,43)); m_vNodes.push_back(CNode(-10,4,45)); m_vNodes.push_back(CNode(-9,4,45,48)); m_vNodes.push_back(CNode(-8,4,45,47,49,51,52,53)); // [[51 - 55]] m_vNodes.push_back(CNode(-9,3,48,49,52)); m_vNodes.push_back(CNode(-8,3)); m_vNodes.push_back(CNode(-7,3,52)); m_vNodes.push_back(CNode(-8,2,51,52,53)); m_vNodes.push_back(CNode(-7,2,53,54,56)); // [[56 - 60]] m_vNodes.push_back(CNode(-6,2,53,57,58,59)); m_vNodes.push_back(CNode(-7,1,54,55)); m_vNodes.push_back(CNode(-6,1,57)); m_vNodes.push_back(CNode(-5,1,58,60)); m_vNodes.push_back(CNode(-6,0,57,58)); // "M" // [[61 - 65]] m_vNodes.push_back(CNode(LINK,LINK,62)); m_vNodes.push_back(CNode(6,6,63,81)); m_vNodes.push_back(CNode(7,5,64,73)); m_vNodes.push_back(CNode(6,4,65)); m_vNodes.push_back(CNode(7,3,66,71,74)); // [[66 - 70]] m_vNodes.push_back(CNode(6,2,67)); m_vNodes.push_back(CNode(7,1,68,70,72,75)); m_vNodes.push_back(CNode(6,0,69)); m_vNodes.push_back(CNode(7,0,67)); m_vNodes.push_back(CNode(8,0,69,76)); // [[71 - 75]] m_vNodes.push_back(CNode(8,4,63,78,80)); m_vNodes.push_back(CNode(8,2,65,77,79)); m_vNodes.push_back(CNode(6,5,62,64)); m_vNodes.push_back(CNode(6,3,64,66)); m_vNodes.push_back(CNode(6,1,66,68)); // [[76 - 80]] m_vNodes.push_back(CNode(8,1,67,72)); m_vNodes.push_back(CNode(8,3,65,71)); m_vNodes.push_back(CNode(8,5,63,83)); m_vNodes.push_back(CNode(7,2,65,66,67)); m_vNodes.push_back(CNode(7,4,63,64,65)); // [[81 - 85]] m_vNodes.push_back(CNode(7,7,85,121)); // to "A" m_vNodes.push_back(CNode(7,6,62,63,81)); m_vNodes.push_back(CNode(8,6,63,81,82,84)); m_vNodes.push_back(CNode(8,7,81,85,86)); m_vNodes.push_back(CNode(8,8,86)); // [[86 - 90]] m_vNodes.push_back(CNode(9,7,83,91));//m_vNodes.push_back(CNode(9,7,83,92)); m_vNodes.push_back(CNode(9,6,83,86,88)); m_vNodes.push_back(CNode(9,5,83,89)); m_vNodes.push_back(CNode(10,4,90,96)); m_vNodes.push_back(CNode(10,5,88,91)); // [[91 - 95]] // Ack, two nodes not really needed for a good looking M m_vNodes.push_back(CNode(10,6,86,87,88,94)); m_vNodes.push_back(CNode(LINK,LINK)); // m_vNodes.push_back(CNode(10,7,93,91)); m_vNodes.push_back(CNode(LINK,LINK)); // m_vNodes.push_back(CNode(10,8,86,94)); m_vNodes.push_back(CNode(11,7,92,97,99)); m_vNodes.push_back(CNode(11,6,91,94,97)); // [[96 - 100]] m_vNodes.push_back(CNode(11,5,90,91,95)); m_vNodes.push_back(CNode(12,6,96,104)); m_vNodes.push_back(CNode(12,7,94,97,100)); m_vNodes.push_back(CNode(12,8,98)); m_vNodes.push_back(CNode(13,7,97,99,102)); // [[101 - 105]] m_vNodes.push_back(CNode(13,6,97,100)); m_vNodes.push_back(CNode(14,6,101,103)); m_vNodes.push_back(CNode(14,5,104,108)); m_vNodes.push_back(CNode(13,5,101,102,106)); m_vNodes.push_back(CNode(12,5,97,104)); // [[106 - 110]] m_vNodes.push_back(CNode(12,4,105,111)); m_vNodes.push_back(CNode(13,4,104,106)); m_vNodes.push_back(CNode(14,4,104,107,109)); m_vNodes.push_back(CNode(14,3,114)); m_vNodes.push_back(CNode(13,3,106,107,108,109,111)); // [[111 - 115]] m_vNodes.push_back(CNode(12,3,112)); m_vNodes.push_back(CNode(12,2,110,116,117)); m_vNodes.push_back(CNode(13,2,110,112,114)); m_vNodes.push_back(CNode(14,2,110)); m_vNodes.push_back(CNode(14,1,114,120)); // [[116 - 120]] m_vNodes.push_back(CNode(13,1,113,114,115)); m_vNodes.push_back(CNode(12,1,116,118)); m_vNodes.push_back(CNode(12,0,116,119)); m_vNodes.push_back(CNode(13,0,116,120)); m_vNodes.push_back(CNode(14,0,116)); // "A" // [[121 - 125]] m_vNodes.push_back(CNode(LINK,LINK,122)); m_vNodes.push_back(CNode(16,1,123,127)); m_vNodes.push_back(CNode(17,0,125,126)); m_vNodes.push_back(CNode(19,4,153,154)); m_vNodes.push_back(CNode(18,1)); // [[126 - 130]] m_vNodes.push_back(CNode(17,1,122,125)); m_vNodes.push_back(CNode(16,2,132)); m_vNodes.push_back(CNode(17,2,122,125,126,127,130,131,132)); m_vNodes.push_back(CNode(18,2,125,128)); m_vNodes.push_back(CNode(18,3,124,129,135)); // [[131 - 135]] m_vNodes.push_back(CNode(17,3,130,132,134)); m_vNodes.push_back(CNode(16,3,133)); m_vNodes.push_back(CNode(16,4,134,138)); m_vNodes.push_back(CNode(17,4,130,132,135,136,137,138)); m_vNodes.push_back(CNode(18,4,124)); // [[136 - 140]] m_vNodes.push_back(CNode(18,5,135,139)); m_vNodes.push_back(CNode(17,5,136)); m_vNodes.push_back(CNode(16,5,137)); m_vNodes.push_back(CNode(17,6,137,138,141)); m_vNodes.push_back(CNode(18,6,136,139,141)); // [[141 - 145]] m_vNodes.push_back(CNode(18,7,142)); m_vNodes.push_back(CNode(19,8,143,145)); m_vNodes.push_back(CNode(19,7,141,145)); m_vNodes.push_back(CNode(19,6,136,140,141,143)); m_vNodes.push_back(CNode(20,7,144,147)); // [[146 - 150]] m_vNodes.push_back(CNode(20,6,144,145,148)); m_vNodes.push_back(CNode(21,6,146,149)); m_vNodes.push_back(CNode(20,5,144,147)); m_vNodes.push_back(CNode(21,5,148,152)); m_vNodes.push_back(CNode(22,5,147,149,152)); // [[151 - 155]] m_vNodes.push_back(CNode(22,4,150,156)); m_vNodes.push_back(CNode(21,4,148,151,154,156)); m_vNodes.push_back(CNode(20,4,148,152,154)); m_vNodes.push_back(CNode(20,3,158,159)); m_vNodes.push_back(CNode(21,3,152,154,156)); // [[156 - 160]] m_vNodes.push_back(CNode(22,3,157)); m_vNodes.push_back(CNode(22,2,162)); m_vNodes.push_back(CNode(21,2,155,156,157,159,161)); m_vNodes.push_back(CNode(20,2,160)); m_vNodes.push_back(CNode(20,1,158,163)); // [[161 - 165]] m_vNodes.push_back(CNode(21,1,160)); m_vNodes.push_back(CNode(22,1,158,161,163)); m_vNodes.push_back(CNode(21,0,161)); // Now that node information is filled, translate the target node values // into x,y coordinates. // Loop through nodes. (Here is where an iterator comes in handy.) for ( itrNodeType itrNode = m_vNodes.begin(); itrNode < m_vNodes.end(); itrNode++) { // Loop through connections for the current node. for ( itrConnectType itrConnect = itrNode->m_vConnect.begin(); itrConnect < itrNode->m_vConnect.end(); itrConnect++) { // Set the connection coordinates. itrConnect->x = m_vNodes[itrConnect->m_nNode - 1].x; itrConnect->y = m_vNodes[itrConnect->m_nNode - 1].y; } } // Create a new quadric and set our pointer to it m_pQuadSphere = gluNewQuadric(); if (m_pQuadSphere == 0) throw "CComaLogo.init()\r\nNot enough memory to allocate m_pQuadSphere"; // Set options to how quadric behaves in OpenGL environment gluQuadricDrawStyle( m_pQuadSphere, GLU_FILL); gluQuadricNormals( m_pQuadSphere, GLU_SMOOTH); gluQuadricOrientation(m_pQuadSphere, GLU_OUTSIDE); gluQuadricTexture( m_pQuadSphere, GL_FALSE); // Load textures md::Cimage oImage; // Create a "media duke" image object // Load title image as an OpenGL texture. if (!m_pEnvInfo->oMedia.read("nodelogo.png", oImage)) throw "CComaLogo.init()\r\nCould not load nodelogo.png"; m_punTitle = new unsigned int; *m_punTitle = oImage.makeGLTexture(m_pEnvInfo->glWantMipmap,m_pEnvInfo->glWantLinear); if (*m_punTitle==-1) throw "CComaLogo.init()\r\nUnable to create texture for nodelogo.png"; oImage.destroy(); // Load background image as an OpenGL texture. if (!m_pEnvInfo->oMedia.read("coma2bg.png", oImage)) throw "CComaLogo.init()\r\nCould not load coma2bg.png"; m_punBGTexture = new unsigned int; *m_punBGTexture = oImage.makeGLTexture(m_pEnvInfo->glWantMipmap,m_pEnvInfo->glWantLinear); if (*m_punBGTexture==-1) throw "CComaLogo.init()\r\nUnable to create texture for coma2bg.png"; oImage.destroy(); // Load shadow image as an OpenGL texture. if (!m_pEnvInfo->oMedia.read("nodeshadow.png", oImage)) throw "CComaLogo.init()\r\nCould not load nodeshadow.png"; m_punBGShadow = new unsigned int; *m_punBGShadow = oImage.makeGLTexture(m_pEnvInfo->glWantMipmap,m_pEnvInfo->glWantLinear); if (*m_punBGShadow==-1) throw "CComaLogo.init()\r\nUnable to create texture for nodeshadow.png"; oImage.destroy(); return true; }
CNode CNode::parent() { return CNode(mpNode->parent); }
const CNode CConf::GetRootNode() const throw() { return CNode((CNodeImpl*)(m_pConfImpl->GetRootNode())); }