diff --git a/Geo/Cell.cpp b/Geo/Cell.cpp index 0b31ca2f58d77eb238763eb6a206dadc1040d941..322071f57f0fe5dfb2210ad64a13e4fb9229260e 100644 --- a/Geo/Cell.cpp +++ b/Geo/Cell.cpp @@ -39,6 +39,34 @@ bool equalVertices(const std::vector<MVertex*>& v1, int Cell::_globalNum = 0; +std::pair<Cell*, bool> Cell::createCell(MElement* element, int domain) +{ + Cell* cell = new Cell(); + cell->_dim = element->getDim(); + cell->_domain = domain; + cell->_combined = false; + cell->_immune = false; + cell->_num = 0; + + for(int i = 0; i < element->getNumPrimaryVertices(); i++) + cell->_v.push_back(element->getVertex(i)); + + return std::make_pair(cell, cell->_sortVertexIndices()); +} + +std::pair<Cell*, bool> Cell::createCell(Cell* parent, int i) +{ + Cell* cell = new Cell(); + cell->_dim = parent->getDim()-1; + cell->_domain = parent->getDomain(); + cell->_combined = false; + cell->_immune = false; + cell->_num = 0; + + parent->findBdElement(i, cell->_v); + return std::make_pair(cell, cell->_sortVertexIndices()); +} + Cell::Cell(MElement* element, int domain) { _dim = element->getDim(); @@ -65,16 +93,24 @@ Cell::Cell(Cell* parent, int i) _sortVertexIndices(); } -void Cell::_sortVertexIndices() +bool Cell::_sortVertexIndices() { std::map<MVertex*, int, MVertexLessThanNum> si; + bool noinsert = false; for(unsigned int i = 0; i < _v.size(); i++) - si[_v[i]] = i; + noinsert = (!si.insert(std::make_pair(_v[i], i)).second || noinsert); + + if(noinsert == true) { + Msg::Warning("The input mesh has degenerate elements, ignored"); + return false; + } std::map<MVertex*, int, MVertexLessThanNum>::iterator it; for(it = si.begin(); it != si.end(); it++) _si.push_back(it->second); + + return true; } inline int Cell::getSortedVertex(int vertex) const @@ -436,30 +472,30 @@ bool Cell::hasCoboundary(Cell* cell, bool orig) return false; } } -/* -void Cell::printBoundary(bool orig) + +void Cell::printBoundary() { - for(biter it = firstBoundary(orig); it != lastBoundary(orig); it++){ - printf("Boundary cell orientation: %d ", (*it).second); - Cell* cell2 = (*it).first; + for(biter it = firstBoundary(); it != lastBoundary(); it++){ + printf("Boundary cell orientation: %d ", it->second.get()); + Cell* cell2 = it->first; cell2->printCell(); } - if(firstBoundary(orig) == lastBoundary(orig)){ + if(firstBoundary() == lastBoundary()){ printf("Cell boundary is empty. \n"); } } -void Cell::printCoboundary(bool orig) +void Cell::printCoboundary() { - for(biter it = firstCoboundary(orig); it != lastCoboundary(orig); it++){ - printf("Coboundary cell orientation: %d, ", (*it).second); - Cell* cell2 = (*it).first; + for(biter it = firstCoboundary(); it != lastCoboundary(); it++){ + printf("Coboundary cell orientation: %d, ", it->second.get()); + Cell* cell2 = it->first; cell2->printCell(); - if(firstCoboundary(orig) == lastCoboundary(orig)){ + if(firstCoboundary() == lastCoboundary()){ printf("Cell coboundary is empty. \n"); } } - }*/ +} CombinedCell::CombinedCell(Cell* c1, Cell* c2, bool orMatch, bool co) { diff --git a/Geo/Cell.h b/Geo/Cell.h index a1db14df78bd7c82c8fd0aa26b0409fa8a0f6a60..a9b351287915372a01ddd3167d82e0f76f2f6039 100644 --- a/Geo/Cell.h +++ b/Geo/Cell.h @@ -56,6 +56,8 @@ class Cell { std::map<Cell*, BdInfo, Less_Cell> _bd; std::map<Cell*, BdInfo, Less_Cell> _cbd; + Cell() {} + private: char _dim; @@ -63,11 +65,13 @@ class Cell { // sorted vertices of this cell (used for ordering of the cells) std::vector<char> _si; - inline void _sortVertexIndices(); + inline bool _sortVertexIndices(); public: - Cell() {} + static std::pair<Cell*, bool> createCell(MElement* element, int domain); + static std::pair<Cell*, bool> createCell(Cell* parent, int i); + Cell(MElement* element, int domain); Cell(Cell* parent, int i); @@ -85,7 +89,7 @@ class Cell { void setImmune(bool immune) { _immune = immune; }; bool getImmune() const { return _immune; }; - int getNumSortedVertices() const { return _v.size(); } + int getNumSortedVertices() const { return _si.size(); } inline int getSortedVertex(int vertex) const; int getNumVertices() const { return _v.size(); } MVertex* getMeshVertex(int vertex) const { return _v.at(vertex); } @@ -182,8 +186,8 @@ class Cell { // print cell debug info virtual void printCell(); - //virtual void printBoundary(bool orig=false); - //virtual void printCoboundary(bool orig=false); + virtual void printBoundary(); + virtual void printCoboundary(); // tools for combined cells bool isCombined() const { return _combined; } diff --git a/Geo/CellComplex.cpp b/Geo/CellComplex.cpp index a728813f8cf0b9d3ccb5075232e6317e5f266e3b..fe38baf4dd3af61a225b26ba5b112bb16eddfe44 100644 --- a/Geo/CellComplex.cpp +++ b/Geo/CellComplex.cpp @@ -15,11 +15,15 @@ CellComplex::CellComplex(GModel* model, std::vector<MElement*>& nonsubdomainElements, std::vector<MElement*>& immuneElements, bool saveOriginalComplex) : - _model(model), _dim(0), _simplicial(true), _saveorig(saveOriginalComplex) + _model(model), _dim(0), _simplicial(true), _saveorig(saveOriginalComplex), + _relative(false) { _deleteCount = 0; _insertCells(subdomainElements, 1); + if(getSize(0) > 0) _relative = true; + _insertCells(domainElements, 0); + _removeCells(nonsubdomainElements, 1); _removeCells(nondomainElements, 0); _immunizeCells(immuneElements); @@ -50,7 +54,12 @@ bool CellComplex::_insertCells(std::vector<MElement*>& elements, } if(type == TYPE_QUA || type == TYPE_HEX) _simplicial = false; - Cell* cell = new Cell(element, domain); + std::pair<Cell*, bool> maybeCell = Cell::createCell(element, domain); + if(!maybeCell.second) { + delete maybeCell.first; + continue; + } + Cell* cell = maybeCell.first; std::pair<citer, bool> insert = _cells[cell->getDim()].insert(cell); if(!insert.second) { @@ -64,7 +73,12 @@ bool CellComplex::_insertCells(std::vector<MElement*>& elements, for(citer cit = firstCell(dim); cit != lastCell(dim); cit++){ Cell* cell = *cit; for(int i = 0; i < cell->getNumBdElements(); i++){ - Cell* newCell = new Cell(cell, i); + std::pair<Cell*, bool> maybeCell = Cell::createCell(cell, i); + if(!maybeCell.second) { + delete maybeCell.first; + continue; + } + Cell* newCell = maybeCell.first; std::pair<citer, bool> insert = _cells[newCell->getDim()].insert(newCell); if(!insert.second) { @@ -337,7 +351,7 @@ int CellComplex::coreduction(int dim, bool omit, return count; } -int CellComplex::reduceComplex(bool docombine, bool omit) +int CellComplex::reduceComplex(int combine, bool omit) { Msg::Debug("Cell Complex reduction:"); Msg::Debug(" %d volumes, %d faces, %d edges, and %d vertices", @@ -345,12 +359,12 @@ int CellComplex::reduceComplex(bool docombine, bool omit) if(!getSize(0)) return 0; int count = 0; + if(relative()) removeSubdomain(); std::vector<Cell*> empty; for(int i = 3; i > 0; i--) count = count + reduction(i, false, empty); if(omit){ - removeSubdomain(); std::vector<Cell*> newCells; while (getSize(getDim()) != 0){ @@ -374,11 +388,11 @@ int CellComplex::reduceComplex(bool docombine, bool omit) Msg::Debug(" %d volumes, %d faces, %d edges, and %d vertices", getSize(3), getSize(2), getSize(1), getSize(0)); - if(docombine) combine(3); + if(combine > 0) this->combine(3); reduction(2, false, empty); - if(docombine) combine(2); + if(combine > 0) this->combine(2); reduction(1, false, empty); - if(docombine) combine(1); + if(combine > 0) this->combine(1); Msg::Debug(" %d volumes, %d faces, %d edges, and %d vertices", getSize(3), getSize(2), getSize(1), getSize(0)); @@ -400,7 +414,18 @@ void CellComplex::removeSubdomain() _reduced = true; } -int CellComplex::coreduceComplex(bool docombine, bool omit) +void CellComplex::removeCells(int dim) +{ + if(dim < 0 || dim > 3) return; + std::vector<Cell*> toRemove; + for(citer cit = firstCell(dim); cit != lastCell(dim); ++cit){ + toRemove.push_back(*cit); + } + for(unsigned int i = 0; i < toRemove.size(); i++) removeCell(toRemove[i]); + _reduced = true; +} + +int CellComplex::coreduceComplex(int combine, bool omit) { Msg::Debug("Cell Complex coreduction:"); Msg::Debug(" %d volumes, %d faces, %d edges, and %d vertices", @@ -408,7 +433,7 @@ int CellComplex::coreduceComplex(bool docombine, bool omit) if(!getSize(0)) return 0; int count = 0; - removeSubdomain(); + if(relative()) removeSubdomain(); std::vector<Cell*> empty; for(int dim = 0; dim < 4; dim++){ citer cit = firstCell(dim); @@ -444,12 +469,13 @@ int CellComplex::coreduceComplex(bool docombine, bool omit) Msg::Debug(" %d volumes, %d faces, %d edges, and %d vertices", getSize(3), getSize(2), getSize(1), getSize(0)); - if(docombine) cocombine(0); + if(combine > 0) this->cocombine(0); coreduction(1, false, empty); - if(docombine) cocombine(1); + if(combine > 0) this->cocombine(1); coreduction(2, false, empty); - if(docombine) cocombine(2); + if(combine > 0) this->cocombine(2); coreduction(3, false, empty); + coherent(); Msg::Debug(" %d volumes, %d faces, %d edges, and %d vertices", getSize(3), getSize(2), getSize(1), getSize(0)); @@ -686,9 +712,9 @@ void CellComplex::printComplex(int dim) for (citer cit = firstCell(dim); cit != lastCell(dim); cit++){ Cell* cell = *cit; cell->printCell(); - //cell->printBoundary(); - //cell->printCoboundary(); - //printf("--- \n"); + cell->printBoundary(); + cell->printCoboundary(); + printf("--- \n"); } } diff --git a/Geo/CellComplex.h b/Geo/CellComplex.h index 326521e7bf47241528b9e1ac9cdcf3b3534c26bd..f3d8c0ac9f284eb86a18470f0111ad71a00a3fd6 100644 --- a/Geo/CellComplex.h +++ b/Geo/CellComplex.h @@ -38,12 +38,21 @@ class CellComplex std::vector<Cell*> _newcells; std::vector<Cell*> _removedcells; + // cell complex dimension int _dim; + + // cell are simplexes bool _simplicial; + + // save the original unreduced complex for another reduction run bool _saveorig; + // has a relative subdomain + bool _relative; + int _deleteCount; + // is the cell complex at reduced state bool _reduced; // for constructor @@ -76,8 +85,9 @@ class CellComplex GModel* getModel() const { return _model; } - int getDim() { return _dim; } - bool simplicial() { return _simplicial; } + int getDim() const { return _dim; } + bool simplicial() const { return _simplicial; } + bool relative() const { return _relative; } // get the number of certain dimensional cells int getSize(int dim, bool orig=false){ @@ -110,6 +120,9 @@ class CellComplex // remove cells in subdomain from this cell complex void removeSubdomain(); + // remove dim-dimensional cells from this cell complex + void removeCells(int dim); + // (co)reduction of this cell complex // removes (co)reduction pairs of cell of dimension dim and dim-1 int reduction(int dim, bool omit, std::vector<Cell*>& omittedCells); @@ -125,10 +138,12 @@ class CellComplex // belong to this cell complex bool coherent(); - // full (co)reduction of this cell complex (all dimensions, with combining) - // (with highest dimensional cell omitting?) - int reduceComplex(bool docombine=true, bool omit=true); - int coreduceComplex(bool docombine=true, bool omit=true); + // full (co)reduction of this cell complex (all dimensions) + // (combine = 1 -> with combining) + // (combine = 2 -> with combining and dual combining) + // (omit = true -> with highest dimensional cell omitting?) + int reduceComplex(int combine=1, bool omit=true); + int coreduceComplex(int combine=1, bool omit=true); bool isReduced() const { return _reduced; } diff --git a/Geo/Chain.h b/Geo/Chain.h index 5921b5589641c039446057fd5f308c1f938f1ccf..a1db553d08707313a0d2af57fb59dc1161e5d370 100644 --- a/Geo/Chain.h +++ b/Geo/Chain.h @@ -417,7 +417,7 @@ void Chain<C>::addElemChain(const ElemChain& c, C coeff) { if(coeff == 0) return; if(_dim != -1 && _dim != c.getDim()) { - Msg::Error("Cannot add elementrary d%-chain to %d-chain", + Msg::Error("Cannot add elementrary %d-chain to %d-chain", c.getDim(), _dim); return; } diff --git a/Geo/ChainComplex.cpp b/Geo/ChainComplex.cpp index bf57dcf797623f0900da4427ff5b192bc95d4a02..2d8fb36c989e8583c1c0a0452614ee542867e9bc 100644 --- a/Geo/ChainComplex.cpp +++ b/Geo/ChainComplex.cpp @@ -489,7 +489,7 @@ void ChainComplex::getBasisChain(std::map<Cell*, int, Less_Cell>& chain, } mpz_clear(elem); - if(deform && (dim == 1 || dim == 2) ) smoothenChain(chain); + if(deform && basis == 3 && (dim == 1 || dim == 2) ) smoothenChain(chain); } int ChainComplex::getBasisSize(int dim, int basis) diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp index 2450a74e37f3bf80653a2ac34be7ad91165a6480..79c482bdeee8dfbf068d490a78ffc1b20ac95e44 100644 --- a/Geo/GModel.cpp +++ b/Geo/GModel.cpp @@ -3204,6 +3204,7 @@ void GModel::computeHomology() itt != itp.second; itt++){ std::string type = itt->second.first; std::vector<int> dim = itt->second.second; + if(dim.empty()) for(int i = 0; i < 4; i++) dim.push_back(i); std::stringstream ss; for(unsigned int i = 0; i < dim.size(); i++) { @@ -3220,14 +3221,14 @@ void GModel::computeHomology() std::string dims = ss.str(); if(type == "Homology") { - homology->findHomologyBasis(); + homology->findHomologyBasis(dim); Msg::Info("Homology space basis chains to save: %s.", dims.c_str()); for(unsigned int i = 0; i < dim.size(); i++) if(dim.at(i) >= 0 && dim.at(i) <= getDim()) homology->addChainsToModel(dim.at(i)); } else if(type == "Cohomology") { - homology->findCohomologyBasis(); + homology->findCohomologyBasis(dim); Msg::Info("Cohomology space basis cochains to save: %s.", dims.c_str()); for(unsigned int i = 0; i < dim.size(); i++) if(dim.at(i) >= 0 && dim.at(i) <= getDim()) diff --git a/Geo/Homology.cpp b/Geo/Homology.cpp index 0a11ccd09a797f70d5b9e2f91f342c155e4f83db..a9db40d532232c597332285637a8e4d78e1435c9 100644 --- a/Geo/Homology.cpp +++ b/Geo/Homology.cpp @@ -19,11 +19,10 @@ Homology::Homology(GModel* model, std::vector<int> physicalSubdomain, std::vector<int> physicalImdomain, bool saveOrig, - bool combine, bool omit, bool smoothen) : + int combine, bool omit, bool smoothen) : _model(model), _domain(physicalDomain), _subdomain(physicalSubdomain), _imdomain(physicalImdomain), _saveOrig(saveOrig), - _combine(combine), _omit(omit), _smoothen(smoothen), _cellComplex(NULL), - _homologyComputed(false), _cohomologyComputed(false) + _combine(combine), _omit(omit), _smoothen(smoothen), _cellComplex(NULL) { _fileName = ""; @@ -45,6 +44,11 @@ Homology::Homology(GModel* model, _getEntities(_imdomain, _immuneEntities); } + for(unsigned int i = 0; i < 4; i++) { + _homologyComputed[i] = false; + _cohomologyComputed[i] = false; + _betti[i] = -1; + } } void Homology::_getEntities(const std::vector<int>& physicalGroups, @@ -119,26 +123,44 @@ void Homology::_createCellComplex() _cellComplex->getSize(1), _cellComplex->getSize(0)); } -void Homology::_deleteChains() +void Homology::_deleteChains(std::vector<int> dim) { - for(int j = 0; j < 4; j ++) { - for(unsigned int i = 0; i < _chains[j].size(); i++) { - delete _chains[j].at(i); - _chains[j].clear(); + if(dim.empty()) { + std::vector<int> alldim(4); + for(int i = 0; i < 4; i++) alldim[i] = i; + _deleteChains(alldim); + return; + } + + for(unsigned int j = 0; j < dim.size(); j ++) { + int d = dim.at(j); + if(d < 0 || d > 3) continue; + for(unsigned int i = 0; i < _chains[d].size(); i++) { + delete _chains[d].at(i); + _chains[d].clear(); } + _homologyComputed[d] = false; } - _homologyComputed = false; } -void Homology::_deleteCochains() +void Homology::_deleteCochains(std::vector<int> dim) { - for(int j = 0; j < 4; j ++) { - for(unsigned int i = 0; i < _cochains[j].size(); i++) { - delete _cochains[j].at(i); - _cochains[j].clear(); + if(dim.empty()) { + std::vector<int> alldim(4); + for(int i = 0; i < 4; i++) alldim[i] = i; + _deleteCochains(alldim); + return; + } + + for(unsigned int j = 0; j < dim.size(); j ++) { + int d = dim.at(j); + if(d < 0 || d > 3) continue; + for(unsigned int i = 0; i < _cochains[d].size(); i++) { + delete _cochains[d].at(i); + _cochains[d].clear(); } + _cohomologyComputed[d] = false; } - _cohomologyComputed = false; } Homology::~Homology() @@ -148,7 +170,7 @@ Homology::~Homology() _deleteCochains(); } -void Homology::findHomologyBasis() +void Homology::findHomologyBasis(std::vector<int> dim) { if(_cellComplex == NULL) _createCellComplex(); if(_cellComplex->isReduced()) _cellComplex->restoreComplex(); @@ -157,6 +179,14 @@ void Homology::findHomologyBasis() double t1 = Cpu(); int omitted = _cellComplex->reduceComplex(_combine, _omit); + if(!dim.empty() && _combine > 1) { + for(int i = 1; i <= 3; i++) { + if(!std::binary_search(dim.begin(), dim.end(), i)) { + _cellComplex->cocombine(i-1); + } + } + } + double t2 = Cpu(); Msg::StatusBar(2, true, "Done reducing cell complex (%g s)", t2 - t1); Msg::Info("%d volumes, %d faces, %d edges, and %d vertices", @@ -171,10 +201,9 @@ void Homology::findHomologyBasis() Msg::StatusBar(2, true, "Done computing homology space bases (%g s)", t2 - t1); std::string domain = _getDomainString(_domain, _subdomain); - _deleteChains(); - int HRank[4]; + _deleteChains(dim); for(int j = 0; j < 4; j++){ - HRank[j] = 0; + _betti[j] = 0; std::string dimension = ""; convert(j, dimension); for(int i = 1; i <= chainComplex.getBasisSize(j, 3); i++){ @@ -188,7 +217,7 @@ void Homology::findHomologyBasis() int torsion = chainComplex.getTorsion(j,i); if(!chain.empty()) { _createChain(chain, name, false); - HRank[j] = HRank[j] + 1; + _betti[j] = _betti[j] + 1; if(torsion != 1){ Msg::Warning("H_%d %d has torsion coefficient %d!", j, i, torsion); @@ -200,18 +229,26 @@ void Homology::findHomologyBasis() if(_fileName != "") writeBasisMSH(); Msg::Info("Ranks of domain %shomology spaces:", domain.c_str()); - Msg::Info("H_0 = %d", HRank[0]); - Msg::Info("H_1 = %d", HRank[1]); - Msg::Info("H_2 = %d", HRank[2]); - Msg::Info("H_3 = %d", HRank[3]); + Msg::Info("H_0 = %d", _betti[0]); + Msg::Info("H_1 = %d", _betti[1]); + Msg::Info("H_2 = %d", _betti[2]); + Msg::Info("H_3 = %d", _betti[3]); if(omitted != 0) Msg::Info("The computation of basis elements in the highest dimension was omitted"); Msg::StatusBar(2, false, "H_0: %d, H_1: %d, H_2: %d, H_3: %d", - HRank[0], HRank[1], HRank[2], HRank[3]); - _homologyComputed = true; + _betti[0], _betti[1], _betti[2], _betti[3]); + + if(dim.empty()) { + for(unsigned int i = 0; i < 4; i++) + _homologyComputed[i] = true; + } + else { + for(unsigned int i = 0; i < dim.size(); i++) + _homologyComputed[dim.at(i)] = true; + } } -void Homology::findCohomologyBasis() +void Homology::findCohomologyBasis(std::vector<int> dim) { if(_cellComplex == NULL) _createCellComplex(); if(_cellComplex->isReduced()) _cellComplex->restoreComplex(); @@ -219,11 +256,22 @@ void Homology::findCohomologyBasis() Msg::StatusBar(2, true, "Reducing cell complex..."); double t1 = Cpu(); + int omitted = _cellComplex->coreduceComplex(_combine, _omit); + + std::sort(dim.begin(), dim.end()); + if(!dim.empty() && _combine > 1) { + for(int i = 2; i >= 0; i--) { + if(!std::binary_search(dim.begin(), dim.end(), i)) { + _cellComplex->combine(i+1); + } + } + } + double t2 = Cpu(); Msg::StatusBar(2, true, "Done reducing cell complex (%g s)", t2 - t1); - Msg::Info("%d volumes, %d faces, %d edges and %d vertices", + Msg::Info("%d volumes, %d faces, %d edges, and %d vertices", _cellComplex->getSize(3), _cellComplex->getSize(2), _cellComplex->getSize(1), _cellComplex->getSize(0)); @@ -236,9 +284,8 @@ void Homology::findCohomologyBasis() Msg::StatusBar(2, true, "Done computing cohomology space bases (%g s)", t2- t1); std::string domain = _getDomainString(_domain, _subdomain); - _deleteCochains(); - int HRank[4]; - for(int i = 0; i < 4; i++) HRank[i] = 0; + _deleteCochains(dim); + for(int i = 0; i < 4; i++) _betti[i] = 0; for(int j = 3; j > -1; j--){ std::string dimension = ""; convert(j, dimension); @@ -254,7 +301,7 @@ void Homology::findCohomologyBasis() int torsion = chainComplex.getTorsion(j,i); if(!chain.empty()) { _createChain(chain, name, true); - HRank[j] = HRank[j] + 1; + _betti[j] = _betti[j] + 1; if(torsion != 1){ Msg::Warning("H^%d %d has torsion coefficient %d!", j, i, torsion); } @@ -265,21 +312,30 @@ void Homology::findCohomologyBasis() if(_fileName != "") writeBasisMSH(); Msg::Info("Ranks of domain %scohomology spaces:", domain.c_str()); - Msg::Info("H^0 = %d", HRank[0]); - Msg::Info("H^1 = %d", HRank[1]); - Msg::Info("H^2 = %d", HRank[2]); - Msg::Info("H^3 = %d", HRank[3]); + Msg::Info("H^0 = %d", _betti[0]); + Msg::Info("H^1 = %d", _betti[1]); + Msg::Info("H^2 = %d", _betti[2]); + Msg::Info("H^3 = %d", _betti[3]); if(omitted != 0) Msg::Info("The computation of basis elements in the highest dimension was omitted"); Msg::StatusBar(2, false, "H^0: %d, H^1: %d, H^2: %d, H^3: %d", - HRank[0], HRank[1], HRank[2], HRank[3]); - _cohomologyComputed = true; + _betti[0], _betti[1], _betti[2], _betti[3]); + + if(dim.empty()) { + for(unsigned int i = 0; i < 4; i++) + _cohomologyComputed[i] = true; + } + else { + for(unsigned int i = 0; i < dim.size(); i++) + _cohomologyComputed[dim.at(i)] = true; + } } void Homology::addChainsToModel(int dim, bool post, int physicalNumRequest) { int pgnum = -1; - if(!_homologyComputed) Msg::Warning("Homology is not computed"); + if(!_homologyComputed[dim]) + Msg::Warning("%d-Homology is not computed", dim); if(dim == -1) { for(int j = 0; j < 4; j++) { for(unsigned int i = 0; i < _chains[j].size(); i++) { @@ -301,7 +357,8 @@ void Homology::addChainsToModel(int dim, bool post, int physicalNumRequest) void Homology::addCochainsToModel(int dim, bool post, int physicalNumRequest) { int pgnum = -1; - if(!_cohomologyComputed) Msg::Warning("Cohomology is not computed"); + if(!_cohomologyComputed[dim]) + Msg::Warning("%d-Cohomology is not computed", dim); if(dim == -1) { for(int j = 0; j < 4; j++) { for(unsigned int i = 0; i < _cochains[j].size(); i++) { @@ -323,7 +380,7 @@ void Homology::addCochainsToModel(int dim, bool post, int physicalNumRequest) void Homology::getHomologyBasis(int dim, std::vector<Chain<int> >& hom) { if(dim < 0 || dim > 3) return; - if(!_homologyComputed) findHomologyBasis(); + if(!_homologyComputed[dim]) findHomologyBasis(); hom.resize(_chains[dim].size()); for(unsigned int i = 0; i < _chains[dim].size(); i++) @@ -333,7 +390,7 @@ void Homology::getHomologyBasis(int dim, std::vector<Chain<int> >& hom) void Homology::getCohomologyBasis(int dim, std::vector<Chain<int> >& coh) { if(dim < 0 || dim > 3) return; - if(!_cohomologyComputed) findCohomologyBasis(); + if(!_cohomologyComputed[dim]) findCohomologyBasis(); coh.resize(_cochains[dim].size()); for(unsigned int i = 0; i < _cochains[dim].size(); i++) @@ -343,11 +400,10 @@ void Homology::getCohomologyBasis(int dim, std::vector<Chain<int> >& coh) int Homology::betti(int dim) { if(dim < 0 || dim > 3) return 0; - if(_homologyComputed) return _chains[dim].size(); - if(_cohomologyComputed) return _cochains[dim].size(); + if(_betti[dim] != -1) return _betti[dim]; findHomologyBasis(); - return _chains[dim].size(); + return _betti[dim]; } int Homology::eulerCharacteristic() diff --git a/Geo/Homology.h b/Geo/Homology.h index 320b913f339ecc5b7f497ab26d5c94ff54414dea..0af68cbd80ef5d7619a7f91230f6515d89a2dcee 100644 --- a/Geo/Homology.h +++ b/Geo/Homology.h @@ -44,7 +44,7 @@ class Homology bool _saveOrig; // use cell combining - bool _combine; + int _combine; // use cell omit bool _omit; // use chain smoothning @@ -56,10 +56,11 @@ class Homology // cell complex of the domain CellComplex* _cellComplex; - bool _homologyComputed; - bool _cohomologyComputed; + bool _homologyComputed[4]; + bool _cohomologyComputed[4]; - // resulting chains + // resulting betti numbers and chains + int _betti[4]; std::vector<Chain<int>*> _chains[4]; std::vector<Chain<int>*> _cochains[4]; @@ -81,8 +82,8 @@ class Homology void _createChain(std::map<Cell*, int, Less_Cell>& preChain, std::string name, bool co); - void _deleteChains(); - void _deleteCochains(); + void _deleteChains(std::vector<int> dim=std::vector<int>()); + void _deleteCochains(std::vector<int> dim=std::vector<int>()); public: @@ -92,15 +93,17 @@ class Homology std::vector<int> physicalSubdomain, std::vector<int> physicalIm, bool saveOrig=true, - bool combine=true, bool omit=true, bool smoothen=true); + int combine=2, bool omit=true, bool smoothen=true); ~Homology(); GModel* getModel() const { return _model; } void setFileName(std::string fileName) { _fileName = fileName; } // find the bases of (co)homology spaces - void findHomologyBasis(); - void findCohomologyBasis(); + // if dim is empty, find 0-,1-,2-,3-(co)homology spaces bases + // otherwise only find those indicated in dim + void findHomologyBasis(std::vector<int> dim=std::vector<int>()); + void findCohomologyBasis(std::vector<int> dim=std::vector<int>()); // add chains to Gmsh model // dim: only add dim-chains if dim != -1 @@ -113,10 +116,10 @@ class Homology void getHomologyBasis(int dim, std::vector<Chain<int> >& hom); void getCohomologyBasis(int dim, std::vector<Chain<int> >& coh); - // get Betti number + // get a Betti number int betti(int dim); - // get Euler characteristic + // get the Euler characteristic int eulerCharacteristic(); // write the generators to a file diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 7e32b0d11f0df7ffbe5b1813f542373a668a3128..10de261d28ff6e1efe52679e7688048d263af082 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -1,9 +1,8 @@ -/* A Bison parser, made by GNU Bison 2.4.3. */ +/* A Bison parser, made by GNU Bison 2.5. */ -/* Skeleton implementation for Bison's Yacc-like parsers in C +/* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006, - 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -45,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.4.3" +#define YYBISON_VERSION "2.5" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -74,7 +73,7 @@ /* Copy the first part of user declarations. */ -/* Line 189 of yacc.c */ +/* Line 268 of yacc.c */ #line 1 "Gmsh.y" // Gmsh - Copyright (C) 1997-2012 C. Geuzaine, J.-F. Remacle @@ -167,8 +166,8 @@ struct doubleXstring{ -/* Line 189 of yacc.c */ -#line 172 "Gmsh.tab.cpp" +/* Line 268 of yacc.c */ +#line 171 "Gmsh.tab.cpp" /* Enabling traces. */ #ifndef YYDEBUG @@ -341,7 +340,7 @@ struct doubleXstring{ typedef union YYSTYPE { -/* Line 214 of yacc.c */ +/* Line 293 of yacc.c */ #line 92 "Gmsh.y" char *c; @@ -354,8 +353,8 @@ typedef union YYSTYPE -/* Line 214 of yacc.c */ -#line 359 "Gmsh.tab.cpp" +/* Line 293 of yacc.c */ +#line 358 "Gmsh.tab.cpp" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -366,8 +365,8 @@ typedef union YYSTYPE /* Copy the second part of user declarations. */ -/* Line 264 of yacc.c */ -#line 371 "Gmsh.tab.cpp" +/* Line 343 of yacc.c */ +#line 370 "Gmsh.tab.cpp" #ifdef short # undef short @@ -470,11 +469,11 @@ YYID (yyi) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # endif @@ -497,24 +496,24 @@ YYID (yyi) # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif -# if (defined __cplusplus && ! defined _STDLIB_H \ +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif @@ -543,23 +542,7 @@ union yyalloc ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (YYID (0)) -# endif -# endif +# define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of @@ -579,6 +562,26 @@ union yyalloc #endif +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ @@ -974,21 +977,21 @@ static const yytype_uint16 yyrline[] = 3158, 3162, 3166, 3185, 3198, 3201, 3217, 3220, 3233, 3236, 3242, 3245, 3252, 3308, 3378, 3383, 3450, 3486, 3495, 3538, 3563, 3590, 3634, 3657, 3680, 3683, 3692, 3696, 3706, 3741, - 3742, 3746, 3753, 3766, 3785, 3813, 3814, 3815, 3816, 3817, - 3818, 3819, 3820, 3821, 3828, 3829, 3830, 3831, 3832, 3833, - 3834, 3835, 3836, 3837, 3838, 3839, 3840, 3841, 3842, 3843, - 3844, 3845, 3846, 3847, 3848, 3849, 3850, 3851, 3852, 3853, - 3854, 3855, 3856, 3857, 3858, 3859, 3861, 3862, 3863, 3864, - 3865, 3866, 3867, 3868, 3869, 3870, 3871, 3872, 3873, 3874, - 3875, 3876, 3877, 3878, 3879, 3880, 3881, 3890, 3891, 3892, - 3893, 3894, 3895, 3896, 3900, 3920, 3939, 3957, 3969, 3986, - 4007, 4012, 4017, 4027, 4037, 4045, 4049, 4053, 4057, 4061, - 4068, 4072, 4076, 4080, 4087, 4092, 4099, 4104, 4108, 4113, - 4117, 4125, 4136, 4140, 4152, 4160, 4168, 4175, 4186, 4206, - 4210, 4214, 4218, 4222, 4240, 4258, 4276, 4294, 4304, 4314, - 4326, 4338, 4359, 4364, 4368, 4372, 4384, 4388, 4400, 4407, - 4417, 4421, 4436, 4441, 4448, 4452, 4465, 4473, 4484, 4488, - 4496, 4504, 4512, 4520, 4534, 4548, 4552 + 3742, 3746, 3751, 3762, 3779, 3807, 3808, 3809, 3810, 3811, + 3812, 3813, 3814, 3815, 3822, 3823, 3824, 3825, 3826, 3827, + 3828, 3829, 3830, 3831, 3832, 3833, 3834, 3835, 3836, 3837, + 3838, 3839, 3840, 3841, 3842, 3843, 3844, 3845, 3846, 3847, + 3848, 3849, 3850, 3851, 3852, 3853, 3855, 3856, 3857, 3858, + 3859, 3860, 3861, 3862, 3863, 3864, 3865, 3866, 3867, 3868, + 3869, 3870, 3871, 3872, 3873, 3874, 3875, 3884, 3885, 3886, + 3887, 3888, 3889, 3890, 3894, 3914, 3933, 3951, 3963, 3980, + 4001, 4006, 4011, 4021, 4031, 4039, 4043, 4047, 4051, 4055, + 4062, 4066, 4070, 4074, 4081, 4086, 4093, 4098, 4102, 4107, + 4111, 4119, 4130, 4134, 4146, 4154, 4162, 4169, 4180, 4200, + 4204, 4208, 4212, 4216, 4234, 4252, 4270, 4288, 4298, 4308, + 4320, 4332, 4353, 4358, 4362, 4366, 4378, 4382, 4394, 4401, + 4411, 4415, 4430, 4435, 4442, 4446, 4459, 4467, 4478, 4482, + 4490, 4498, 4506, 4514, 4528, 4542, 4546 }; #endif @@ -1165,8 +1168,8 @@ static const yytype_uint8 yyr2[] = 4, 6, 6, 4, 4, 4, 6 }; -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when YYTABLE doesn't specify something else to do. Zero +/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint16 yydefact[] = { @@ -1505,8 +1508,7 @@ static const yytype_int16 yypgoto[] = /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which - number is the opposite. If zero, do what YYDEFACT says. - If YYTABLE_NINF, syntax error. */ + number is the opposite. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -5 static const yytype_int16 yytable[] = { @@ -2270,6 +2272,12 @@ static const yytype_int16 yytable[] = 0, 0, 0, 355 }; +#define yypact_value_is_default(yystate) \ + ((yystate) == (-1103)) + +#define yytable_value_is_error(yytable_value) \ + YYID (0) + static const yytype_int16 yycheck[] = { 6, 1103, 208, 6, 6, 406, 407, 5, 7, 327, @@ -3219,7 +3227,6 @@ do \ { \ yychar = (Token); \ yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ @@ -3261,19 +3268,10 @@ while (YYID (0)) #endif -/* YY_LOCATION_PRINT -- Print the location on the stream. - This macro was not mandated originally: define only if we know - we won't break user code: when these are the locations we know. */ +/* This macro is provided for backward compatibility. */ #ifndef YY_LOCATION_PRINT -# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL -# define YY_LOCATION_PRINT(File, Loc) \ - fprintf (File, "%d.%d-%d.%d", \ - (Loc).first_line, (Loc).first_column, \ - (Loc).last_line, (Loc).last_column) -# else -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif @@ -3465,7 +3463,6 @@ int yydebug; # define YYMAXDEPTH 10000 #endif - #if YYERROR_VERBOSE @@ -3568,115 +3565,142 @@ yytnamerr (char *yyres, const char *yystr) } # endif -/* Copy into YYRESULT an error message about the unexpected token - YYCHAR while in state YYSTATE. Return the number of bytes copied, - including the terminating null byte. If YYRESULT is null, do not - copy anything; just return the number of bytes that would be - copied. As a special case, return 0 if an ordinary "syntax error" - message will do. Return YYSIZE_MAXIMUM if overflow occurs during - size calculation. */ -static YYSIZE_T -yysyntax_error (char *yyresult, int yystate, int yychar) -{ - int yyn = yypact[yystate]; +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. - if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) - return 0; - else - { - int yytype = YYTRANSLATE (yychar); - YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); - YYSIZE_T yysize = yysize0; - YYSIZE_T yysize1; - int yysize_overflow = 0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - int yyx; - -# if 0 - /* This is so xgettext sees the translatable formats that are - constructed on the fly. */ - YY_("syntax error, unexpected %s"); - YY_("syntax error, unexpected %s, expecting %s"); - YY_("syntax error, unexpected %s, expecting %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); -# endif - char *yyfmt; - char const *yyf; - static char const yyunexpected[] = "syntax error, unexpected %s"; - static char const yyexpecting[] = ", expecting %s"; - static char const yyor[] = " or %s"; - char yyformat[sizeof yyunexpected - + sizeof yyexpecting - 1 - + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) - * (sizeof yyor - 1))]; - char const *yyprefix = yyexpecting; - - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yycount = 1; - - yyarg[0] = yytname[yytype]; - yyfmt = yystpcpy (yyformat, yyunexpected); - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - yyformat[sizeof yyunexpected - 1] = '\0'; - break; - } - yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (0, yytname[yyx]); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; - yyfmt = yystpcpy (yyfmt, yyprefix); - yyprefix = yyor; - } + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = 0; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - Assume YYFAIL is not used. It's too flawed to consider. See + <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html> + for details. YYERROR is fine as it does not invoke this + function. + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } - yyf = YY_(yyformat); - yysize1 = yysize + yystrlen (yyf); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } - if (yysize_overflow) - return YYSIZE_MAXIMUM; + yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; - if (yyresult) - { - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - char *yyp = yyresult; - int yyi = 0; - while ((*yyp = *yyf) != '\0') - { - if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyf += 2; - } - else - { - yyp++; - yyf++; - } - } - } - return yysize; + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; } #endif /* YYERROR_VERBOSE */ - /*-----------------------------------------------. | Release the memory associated to this symbol. | @@ -3709,6 +3733,7 @@ yydestruct (yymsg, yytype, yyvaluep) } } + /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus @@ -3735,10 +3760,9 @@ YYSTYPE yylval; int yynerrs; - -/*-------------------------. -| yyparse or yypush_parse. | -`-------------------------*/ +/*----------. +| yyparse. | +`----------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ @@ -3762,8 +3786,6 @@ yyparse () #endif #endif { - - int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; @@ -3918,7 +3940,7 @@ yybackup: /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) + if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ @@ -3949,8 +3971,8 @@ yybackup: yyn = yytable[yyn]; if (yyn <= 0) { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; + if (yytable_value_is_error (yyn)) + goto yyerrlab; yyn = -yyn; goto yyreduce; } @@ -4005,171 +4027,171 @@ yyreduce: { case 3: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 164 "Gmsh.y" - { yyerrok; return 1; ;} + { yyerrok; return 1; } break; case 6: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 175 "Gmsh.y" - { return 1; ;} + { return 1; } break; case 7: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 176 "Gmsh.y" - { return 1; ;} + { return 1; } break; case 8: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 177 "Gmsh.y" - { return 1; ;} + { return 1; } break; case 9: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 178 "Gmsh.y" - { return 1; ;} + { return 1; } break; case 10: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 179 "Gmsh.y" - { List_Delete((yyvsp[(1) - (1)].l)); return 1; ;} + { List_Delete((yyvsp[(1) - (1)].l)); return 1; } break; case 11: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 180 "Gmsh.y" - { return 1; ;} + { return 1; } break; case 12: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 181 "Gmsh.y" - { return 1; ;} + { return 1; } break; case 13: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 182 "Gmsh.y" - { return 1; ;} + { return 1; } break; case 14: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 183 "Gmsh.y" - { List_Delete((yyvsp[(1) - (1)].l)); return 1; ;} + { List_Delete((yyvsp[(1) - (1)].l)); return 1; } break; case 15: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 184 "Gmsh.y" - { return 1; ;} + { return 1; } break; case 16: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 185 "Gmsh.y" - { return 1; ;} + { return 1; } break; case 17: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 186 "Gmsh.y" - { return 1; ;} + { return 1; } break; case 18: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 187 "Gmsh.y" - { return 1; ;} + { return 1; } break; case 19: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 188 "Gmsh.y" - { return 1; ;} + { return 1; } break; case 20: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 189 "Gmsh.y" - { return 1; ;} + { return 1; } break; case 21: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 190 "Gmsh.y" - { return 1; ;} + { return 1; } break; case 22: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 191 "Gmsh.y" - { return 1; ;} + { return 1; } break; case 23: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 196 "Gmsh.y" { (yyval.c) = (char*)"w"; - ;} + } break; case 24: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 200 "Gmsh.y" { (yyval.c) = (char*)"a"; - ;} + } break; case 25: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 207 "Gmsh.y" { Msg::Direct((yyvsp[(3) - (5)].c)); Free((yyvsp[(3) - (5)].c)); - ;} + } break; case 26: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 212 "Gmsh.y" { Msg::Error((yyvsp[(3) - (5)].c)); Free((yyvsp[(3) - (5)].c)); - ;} + } break; case 27: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 217 "Gmsh.y" { std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(6) - (7)].c)); @@ -4183,12 +4205,12 @@ yyreduce: } Free((yyvsp[(3) - (7)].c)); Free((yyvsp[(6) - (7)].c)); - ;} + } break; case 28: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 231 "Gmsh.y" { char tmpstring[5000]; @@ -4201,12 +4223,12 @@ yyreduce: Msg::Direct(tmpstring); Free((yyvsp[(3) - (7)].c)); List_Delete((yyvsp[(5) - (7)].l)); - ;} + } break; case 29: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 244 "Gmsh.y" { char tmpstring[5000]; @@ -4219,12 +4241,12 @@ yyreduce: Msg::Error(tmpstring); Free((yyvsp[(3) - (7)].c)); List_Delete((yyvsp[(5) - (7)].l)); - ;} + } break; case 30: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 257 "Gmsh.y" { char tmpstring[5000]; @@ -4247,12 +4269,12 @@ yyreduce: Free((yyvsp[(3) - (9)].c)); Free((yyvsp[(8) - (9)].c)); List_Delete((yyvsp[(5) - (9)].l)); - ;} + } break; case 31: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 285 "Gmsh.y" { #if defined(HAVE_POST) @@ -4266,12 +4288,12 @@ yyreduce: delete ViewData; #endif Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(2) - (6)].c)); - ;} + } break; case 32: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 299 "Gmsh.y" { #if defined(HAVE_POST) @@ -4282,12 +4304,12 @@ yyreduce: } #endif Free((yyvsp[(2) - (6)].c)); - ;} + } break; case 33: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 310 "Gmsh.y" { #if defined(HAVE_POST) @@ -4298,51 +4320,51 @@ yyreduce: } #endif Free((yyvsp[(2) - (6)].c)); - ;} + } break; case 34: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 324 "Gmsh.y" { #if defined(HAVE_POST) ViewData = new PViewDataList(); #endif - ;} + } break; case 40: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 338 "Gmsh.y" - { ViewCoord.push_back((yyvsp[(1) - (1)].d)); ;} + { ViewCoord.push_back((yyvsp[(1) - (1)].d)); } break; case 41: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 340 "Gmsh.y" - { ViewCoord.push_back((yyvsp[(3) - (3)].d)); ;} + { ViewCoord.push_back((yyvsp[(3) - (3)].d)); } break; case 42: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 345 "Gmsh.y" - { if(ViewValueList) ViewValueList->push_back((yyvsp[(1) - (1)].d)); ;} + { if(ViewValueList) ViewValueList->push_back((yyvsp[(1) - (1)].d)); } break; case 43: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 347 "Gmsh.y" - { if(ViewValueList) ViewValueList->push_back((yyvsp[(3) - (3)].d)); ;} + { if(ViewValueList) ViewValueList->push_back((yyvsp[(3) - (3)].d)); } break; case 44: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 352 "Gmsh.y" { #if defined(HAVE_POST) @@ -4446,12 +4468,12 @@ yyreduce: #endif ViewCoord.clear(); Free((yyvsp[(1) - (1)].c)); - ;} + } break; case 45: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 456 "Gmsh.y" { #if defined(HAVE_POST) @@ -4461,47 +4483,47 @@ yyreduce: ViewValueList->push_back(ViewCoord[3 * j + i]); } #endif - ;} + } break; case 46: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 466 "Gmsh.y" { #if defined(HAVE_POST) if(ViewValueList) (*ViewNumList)++; #endif - ;} + } break; case 47: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 475 "Gmsh.y" { #if defined(HAVE_POST) for(int i = 0; i < (int)strlen((yyvsp[(1) - (1)].c)) + 1; i++) ViewData->T2C.push_back((yyvsp[(1) - (1)].c)[i]); #endif Free((yyvsp[(1) - (1)].c)); - ;} + } break; case 48: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 482 "Gmsh.y" { #if defined(HAVE_POST) for(int i = 0; i < (int)strlen((yyvsp[(3) - (3)].c)) + 1; i++) ViewData->T2C.push_back((yyvsp[(3) - (3)].c)[i]); #endif Free((yyvsp[(3) - (3)].c)); - ;} + } break; case 49: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 492 "Gmsh.y" { #if defined(HAVE_POST) @@ -4510,47 +4532,47 @@ yyreduce: ViewData->T2D.push_back((yyvsp[(7) - (8)].d)); ViewData->T2D.push_back(ViewData->T2C.size()); #endif - ;} + } break; case 50: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 501 "Gmsh.y" { #if defined(HAVE_POST) ViewData->NbT2++; #endif - ;} + } break; case 51: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 510 "Gmsh.y" { #if defined(HAVE_POST) for(int i = 0; i < (int)strlen((yyvsp[(1) - (1)].c)) + 1; i++) ViewData->T3C.push_back((yyvsp[(1) - (1)].c)[i]); #endif Free((yyvsp[(1) - (1)].c)); - ;} + } break; case 52: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 517 "Gmsh.y" { #if defined(HAVE_POST) for(int i = 0; i < (int)strlen((yyvsp[(3) - (3)].c)) + 1; i++) ViewData->T3C.push_back((yyvsp[(3) - (3)].c)[i]); #endif Free((yyvsp[(3) - (3)].c)); - ;} + } break; case 53: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 527 "Gmsh.y" { #if defined(HAVE_POST) @@ -4558,23 +4580,23 @@ yyreduce: ViewData->T3D.push_back((yyvsp[(7) - (10)].d)); ViewData->T3D.push_back((yyvsp[(9) - (10)].d)); ViewData->T3D.push_back(ViewData->T3C.size()); #endif - ;} + } break; case 54: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 535 "Gmsh.y" { #if defined(HAVE_POST) ViewData->NbT3++; #endif - ;} + } break; case 55: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 545 "Gmsh.y" { #if defined(HAVE_POST) @@ -4590,12 +4612,12 @@ yyreduce: ViewData->setInterpolationMatrices(type, ListOfListOfDouble2Matrix((yyvsp[(3) - (8)].l)), ListOfListOfDouble2Matrix((yyvsp[(6) - (8)].l))); #endif - ;} + } break; case 56: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 564 "Gmsh.y" { #if defined(HAVE_POST) @@ -4611,80 +4633,80 @@ yyreduce: ListOfListOfDouble2Matrix((yyvsp[(9) - (14)].l)), ListOfListOfDouble2Matrix((yyvsp[(12) - (14)].l))); #endif - ;} + } break; case 57: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 583 "Gmsh.y" { #if defined(HAVE_POST) ViewValueList = &ViewData->Time; #endif - ;} + } break; case 58: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 589 "Gmsh.y" { - ;} + } break; case 59: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 596 "Gmsh.y" - { (yyval.i) = 0; ;} + { (yyval.i) = 0; } break; case 60: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 597 "Gmsh.y" - { (yyval.i) = 1; ;} + { (yyval.i) = 1; } break; case 61: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 598 "Gmsh.y" - { (yyval.i) = 2; ;} + { (yyval.i) = 2; } break; case 62: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 599 "Gmsh.y" - { (yyval.i) = 3; ;} + { (yyval.i) = 3; } break; case 63: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 600 "Gmsh.y" - { (yyval.i) = 4; ;} + { (yyval.i) = 4; } break; case 64: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 604 "Gmsh.y" - { (yyval.i) = 1; ;} + { (yyval.i) = 1; } break; case 65: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 605 "Gmsh.y" - { (yyval.i) = -1; ;} + { (yyval.i) = -1; } break; case 67: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 614 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c)) && (yyvsp[(2) - (4)].i) && List_Nbr((yyvsp[(3) - (4)].l)) == 1){ @@ -4744,12 +4766,12 @@ yyreduce: } Free((yyvsp[(1) - (4)].c)); List_Delete((yyvsp[(3) - (4)].l)); - ;} + } break; case 68: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 677 "Gmsh.y" { gmsh_yysymbol &s(gmsh_yysymbols[(yyvsp[(1) - (6)].c)]); @@ -4778,12 +4800,12 @@ yyreduce: } Free((yyvsp[(1) - (6)].c)); List_Delete((yyvsp[(5) - (6)].l)); - ;} + } break; case 69: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 707 "Gmsh.y" { int index = (int)(yyvsp[(3) - (7)].d); @@ -4816,12 +4838,12 @@ yyreduce: yymsg(0, "Variable '%s' is not a list", (yyvsp[(1) - (7)].c)); } Free((yyvsp[(1) - (7)].c)); - ;} + } break; case 70: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 740 "Gmsh.y" { if(List_Nbr((yyvsp[(4) - (9)].l)) != List_Nbr((yyvsp[(8) - (9)].l))){ @@ -4867,12 +4889,12 @@ yyreduce: Free((yyvsp[(1) - (9)].c)); List_Delete((yyvsp[(4) - (9)].l)); List_Delete((yyvsp[(8) - (9)].l)); - ;} + } break; case 71: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 786 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) @@ -4887,12 +4909,12 @@ yyreduce: yymsg(0, "Variable '%s' is a list", (yyvsp[(1) - (3)].c)); } Free((yyvsp[(1) - (3)].c)); - ;} + } break; case 72: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 801 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) @@ -4908,23 +4930,23 @@ yyreduce: yymsg(0, "Variable '%s' is not a list", (yyvsp[(1) - (6)].c)); } Free((yyvsp[(1) - (6)].c)); - ;} + } break; case 73: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 817 "Gmsh.y" { gmsh_yystringsymbols[(yyvsp[(1) - (4)].c)] = std::string((yyvsp[(3) - (4)].c)); Free((yyvsp[(1) - (4)].c)); Free((yyvsp[(3) - (4)].c)); - ;} + } break; case 74: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 826 "Gmsh.y" { std::string tmp((yyvsp[(5) - (6)].c)); @@ -4935,7 +4957,7 @@ yyreduce: case 75: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 832 "Gmsh.y" { std::string tmp((yyvsp[(8) - (9)].c)); @@ -4946,7 +4968,7 @@ yyreduce: case 76: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 841 "Gmsh.y" { double d = 0.; @@ -4964,12 +4986,12 @@ yyreduce: NumberOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (6)].c), 0, (yyvsp[(3) - (6)].c), d); } Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(3) - (6)].c)); - ;} + } break; case 77: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 859 "Gmsh.y" { double d = 0.; @@ -4987,12 +5009,12 @@ yyreduce: NumberOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (9)].c), (int)(yyvsp[(3) - (9)].d), (yyvsp[(6) - (9)].c), d); } Free((yyvsp[(1) - (9)].c)); Free((yyvsp[(6) - (9)].c)); - ;} + } break; case 78: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 877 "Gmsh.y" { double d = 0.; @@ -5001,12 +5023,12 @@ yyreduce: NumberOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (5)].c), 0, (yyvsp[(3) - (5)].c), d); } Free((yyvsp[(1) - (5)].c)); Free((yyvsp[(3) - (5)].c)); - ;} + } break; case 79: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 886 "Gmsh.y" { double d = 0.; @@ -5015,32 +5037,32 @@ yyreduce: NumberOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (8)].c), (int)(yyvsp[(3) - (8)].d), (yyvsp[(6) - (8)].c), d); } Free((yyvsp[(1) - (8)].c)); Free((yyvsp[(6) - (8)].c)); - ;} + } break; case 80: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 898 "Gmsh.y" { ColorOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (8)].c), 0, (yyvsp[(5) - (8)].c), (yyvsp[(7) - (8)].u)); Free((yyvsp[(1) - (8)].c)); Free((yyvsp[(5) - (8)].c)); - ;} + } break; case 81: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 903 "Gmsh.y" { ColorOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (11)].c), (int)(yyvsp[(3) - (11)].d), (yyvsp[(8) - (11)].c), (yyvsp[(10) - (11)].u)); Free((yyvsp[(1) - (11)].c)); Free((yyvsp[(8) - (11)].c)); - ;} + } break; case 82: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 911 "Gmsh.y" { GmshColorTable *ct = GetColorTable(0); @@ -5060,12 +5082,12 @@ yyreduce: } Free((yyvsp[(1) - (6)].c)); List_Delete((yyvsp[(5) - (6)].l)); - ;} + } break; case 83: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 931 "Gmsh.y" { GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (9)].d)); @@ -5085,12 +5107,12 @@ yyreduce: } Free((yyvsp[(1) - (9)].c)); List_Delete((yyvsp[(8) - (9)].l)); - ;} + } break; case 84: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 954 "Gmsh.y" { #if defined(HAVE_MESH) @@ -5101,12 +5123,12 @@ yyreduce: else yymsg(0, "Unknown command %s Field", (yyvsp[(1) - (5)].c)); #endif - ;} + } break; case 85: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 965 "Gmsh.y" { #if defined(HAVE_MESH) @@ -5114,12 +5136,12 @@ yyreduce: yymsg(0, "Cannot create field %i of type '%s'", (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c)); #endif Free((yyvsp[(6) - (7)].c)); - ;} + } break; case 86: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 973 "Gmsh.y" { #if defined(HAVE_MESH) @@ -5141,12 +5163,12 @@ yyreduce: yymsg(0, "No field with id %i", (int)(yyvsp[(3) - (9)].d)); #endif Free((yyvsp[(6) - (9)].c)); - ;} + } break; case 87: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 995 "Gmsh.y" { #if defined(HAVE_MESH) @@ -5169,12 +5191,12 @@ yyreduce: #endif Free((yyvsp[(6) - (9)].c)); Free((yyvsp[(8) - (9)].c)); - ;} + } break; case 88: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1018 "Gmsh.y" { #if defined(HAVE_MESH) @@ -5200,12 +5222,12 @@ yyreduce: #endif Free((yyvsp[(6) - (11)].c)); List_Delete((yyvsp[(9) - (11)].l)); - ;} + } break; case 89: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1044 "Gmsh.y" { #if defined(HAVE_MESH) @@ -5223,12 +5245,12 @@ yyreduce: yymsg(0, "No field with id %i", (int)(yyvsp[(3) - (7)].d)); #endif Free((yyvsp[(6) - (7)].c)); - ;} + } break; case 90: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1065 "Gmsh.y" { #if defined(HAVE_PLUGINS) @@ -5240,12 +5262,12 @@ yyreduce: } #endif Free((yyvsp[(3) - (9)].c)); Free((yyvsp[(6) - (9)].c)); - ;} + } break; case 91: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1077 "Gmsh.y" { #if defined(HAVE_PLUGINS) @@ -5257,12 +5279,12 @@ yyreduce: } #endif Free((yyvsp[(3) - (9)].c)); Free((yyvsp[(6) - (9)].c)); Free((yyvsp[(8) - (9)].c)); - ;} + } break; case 95: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1095 "Gmsh.y" { std::string key((yyvsp[(3) - (3)].c)); @@ -5273,12 +5295,12 @@ yyreduce: gmsh_yysymbols[key].value = val; } Free((yyvsp[(3) - (3)].c)); - ;} + } break; case 96: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1106 "Gmsh.y" { std::string key((yyvsp[(3) - (5)].c)); @@ -5289,19 +5311,19 @@ yyreduce: gmsh_yysymbols[key].value = val; } Free((yyvsp[(3) - (5)].c)); - ;} + } break; case 97: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1117 "Gmsh.y" - { floatOptions.clear(); charOptions.clear(); ;} + { floatOptions.clear(); charOptions.clear(); } break; case 98: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1119 "Gmsh.y" { std::string key((yyvsp[(3) - (9)].c)); @@ -5310,33 +5332,33 @@ yyreduce: Msg::ExchangeOnelabParameter(key, val, floatOptions, charOptions); gmsh_yysymbols[key].value = val; } - ;} + } break; case 99: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1131 "Gmsh.y" { (yyval.l) = List_Create(20,20,sizeof(doubleXstring)); doubleXstring v = {(yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].c)}; List_Add((yyval.l), &v); - ;} + } break; case 100: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1137 "Gmsh.y" { doubleXstring v = {(yyvsp[(3) - (5)].d), (yyvsp[(5) - (5)].c)}; List_Add((yyval.l), &v); - ;} + } break; case 103: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1149 "Gmsh.y" { std::string key((yyvsp[(2) - (3)].c)); @@ -5347,12 +5369,12 @@ yyreduce: } Free((yyvsp[(2) - (3)].c)); List_Delete((yyvsp[(3) - (3)].l)); - ;} + } break; case 104: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1160 "Gmsh.y" { std::string key((yyvsp[(2) - (5)].c)); @@ -5366,12 +5388,12 @@ yyreduce: for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++) Free(((doubleXstring*)List_Pointer((yyvsp[(4) - (5)].l), i))->s); List_Delete((yyvsp[(4) - (5)].l)); - ;} + } break; case 105: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1175 "Gmsh.y" { std::string key((yyvsp[(2) - (3)].c)); @@ -5379,42 +5401,42 @@ yyreduce: charOptions[key].push_back(val); Free((yyvsp[(2) - (3)].c)); Free((yyvsp[(3) - (3)].c)); - ;} + } break; case 106: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1188 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(1) - (1)].d); - ;} + } break; case 107: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1192 "Gmsh.y" { (yyval.i) = GModel::current()->setPhysicalName (std::string((yyvsp[(1) - (1)].c)), curPhysDim, ++GModel::current()->getGEOInternals()->MaxPhysicalNum); Free((yyvsp[(1) - (1)].c)); - ;} + } break; case 108: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1202 "Gmsh.y" { (yyval.l) = 0; - ;} + } break; case 109: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1206 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(Vertex*)); @@ -5424,30 +5446,30 @@ yyreduce: else{ List_Add((yyval.l), &v); } - ;} + } break; case 110: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1218 "Gmsh.y" { for(int i = 0; i < 4; i++) (yyval.v)[i] = 0.; - ;} + } break; case 111: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1222 "Gmsh.y" { for(int i = 0; i < 4; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i]; - ;} + } break; case 112: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1232 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); @@ -5470,21 +5492,21 @@ yyreduce: } (yyval.s).Type = MSH_POINT; (yyval.s).Num = num; - ;} + } break; case 113: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1255 "Gmsh.y" { curPhysDim = 0; - ;} + } break; case 114: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1259 "Gmsh.y" { int num = (int)(yyvsp[(5) - (9)].i); @@ -5500,12 +5522,12 @@ yyreduce: List_Delete((yyvsp[(8) - (9)].l)); (yyval.s).Type = MSH_PHYSICAL_POINT; (yyval.s).Num = num; - ;} + } break; case 115: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1275 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ @@ -5524,12 +5546,12 @@ yyreduce: // dummy values (yyval.s).Type = 0; (yyval.s).Num = 0; - ;} + } break; case 116: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1297 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); @@ -5547,12 +5569,12 @@ yyreduce: List_Delete((yyvsp[(6) - (7)].l)); (yyval.s).Type = MSH_SEGM_LINE; (yyval.s).Num = num; - ;} + } break; case 117: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1315 "Gmsh.y" { for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ @@ -5573,12 +5595,12 @@ yyreduce: } } } - ;} + } break; case 118: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1336 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); @@ -5596,12 +5618,12 @@ yyreduce: List_Delete((yyvsp[(6) - (7)].l)); (yyval.s).Type = MSH_SEGM_SPLN; (yyval.s).Num = num; - ;} + } break; case 119: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1354 "Gmsh.y" { int num = (int)(yyvsp[(3) - (8)].d); @@ -5631,12 +5653,12 @@ yyreduce: List_Delete((yyvsp[(6) - (8)].l)); (yyval.s).Type = MSH_SEGM_CIRC; (yyval.s).Num = num; - ;} + } break; case 120: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1384 "Gmsh.y" { int num = (int)(yyvsp[(3) - (8)].d); @@ -5666,12 +5688,12 @@ yyreduce: List_Delete((yyvsp[(6) - (8)].l)); (yyval.s).Type = MSH_SEGM_ELLI; (yyval.s).Num = num; - ;} + } break; case 121: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1414 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); @@ -5689,12 +5711,12 @@ yyreduce: List_Delete((yyvsp[(6) - (7)].l)); (yyval.s).Type = MSH_SEGM_BSPLN; (yyval.s).Num = num; - ;} + } break; case 122: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1432 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); @@ -5712,12 +5734,12 @@ yyreduce: List_Delete((yyvsp[(6) - (7)].l)); (yyval.s).Type = MSH_SEGM_BEZIER; (yyval.s).Num = num; - ;} + } break; case 123: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1450 "Gmsh.y" { int num = (int)(yyvsp[(3) - (11)].d); @@ -5743,12 +5765,12 @@ yyreduce: List_Delete((yyvsp[(8) - (11)].l)); (yyval.s).Type = MSH_SEGM_NURBS; (yyval.s).Num = num; - ;} + } break; case 124: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1476 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); @@ -5766,12 +5788,12 @@ yyreduce: Free((yyvsp[(2) - (8)].c)); (yyval.s).Type = MSH_SEGM_LOOP; (yyval.s).Num = num; - ;} + } break; case 125: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1494 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); @@ -5789,21 +5811,21 @@ yyreduce: List_Delete((yyvsp[(7) - (8)].l)); (yyval.s).Type = MSH_SEGM_COMPOUND; (yyval.s).Num = num; - ;} + } break; case 126: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1512 "Gmsh.y" { curPhysDim = 1; - ;} + } break; case 127: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1516 "Gmsh.y" { int num = (int)(yyvsp[(5) - (9)].i); @@ -5819,12 +5841,12 @@ yyreduce: List_Delete((yyvsp[(8) - (9)].l)); (yyval.s).Type = MSH_PHYSICAL_LINE; (yyval.s).Num = num; - ;} + } break; case 128: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1535 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); @@ -5842,12 +5864,12 @@ yyreduce: List_Delete((yyvsp[(7) - (8)].l)); (yyval.s).Type = MSH_SURF_PLAN; (yyval.s).Num = num; - ;} + } break; case 129: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1553 "Gmsh.y" { int num = (int)(yyvsp[(4) - (9)].d), type = 0; @@ -5886,46 +5908,46 @@ yyreduce: List_Delete((yyvsp[(7) - (9)].l)); (yyval.s).Type = type; (yyval.s).Num = num; - ;} + } break; case 130: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1592 "Gmsh.y" { myGmshSurface = 0; (yyval.s).Type = 0; (yyval.s).Num = 0; - ;} + } break; case 131: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1598 "Gmsh.y" { myGmshSurface = gmshSurface::getSurface((int)(yyvsp[(3) - (4)].d)); (yyval.s).Type = 0; (yyval.s).Num = 0; - ;} + } break; case 132: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1604 "Gmsh.y" { int num = (int)(yyvsp[(4) - (10)].d); myGmshSurface = gmshParametricSurface::NewParametricSurface(num, (yyvsp[(7) - (10)].c), (yyvsp[(8) - (10)].c), (yyvsp[(9) - (10)].c)); (yyval.s).Type = 0; (yyval.s).Num = num; - ;} + } break; case 133: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1611 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); @@ -5950,12 +5972,12 @@ yyreduce: } (yyval.s).Type = 0; (yyval.s).Num = num; - ;} + } break; case 134: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1636 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); @@ -5980,12 +6002,12 @@ yyreduce: } (yyval.s).Type = 0; (yyval.s).Num = num; - ;} + } break; case 135: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1661 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); @@ -6002,12 +6024,12 @@ yyreduce: Free((yyvsp[(2) - (8)].c)); (yyval.s).Type = MSH_SURF_LOOP; (yyval.s).Num = num; - ;} + } break; case 136: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1678 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); @@ -6024,12 +6046,12 @@ yyreduce: List_Delete((yyvsp[(7) - (8)].l)); (yyval.s).Type = MSH_SURF_COMPOUND; (yyval.s).Num = num; - ;} + } break; case 137: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1696 "Gmsh.y" { int num = (int)(yyvsp[(4) - (12)].d); @@ -6059,21 +6081,21 @@ yyreduce: Free((yyvsp[(8) - (12)].c)); (yyval.s).Type = MSH_SURF_COMPOUND; (yyval.s).Num = num; - ;} + } break; case 138: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1726 "Gmsh.y" { curPhysDim = 2; - ;} + } break; case 139: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1730 "Gmsh.y" { int num = (int)(yyvsp[(5) - (9)].i); @@ -6089,12 +6111,12 @@ yyreduce: List_Delete((yyvsp[(8) - (9)].l)); (yyval.s).Type = MSH_PHYSICAL_SURFACE; (yyval.s).Num = num; - ;} + } break; case 140: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1750 "Gmsh.y" { yymsg(0, "'Complex Volume' command is deprecated: use 'Volume' instead"); @@ -6112,12 +6134,12 @@ yyreduce: List_Delete((yyvsp[(7) - (8)].l)); (yyval.s).Type = MSH_VOLUME; (yyval.s).Num = num; - ;} + } break; case 141: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1768 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); @@ -6134,12 +6156,12 @@ yyreduce: List_Delete((yyvsp[(6) - (7)].l)); (yyval.s).Type = MSH_VOLUME; (yyval.s).Num = num; - ;} + } break; case 142: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1785 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); @@ -6155,21 +6177,21 @@ yyreduce: List_Delete((yyvsp[(7) - (8)].l)); (yyval.s).Type = MSH_VOLUME_COMPOUND; (yyval.s).Num = num; - ;} + } break; case 143: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1801 "Gmsh.y" { curPhysDim = 3; - ;} + } break; case 144: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1805 "Gmsh.y" { int num = (int)(yyvsp[(5) - (9)].i); @@ -6185,62 +6207,62 @@ yyreduce: List_Delete((yyvsp[(8) - (9)].l)); (yyval.s).Type = MSH_PHYSICAL_VOLUME; (yyval.s).Num = num; - ;} + } break; case 145: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1827 "Gmsh.y" { TranslateShapes((yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], (yyvsp[(4) - (5)].l)); (yyval.l) = (yyvsp[(4) - (5)].l); - ;} + } break; case 146: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1832 "Gmsh.y" { RotateShapes((yyvsp[(3) - (11)].v)[0], (yyvsp[(3) - (11)].v)[1], (yyvsp[(3) - (11)].v)[2], (yyvsp[(5) - (11)].v)[0], (yyvsp[(5) - (11)].v)[1], (yyvsp[(5) - (11)].v)[2], (yyvsp[(7) - (11)].d), (yyvsp[(10) - (11)].l)); (yyval.l) = (yyvsp[(10) - (11)].l); - ;} + } break; case 147: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1837 "Gmsh.y" { SymmetryShapes((yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], (yyvsp[(2) - (5)].v)[3], (yyvsp[(4) - (5)].l)); (yyval.l) = (yyvsp[(4) - (5)].l); - ;} + } break; case 148: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1842 "Gmsh.y" { DilatShapes((yyvsp[(3) - (9)].v)[0], (yyvsp[(3) - (9)].v)[1], (yyvsp[(3) - (9)].v)[2], (yyvsp[(5) - (9)].d), (yyvsp[(5) - (9)].d), (yyvsp[(5) - (9)].d), (yyvsp[(8) - (9)].l)); (yyval.l) = (yyvsp[(8) - (9)].l); - ;} + } break; case 149: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1847 "Gmsh.y" { DilatShapes((yyvsp[(3) - (9)].v)[0], (yyvsp[(3) - (9)].v)[1], (yyvsp[(3) - (9)].v)[2], (yyvsp[(5) - (9)].v)[0], (yyvsp[(5) - (9)].v)[1], (yyvsp[(5) - (9)].v)[2], (yyvsp[(8) - (9)].l)); (yyval.l) = (yyvsp[(8) - (9)].l); - ;} + } break; case 150: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1852 "Gmsh.y" { (yyval.l) = List_Create(3, 3, sizeof(Shape)); @@ -6263,23 +6285,23 @@ yyreduce: } Free((yyvsp[(1) - (4)].c)); List_Delete((yyvsp[(3) - (4)].l)); - ;} + } break; case 151: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1875 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); IntersectCurvesWithSurface((yyvsp[(4) - (9)].l), (int)(yyvsp[(8) - (9)].d), (yyval.l)); List_Delete((yyvsp[(4) - (9)].l)); - ;} + } break; case 152: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1881 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape*)); @@ -6287,44 +6309,44 @@ yyreduce: List_Delete((yyvsp[(7) - (9)].l)); SplitCurve((int)(yyvsp[(4) - (9)].d), tmp, (yyval.l)); List_Delete(tmp); - ;} + } break; case 153: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1891 "Gmsh.y" - { (yyval.l) = (yyvsp[(1) - (1)].l); ;} + { (yyval.l) = (yyvsp[(1) - (1)].l); } break; case 154: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1892 "Gmsh.y" - { (yyval.l) = (yyvsp[(1) - (1)].l); ;} + { (yyval.l) = (yyvsp[(1) - (1)].l); } break; case 155: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1897 "Gmsh.y" { (yyval.l) = List_Create(3, 3, sizeof(Shape)); - ;} + } break; case 156: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1901 "Gmsh.y" { List_Add((yyval.l), &(yyvsp[(2) - (2)].s)); - ;} + } break; case 157: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1905 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ @@ -6347,12 +6369,12 @@ yyreduce: yymsg(1, "Unknown point %d", TheShape.Num); } } - ;} + } break; case 158: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1928 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ @@ -6375,12 +6397,12 @@ yyreduce: yymsg(1, "Unknown curve %d", TheShape.Num); } } - ;} + } break; case 159: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1951 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ @@ -6403,12 +6425,12 @@ yyreduce: yymsg(1, "Unknown surface %d", TheShape.Num); } } - ;} + } break; case 160: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 1974 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ @@ -6431,12 +6453,12 @@ yyreduce: yymsg(1, "Unknown volume %d", TheShape.Num); } } - ;} + } break; case 161: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2002 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) @@ -6457,12 +6479,12 @@ yyreduce: else yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (8)].d)); #endif - ;} + } break; case 162: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2023 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) @@ -6485,12 +6507,12 @@ yyreduce: Tree_Add(GModel::current()->getGEOInternals()->LevelSets, &l); } #endif - ;} + } break; case 163: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2047 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) @@ -6510,12 +6532,12 @@ yyreduce: else yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (14)].d)); #endif - ;} + } break; case 164: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2068 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) @@ -6536,12 +6558,12 @@ yyreduce: else yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (16)].d)); #endif - ;} + } break; case 165: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2089 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) @@ -6561,12 +6583,12 @@ yyreduce: else yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (12)].d)); #endif - ;} + } break; case 166: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2109 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) @@ -6678,12 +6700,12 @@ yyreduce: yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (8)].d)); Free((yyvsp[(2) - (8)].c)); #endif - ;} + } break; case 167: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2221 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) @@ -6702,12 +6724,12 @@ yyreduce: yymsg(0, "Wrong levelset definition"); Free((yyvsp[(2) - (8)].c)); Free((yyvsp[(7) - (8)].c)); #endif - ;} + } break; case 168: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2240 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) @@ -6745,12 +6767,12 @@ yyreduce: yymsg(0, "Wrong levelset definition"); Free((yyvsp[(2) - (6)].c)); #endif - ;} + } break; case 169: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2279 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) @@ -6853,12 +6875,12 @@ yyreduce: yymsg(0, "Wrong levelset definition (%d)", (yyvsp[(4) - (14)].d)); Free((yyvsp[(2) - (14)].c)); #endif - ;} + } break; case 170: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2387 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ @@ -6867,23 +6889,23 @@ yyreduce: DeleteShape(TheShape.Type, TheShape.Num); } List_Delete((yyvsp[(3) - (4)].l)); - ;} + } break; case 171: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2396 "Gmsh.y" { #if defined(HAVE_MESH) GModel::current()->getFields()->deleteField((int)(yyvsp[(4) - (6)].d)); #endif - ;} + } break; case 172: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2402 "Gmsh.y" { #if defined(HAVE_POST) @@ -6898,12 +6920,12 @@ yyreduce: yymsg(0, "Unknown command 'Delete %s'", (yyvsp[(2) - (6)].c)); #endif Free((yyvsp[(2) - (6)].c)); - ;} + } break; case 173: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2417 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Meshes") || !strcmp((yyvsp[(2) - (3)].c), "All")){ @@ -6931,12 +6953,12 @@ yyreduce: yymsg(0, "Unknown object or expression to delete '%s'", (yyvsp[(2) - (3)].c)); } Free((yyvsp[(2) - (3)].c)); - ;} + } break; case 174: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2445 "Gmsh.y" { #if defined(HAVE_POST) @@ -6948,12 +6970,12 @@ yyreduce: yymsg(0, "Unknown command 'Delete %s %s'", (yyvsp[(2) - (4)].c), (yyvsp[(3) - (4)].c)); #endif Free((yyvsp[(2) - (4)].c)); Free((yyvsp[(3) - (4)].c)); - ;} + } break; case 175: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2462 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -6962,34 +6984,34 @@ yyreduce: ColorShape(TheShape.Type, TheShape.Num, (yyvsp[(2) - (5)].u)); } List_Delete((yyvsp[(4) - (5)].l)); - ;} + } break; case 176: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2476 "Gmsh.y" { for(int i = 0; i < 4; i++) VisibilityShape((yyvsp[(2) - (3)].c), i, 1); Free((yyvsp[(2) - (3)].c)); - ;} + } break; case 177: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2482 "Gmsh.y" { for(int i = 0; i < 4; i++) VisibilityShape((yyvsp[(2) - (3)].c), i, 0); Free((yyvsp[(2) - (3)].c)); - ;} + } break; case 178: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2488 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ @@ -6998,12 +7020,12 @@ yyreduce: VisibilityShape(TheShape.Type, TheShape.Num, 1); } List_Delete((yyvsp[(3) - (4)].l)); - ;} + } break; case 179: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2497 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ @@ -7012,12 +7034,12 @@ yyreduce: VisibilityShape(TheShape.Type, TheShape.Num, 0); } List_Delete((yyvsp[(3) - (4)].l)); - ;} + } break; case 180: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2511 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (3)].c), "Include")){ @@ -7062,12 +7084,12 @@ yyreduce: else yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (3)].c)); Free((yyvsp[(1) - (3)].c)); Free((yyvsp[(2) - (3)].c)); - ;} + } break; case 181: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2556 "Gmsh.y" { #if defined(HAVE_POST) @@ -7084,12 +7106,12 @@ yyreduce: yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (7)].c)); #endif Free((yyvsp[(1) - (7)].c)); Free((yyvsp[(2) - (7)].c)); Free((yyvsp[(6) - (7)].c)); - ;} + } break; case 182: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2573 "Gmsh.y" { #if defined(HAVE_POST) && defined(HAVE_MESH) @@ -7104,12 +7126,12 @@ yyreduce: yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (7)].c)); #endif Free((yyvsp[(1) - (7)].c)); Free((yyvsp[(2) - (7)].c)); Free((yyvsp[(3) - (7)].c)); - ;} + } break; case 183: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2588 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (3)].c), "Sleep")){ @@ -7128,12 +7150,12 @@ yyreduce: else yymsg(0, "Unknown command '%s'", (yyvsp[(1) - (3)].c)); Free((yyvsp[(1) - (3)].c)); - ;} + } break; case 184: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2607 "Gmsh.y" { #if defined(HAVE_PLUGINS) @@ -7145,12 +7167,12 @@ yyreduce: } #endif Free((yyvsp[(3) - (7)].c)); Free((yyvsp[(6) - (7)].c)); - ;} + } break; case 185: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2619 "Gmsh.y" { #if defined(HAVE_POST) @@ -7174,94 +7196,94 @@ yyreduce: yymsg(0, "Unknown 'Combine' command"); #endif Free((yyvsp[(2) - (3)].c)); - ;} + } break; case 186: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2643 "Gmsh.y" { gmsh_yyerrorstate = 999; // this will be checked when yyparse returns YYABORT; - ;} + } break; case 187: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2648 "Gmsh.y" { // FIXME: this is a hack to force a transfer from the old DB to // the new DB. This will become unnecessary if/when we fill the // GModel directly during parsing. GModel::current()->importGEOInternals(); - ;} + } break; case 188: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2655 "Gmsh.y" { CTX::instance()->forcedBBox = 0; GModel::current()->importGEOInternals(); SetBoundingBox(); - ;} + } break; case 189: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2661 "Gmsh.y" { CTX::instance()->forcedBBox = 1; SetBoundingBox((yyvsp[(3) - (15)].d), (yyvsp[(5) - (15)].d), (yyvsp[(7) - (15)].d), (yyvsp[(9) - (15)].d), (yyvsp[(11) - (15)].d), (yyvsp[(13) - (15)].d)); - ;} + } break; case 190: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2666 "Gmsh.y" { #if defined(HAVE_OPENGL) drawContext::global()->draw(); #endif - ;} + } break; case 191: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2672 "Gmsh.y" { GModel::current()->createTopologyFromMesh(); - ;} + } break; case 192: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2676 "Gmsh.y" { GModel::current()->createTopologyFromMesh(1); - ;} + } break; case 193: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2680 "Gmsh.y" { GModel::current()->importGEOInternals(); GModel::current()->refineMesh(CTX::instance()->mesh.secondOrderLinear); - ;} + } break; case 194: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2690 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (6)].d); @@ -7278,12 +7300,12 @@ yyreduce: yymsg(0, "Reached maximum number of imbricated loops"); ImbricatedLoop = MAX_RECUR_LOOPS - 1; } - ;} + } break; case 195: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2707 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (8)].d); @@ -7300,12 +7322,12 @@ yyreduce: yymsg(0, "Reached maximum number of imbricated loops"); ImbricatedLoop = MAX_RECUR_LOOPS - 1; } - ;} + } break; case 196: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2724 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (8)].d); @@ -7326,12 +7348,12 @@ yyreduce: yymsg(0, "Reached maximum number of imbricated loops"); ImbricatedLoop = MAX_RECUR_LOOPS - 1; } - ;} + } break; case 197: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2745 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (10)].d); @@ -7352,12 +7374,12 @@ yyreduce: yymsg(0, "Reached maximum number of imbricated loops"); ImbricatedLoop = MAX_RECUR_LOOPS - 1; } - ;} + } break; case 198: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2766 "Gmsh.y" { if(ImbricatedLoop <= 0){ @@ -7392,12 +7414,12 @@ yyreduce: else ImbricatedLoop--; } - ;} + } break; case 199: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2801 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction @@ -7405,52 +7427,52 @@ yyreduce: yymsg(0, "Redefinition of function %s", (yyvsp[(2) - (2)].c)); skip_until(NULL, "Return"); //FIXME: wee leak $2 - ;} + } break; case 200: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2809 "Gmsh.y" { if(!FunctionManager::Instance()->leaveFunction (&gmsh_yyin, gmsh_yyname, gmsh_yylineno)) yymsg(0, "Error while exiting function"); - ;} + } break; case 201: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2815 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction ((yyvsp[(2) - (3)].c), &gmsh_yyin, gmsh_yyname, gmsh_yylineno)) yymsg(0, "Unknown function %s", (yyvsp[(2) - (3)].c)); //FIXME: wee leak $2 - ;} + } break; case 202: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2822 "Gmsh.y" { if(!(yyvsp[(3) - (4)].d)) skip_until("If", "EndIf"); - ;} + } break; case 203: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2826 "Gmsh.y" { - ;} + } break; case 204: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2835 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); @@ -7458,12 +7480,12 @@ yyreduce: (yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], 0., 0., 0., 0., 0., 0., 0., NULL, (yyval.l)); List_Delete((yyvsp[(4) - (5)].l)); - ;} + } break; case 205: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2843 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); @@ -7471,12 +7493,12 @@ yyreduce: 0., 0., 0., (yyvsp[(3) - (11)].v)[0], (yyvsp[(3) - (11)].v)[1], (yyvsp[(3) - (11)].v)[2], (yyvsp[(5) - (11)].v)[0], (yyvsp[(5) - (11)].v)[1], (yyvsp[(5) - (11)].v)[2], (yyvsp[(7) - (11)].d), NULL, (yyval.l)); List_Delete((yyvsp[(10) - (11)].l)); - ;} + } break; case 206: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2851 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); @@ -7484,22 +7506,22 @@ yyreduce: (yyvsp[(3) - (13)].v)[0], (yyvsp[(3) - (13)].v)[1], (yyvsp[(3) - (13)].v)[2], (yyvsp[(5) - (13)].v)[0], (yyvsp[(5) - (13)].v)[1], (yyvsp[(5) - (13)].v)[2], (yyvsp[(7) - (13)].v)[0], (yyvsp[(7) - (13)].v)[1], (yyvsp[(7) - (13)].v)[2], (yyvsp[(9) - (13)].d), NULL, (yyval.l)); List_Delete((yyvsp[(12) - (13)].l)); - ;} + } break; case 207: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2859 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; - ;} + } break; case 208: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2864 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); @@ -7507,22 +7529,22 @@ yyreduce: (yyvsp[(2) - (7)].v)[0], (yyvsp[(2) - (7)].v)[1], (yyvsp[(2) - (7)].v)[2], 0., 0., 0., 0., 0., 0., 0., &extr, (yyval.l)); List_Delete((yyvsp[(4) - (7)].l)); - ;} + } break; case 209: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2872 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; - ;} + } break; case 210: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2877 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); @@ -7530,22 +7552,22 @@ yyreduce: 0., 0., 0., (yyvsp[(3) - (13)].v)[0], (yyvsp[(3) - (13)].v)[1], (yyvsp[(3) - (13)].v)[2], (yyvsp[(5) - (13)].v)[0], (yyvsp[(5) - (13)].v)[1], (yyvsp[(5) - (13)].v)[2], (yyvsp[(7) - (13)].d), &extr, (yyval.l)); List_Delete((yyvsp[(10) - (13)].l)); - ;} + } break; case 211: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2885 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; - ;} + } break; case 212: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2890 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); @@ -7553,356 +7575,356 @@ yyreduce: (yyvsp[(3) - (15)].v)[0], (yyvsp[(3) - (15)].v)[1], (yyvsp[(3) - (15)].v)[2], (yyvsp[(5) - (15)].v)[0], (yyvsp[(5) - (15)].v)[1], (yyvsp[(5) - (15)].v)[2], (yyvsp[(7) - (15)].v)[0], (yyvsp[(7) - (15)].v)[1], (yyvsp[(7) - (15)].v)[2], (yyvsp[(9) - (15)].d), &extr, (yyval.l)); List_Delete((yyvsp[(12) - (15)].l)); - ;} + } break; case 213: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2898 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; - ;} + } break; case 214: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2903 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(BOUNDARY_LAYER, (yyvsp[(3) - (6)].l), 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., &extr, (yyval.l)); List_Delete((yyvsp[(3) - (6)].l)); - ;} + } break; case 215: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2911 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (8)].d), (yyvsp[(6) - (8)].v)[0], (yyvsp[(6) - (8)].v)[1], (yyvsp[(6) - (8)].v)[2], 0., 0., 0., 0., 0., 0., 0., NULL, (yyval.l)); - ;} + } break; case 216: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2918 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (8)].d), (yyvsp[(6) - (8)].v)[0], (yyvsp[(6) - (8)].v)[1], (yyvsp[(6) - (8)].v)[2], 0., 0., 0., 0., 0., 0., 0., NULL, (yyval.l)); - ;} + } break; case 217: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2925 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (8)].d), (yyvsp[(6) - (8)].v)[0], (yyvsp[(6) - (8)].v)[1], (yyvsp[(6) - (8)].v)[2], 0., 0., 0., 0., 0., 0., 0., NULL, (yyval.l)); - ;} + } break; case 218: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2932 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), 0., 0., 0., (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], (yyvsp[(8) - (12)].v)[0], (yyvsp[(8) - (12)].v)[1], (yyvsp[(8) - (12)].v)[2], (yyvsp[(10) - (12)].d), NULL, (yyval.l)); - ;} + } break; case 219: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2939 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), 0., 0., 0., (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], (yyvsp[(8) - (12)].v)[0], (yyvsp[(8) - (12)].v)[1], (yyvsp[(8) - (12)].v)[2], (yyvsp[(10) - (12)].d), NULL, (yyval.l)); - ;} + } break; case 220: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2946 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), 0., 0., 0., (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], (yyvsp[(8) - (12)].v)[0], (yyvsp[(8) - (12)].v)[1], (yyvsp[(8) - (12)].v)[2], (yyvsp[(10) - (12)].d), NULL, (yyval.l)); - ;} + } break; case 221: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2953 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (14)].d), (yyvsp[(6) - (14)].v)[0], (yyvsp[(6) - (14)].v)[1], (yyvsp[(6) - (14)].v)[2], (yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2], (yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2], (yyvsp[(12) - (14)].d), NULL, (yyval.l)); - ;} + } break; case 222: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2960 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (14)].d), (yyvsp[(6) - (14)].v)[0], (yyvsp[(6) - (14)].v)[1], (yyvsp[(6) - (14)].v)[2], (yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2], (yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2], (yyvsp[(12) - (14)].d), NULL, (yyval.l)); - ;} + } break; case 223: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2967 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (14)].d), (yyvsp[(6) - (14)].v)[0], (yyvsp[(6) - (14)].v)[1], (yyvsp[(6) - (14)].v)[2], (yyvsp[(8) - (14)].v)[0], (yyvsp[(8) - (14)].v)[1], (yyvsp[(8) - (14)].v)[2], (yyvsp[(10) - (14)].v)[0], (yyvsp[(10) - (14)].v)[1], (yyvsp[(10) - (14)].v)[2], (yyvsp[(12) - (14)].d), NULL, (yyval.l)); - ;} + } break; case 224: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2974 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; - ;} + } break; case 225: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2979 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], 0., 0., 0., 0., 0., 0., 0., &extr, (yyval.l)); - ;} + } break; case 226: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2986 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; - ;} + } break; case 227: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2991 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], 0., 0., 0., 0., 0., 0., 0., &extr, (yyval.l)); - ;} + } break; case 228: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2998 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; - ;} + } break; case 229: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3003 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), (yyvsp[(6) - (12)].v)[0], (yyvsp[(6) - (12)].v)[1], (yyvsp[(6) - (12)].v)[2], 0., 0., 0., 0., 0., 0., 0., &extr, (yyval.l)); - ;} + } break; case 230: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3010 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; - ;} + } break; case 231: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3015 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (16)].d), 0., 0., 0., (yyvsp[(6) - (16)].v)[0], (yyvsp[(6) - (16)].v)[1], (yyvsp[(6) - (16)].v)[2], (yyvsp[(8) - (16)].v)[0], (yyvsp[(8) - (16)].v)[1], (yyvsp[(8) - (16)].v)[2], (yyvsp[(10) - (16)].d), &extr, (yyval.l)); - ;} + } break; case 232: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3022 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; - ;} + } break; case 233: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3027 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (16)].d), 0., 0., 0., (yyvsp[(6) - (16)].v)[0], (yyvsp[(6) - (16)].v)[1], (yyvsp[(6) - (16)].v)[2], (yyvsp[(8) - (16)].v)[0], (yyvsp[(8) - (16)].v)[1], (yyvsp[(8) - (16)].v)[2], (yyvsp[(10) - (16)].d), &extr, (yyval.l)); - ;} + } break; case 234: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3034 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; - ;} + } break; case 235: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3039 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (16)].d), 0., 0., 0., (yyvsp[(6) - (16)].v)[0], (yyvsp[(6) - (16)].v)[1], (yyvsp[(6) - (16)].v)[2], (yyvsp[(8) - (16)].v)[0], (yyvsp[(8) - (16)].v)[1], (yyvsp[(8) - (16)].v)[2], (yyvsp[(10) - (16)].d), &extr, (yyval.l)); - ;} + } break; case 236: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3046 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; - ;} + } break; case 237: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3051 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (18)].d), (yyvsp[(6) - (18)].v)[0], (yyvsp[(6) - (18)].v)[1], (yyvsp[(6) - (18)].v)[2], (yyvsp[(8) - (18)].v)[0], (yyvsp[(8) - (18)].v)[1], (yyvsp[(8) - (18)].v)[2], (yyvsp[(10) - (18)].v)[0], (yyvsp[(10) - (18)].v)[1], (yyvsp[(10) - (18)].v)[2], (yyvsp[(12) - (18)].d), &extr, (yyval.l)); - ;} + } break; case 238: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3058 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; - ;} + } break; case 239: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3063 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (18)].d), (yyvsp[(6) - (18)].v)[0], (yyvsp[(6) - (18)].v)[1], (yyvsp[(6) - (18)].v)[2], (yyvsp[(8) - (18)].v)[0], (yyvsp[(8) - (18)].v)[1], (yyvsp[(8) - (18)].v)[2], (yyvsp[(10) - (18)].v)[0], (yyvsp[(10) - (18)].v)[1], (yyvsp[(10) - (18)].v)[2], (yyvsp[(12) - (18)].d), &extr, (yyval.l)); - ;} + } break; case 240: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3070 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; extr.mesh.QuadToTri = NO_QUADTRI; - ;} + } break; case 241: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3075 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (18)].d), (yyvsp[(6) - (18)].v)[0], (yyvsp[(6) - (18)].v)[1], (yyvsp[(6) - (18)].v)[2], (yyvsp[(8) - (18)].v)[0], (yyvsp[(8) - (18)].v)[1], (yyvsp[(8) - (18)].v)[2], (yyvsp[(10) - (18)].v)[0], (yyvsp[(10) - (18)].v)[1], (yyvsp[(10) - (18)].v)[2], (yyvsp[(12) - (18)].d), &extr, (yyval.l)); - ;} + } break; case 242: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3086 "Gmsh.y" { - ;} + } break; case 243: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3089 "Gmsh.y" { - ;} + } break; case 244: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3095 "Gmsh.y" { extr.mesh.ExtrudeMesh = true; @@ -7911,12 +7933,12 @@ yyreduce: extr.mesh.hLayer.clear(); extr.mesh.NbElmLayer.push_back((int)fabs((yyvsp[(3) - (5)].d))); extr.mesh.hLayer.push_back(1.); - ;} + } break; case 245: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3104 "Gmsh.y" { extr.mesh.ExtrudeMesh = true; @@ -7936,12 +7958,12 @@ yyreduce: yymsg(0, "Wrong layer definition {%d, %d}", List_Nbr((yyvsp[(3) - (7)].l)), List_Nbr((yyvsp[(5) - (7)].l))); List_Delete((yyvsp[(3) - (7)].l)); List_Delete((yyvsp[(5) - (7)].l)); - ;} + } break; case 246: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3124 "Gmsh.y" { yymsg(0, "Explicit region numbers in layers are deprecated"); @@ -7964,57 +7986,57 @@ yyreduce: List_Delete((yyvsp[(3) - (9)].l)); List_Delete((yyvsp[(5) - (9)].l)); List_Delete((yyvsp[(7) - (9)].l)); - ;} + } break; case 247: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3147 "Gmsh.y" { extr.mesh.Recombine = true; - ;} + } break; case 248: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3151 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_DBL_1; - ;} + } break; case 249: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3155 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_DBL_1_RECOMB; - ;} + } break; case 250: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3159 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_SNGL_1; - ;} + } break; case 251: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3163 "Gmsh.y" { extr.mesh.QuadToTri = QUADTRI_SNGL_1_RECOMB; - ;} + } break; case 252: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3167 "Gmsh.y" { int num = (int)(yyvsp[(3) - (9)].d); @@ -8033,12 +8055,12 @@ yyreduce: } } List_Delete((yyvsp[(6) - (9)].l)); - ;} + } break; case 253: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3186 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (6)].c), "Index")) @@ -8046,21 +8068,21 @@ yyreduce: else if(!strcmp((yyvsp[(2) - (6)].c), "View")) extr.mesh.ViewIndex = (yyvsp[(4) - (6)].d); Free((yyvsp[(2) - (6)].c)); - ;} + } break; case 254: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3198 "Gmsh.y" { (yyval.v)[0] = (yyval.v)[1] = 1.; - ;} + } break; case 255: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3202 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Progression") || !strcmp((yyvsp[(2) - (3)].c), "Power")) @@ -8073,21 +8095,21 @@ yyreduce: } (yyval.v)[1] = (yyvsp[(3) - (3)].d); Free((yyvsp[(2) - (3)].c)); - ;} + } break; case 256: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3217 "Gmsh.y" { (yyval.i) = -1; // left - ;} + } break; case 257: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3221 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "Right")) @@ -8097,48 +8119,48 @@ yyreduce: else // alternated (yyval.i) = 0; Free((yyvsp[(1) - (1)].c)); - ;} + } break; case 258: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3233 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(double)); - ;} + } break; case 259: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3237 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); - ;} + } break; case 260: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3242 "Gmsh.y" { (yyval.i) = 45; - ;} + } break; case 261: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3246 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(2) - (2)].d); - ;} + } break; case 262: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3253 "Gmsh.y" { int type = (int)(yyvsp[(6) - (7)].v)[0]; @@ -8194,12 +8216,12 @@ yyreduce: } List_Delete((yyvsp[(3) - (7)].l)); } - ;} + } break; case 263: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3309 "Gmsh.y" { int k = List_Nbr((yyvsp[(4) - (6)].l)); @@ -8269,22 +8291,22 @@ yyreduce: } } List_Delete((yyvsp[(4) - (6)].l)); - ;} + } break; case 264: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3379 "Gmsh.y" { yymsg(1, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)"); List_Delete((yyvsp[(7) - (8)].l)); - ;} + } break; case 265: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3384 "Gmsh.y" { int k = List_Nbr((yyvsp[(4) - (5)].l)); @@ -8351,12 +8373,12 @@ yyreduce: } } List_Delete((yyvsp[(4) - (5)].l)); - ;} + } break; case 266: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3451 "Gmsh.y" { if(!(yyvsp[(2) - (3)].l)){ @@ -8392,12 +8414,12 @@ yyreduce: } List_Delete((yyvsp[(2) - (3)].l)); } - ;} + } break; case 267: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3487 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (7)].l)); i++){ @@ -8405,12 +8427,12 @@ yyreduce: List_Read((yyvsp[(4) - (7)].l), i, &d); CTX::instance()->mesh.algo2d_per_face[(int)d] = (int)(yyvsp[(6) - (7)].d); } - ;} + } break; case 268: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3496 "Gmsh.y" { if(!(yyvsp[(3) - (5)].l)){ @@ -8453,12 +8475,12 @@ yyreduce: } List_Delete((yyvsp[(3) - (5)].l)); } - ;} + } break; case 269: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3539 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ @@ -8478,12 +8500,12 @@ yyreduce: } } List_Delete((yyvsp[(3) - (6)].l)); - ;} + } break; case 270: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3564 "Gmsh.y" { if(List_Nbr((yyvsp[(5) - (6)].l)) != List_Nbr((yyvsp[(3) - (6)].l))){ @@ -8510,12 +8532,12 @@ yyreduce: } List_Delete((yyvsp[(3) - (6)].l)); List_Delete((yyvsp[(5) - (6)].l)); - ;} + } break; case 271: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3592 "Gmsh.y" { if (List_Nbr((yyvsp[(5) - (12)].l)) != List_Nbr((yyvsp[(10) - (12)].l))){ @@ -8551,12 +8573,12 @@ yyreduce: } List_Delete((yyvsp[(5) - (12)].l)); List_Delete((yyvsp[(10) - (12)].l)); - ;} + } break; case 272: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3635 "Gmsh.y" { Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d)); @@ -8579,12 +8601,12 @@ yyreduce: else yymsg(0, "Unknown surface %d", (int)(yyvsp[(8) - (10)].d)); } - ;} + } break; case 273: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3658 "Gmsh.y" { Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d)); @@ -8607,37 +8629,37 @@ yyreduce: else yymsg(0, "Unknown surface %d", (int)(yyvsp[(8) - (10)].d)); } - ;} + } break; case 274: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3681 "Gmsh.y" { - ;} + } break; case 275: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3684 "Gmsh.y" { - ;} + } break; case 276: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3693 "Gmsh.y" { ReplaceAllDuplicates(); - ;} + } break; case 277: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3697 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Geometry")) @@ -8647,12 +8669,12 @@ yyreduce: else yymsg(0, "Unknown coherence command"); Free((yyvsp[(2) - (3)].c)); - ;} + } break; case 278: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3707 "Gmsh.y" { if(List_Nbr((yyvsp[(4) - (6)].l)) >= 2){ @@ -8682,39 +8704,37 @@ yyreduce: yymsg(0, "Need at least two points to merge"); ReplaceAllDuplicates(); List_Delete((yyvsp[(4) - (6)].l)); - ;} + } break; case 279: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3741 "Gmsh.y" - { (yyval.c) = (char*)"Homology"; ;} + { (yyval.c) = (char*)"Homology"; } break; case 280: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3742 "Gmsh.y" - { (yyval.c) = (char*)"Cohomology"; ;} + { (yyval.c) = (char*)"Cohomology"; } break; case 281: -/* Line 1464 of yacc.c */ +/* Line 1806 of yacc.c */ #line 3747 "Gmsh.y" { std::vector<int> domain, subdomain, dim; - if(GModel::current()->getDim() != 1) dim.push_back(1); - if(GModel::current()->getDim() != 2) dim.push_back(2); GModel::current()->addHomologyRequest((yyvsp[(1) - (2)].c), domain, subdomain, dim); - ;} + } break; case 282: -/* Line 1464 of yacc.c */ -#line 3754 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 3752 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(3) - (5)].l)); i++){ @@ -8722,17 +8742,15 @@ yyreduce: List_Read((yyvsp[(3) - (5)].l), i, &d); domain.push_back((int)d); } - if(GModel::current()->getDim() != 1) dim.push_back(1); - if(GModel::current()->getDim() != 2) dim.push_back(2); GModel::current()->addHomologyRequest((yyvsp[(1) - (5)].c), domain, subdomain, dim); List_Delete((yyvsp[(3) - (5)].l)); - ;} + } break; case 283: -/* Line 1464 of yacc.c */ -#line 3767 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 3763 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(3) - (7)].l)); i++){ @@ -8745,18 +8763,16 @@ yyreduce: List_Read((yyvsp[(5) - (7)].l), i, &d); subdomain.push_back((int)d); } - if(GModel::current()->getDim() != 1) dim.push_back(1); - if(GModel::current()->getDim() != 2) dim.push_back(2); GModel::current()->addHomologyRequest((yyvsp[(1) - (7)].c), domain, subdomain, dim); List_Delete((yyvsp[(3) - (7)].l)); List_Delete((yyvsp[(5) - (7)].l)); - ;} + } break; case 284: -/* Line 1464 of yacc.c */ -#line 3786 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 3780 "Gmsh.y" { std::vector<int> domain, subdomain, dim; for(int i = 0; i < List_Nbr((yyvsp[(6) - (10)].l)); i++){ @@ -8778,501 +8794,501 @@ yyreduce: List_Delete((yyvsp[(6) - (10)].l)); List_Delete((yyvsp[(8) - (10)].l)); List_Delete((yyvsp[(3) - (10)].l)); - ;} + } break; case 285: -/* Line 1464 of yacc.c */ -#line 3813 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (1)].d); ;} +/* Line 1806 of yacc.c */ +#line 3807 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (1)].d); } break; case 286: -/* Line 1464 of yacc.c */ -#line 3814 "Gmsh.y" - { (yyval.d) = (yyvsp[(2) - (3)].d); ;} +/* Line 1806 of yacc.c */ +#line 3808 "Gmsh.y" + { (yyval.d) = (yyvsp[(2) - (3)].d); } break; case 287: -/* Line 1464 of yacc.c */ -#line 3815 "Gmsh.y" - { (yyval.d) = -(yyvsp[(2) - (2)].d); ;} +/* Line 1806 of yacc.c */ +#line 3809 "Gmsh.y" + { (yyval.d) = -(yyvsp[(2) - (2)].d); } break; case 288: -/* Line 1464 of yacc.c */ -#line 3816 "Gmsh.y" - { (yyval.d) = (yyvsp[(2) - (2)].d); ;} +/* Line 1806 of yacc.c */ +#line 3810 "Gmsh.y" + { (yyval.d) = (yyvsp[(2) - (2)].d); } break; case 289: -/* Line 1464 of yacc.c */ -#line 3817 "Gmsh.y" - { (yyval.d) = !(yyvsp[(2) - (2)].d); ;} +/* Line 1806 of yacc.c */ +#line 3811 "Gmsh.y" + { (yyval.d) = !(yyvsp[(2) - (2)].d); } break; case 290: -/* Line 1464 of yacc.c */ -#line 3818 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d); ;} +/* Line 1806 of yacc.c */ +#line 3812 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d); } break; case 291: -/* Line 1464 of yacc.c */ -#line 3819 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d); ;} +/* Line 1806 of yacc.c */ +#line 3813 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d); } break; case 292: -/* Line 1464 of yacc.c */ -#line 3820 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d); ;} +/* Line 1806 of yacc.c */ +#line 3814 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d); } break; case 293: -/* Line 1464 of yacc.c */ -#line 3822 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 3816 "Gmsh.y" { if(!(yyvsp[(3) - (3)].d)) yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); else (yyval.d) = (yyvsp[(1) - (3)].d) / (yyvsp[(3) - (3)].d); - ;} + } break; case 294: -/* Line 1464 of yacc.c */ -#line 3828 "Gmsh.y" - { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d); ;} +/* Line 1806 of yacc.c */ +#line 3822 "Gmsh.y" + { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d); } break; case 295: -/* Line 1464 of yacc.c */ -#line 3829 "Gmsh.y" - { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3823 "Gmsh.y" + { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); } break; case 296: -/* Line 1464 of yacc.c */ -#line 3830 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d); ;} +/* Line 1806 of yacc.c */ +#line 3824 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d); } break; case 297: -/* Line 1464 of yacc.c */ -#line 3831 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d); ;} +/* Line 1806 of yacc.c */ +#line 3825 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d); } break; case 298: -/* Line 1464 of yacc.c */ -#line 3832 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d); ;} +/* Line 1806 of yacc.c */ +#line 3826 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d); } break; case 299: -/* Line 1464 of yacc.c */ -#line 3833 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d); ;} +/* Line 1806 of yacc.c */ +#line 3827 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d); } break; case 300: -/* Line 1464 of yacc.c */ -#line 3834 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d); ;} +/* Line 1806 of yacc.c */ +#line 3828 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d); } break; case 301: -/* Line 1464 of yacc.c */ -#line 3835 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d); ;} +/* Line 1806 of yacc.c */ +#line 3829 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d); } break; case 302: -/* Line 1464 of yacc.c */ -#line 3836 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d); ;} +/* Line 1806 of yacc.c */ +#line 3830 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d); } break; case 303: -/* Line 1464 of yacc.c */ -#line 3837 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d); ;} +/* Line 1806 of yacc.c */ +#line 3831 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d); } break; case 304: -/* Line 1464 of yacc.c */ -#line 3838 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); ;} +/* Line 1806 of yacc.c */ +#line 3832 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); } break; case 305: -/* Line 1464 of yacc.c */ -#line 3839 "Gmsh.y" - { (yyval.d) = exp((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3833 "Gmsh.y" + { (yyval.d) = exp((yyvsp[(3) - (4)].d)); } break; case 306: -/* Line 1464 of yacc.c */ -#line 3840 "Gmsh.y" - { (yyval.d) = log((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3834 "Gmsh.y" + { (yyval.d) = log((yyvsp[(3) - (4)].d)); } break; case 307: -/* Line 1464 of yacc.c */ -#line 3841 "Gmsh.y" - { (yyval.d) = log10((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3835 "Gmsh.y" + { (yyval.d) = log10((yyvsp[(3) - (4)].d)); } break; case 308: -/* Line 1464 of yacc.c */ -#line 3842 "Gmsh.y" - { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3836 "Gmsh.y" + { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); } break; case 309: -/* Line 1464 of yacc.c */ -#line 3843 "Gmsh.y" - { (yyval.d) = sin((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3837 "Gmsh.y" + { (yyval.d) = sin((yyvsp[(3) - (4)].d)); } break; case 310: -/* Line 1464 of yacc.c */ -#line 3844 "Gmsh.y" - { (yyval.d) = asin((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3838 "Gmsh.y" + { (yyval.d) = asin((yyvsp[(3) - (4)].d)); } break; case 311: -/* Line 1464 of yacc.c */ -#line 3845 "Gmsh.y" - { (yyval.d) = cos((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3839 "Gmsh.y" + { (yyval.d) = cos((yyvsp[(3) - (4)].d)); } break; case 312: -/* Line 1464 of yacc.c */ -#line 3846 "Gmsh.y" - { (yyval.d) = acos((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3840 "Gmsh.y" + { (yyval.d) = acos((yyvsp[(3) - (4)].d)); } break; case 313: -/* Line 1464 of yacc.c */ -#line 3847 "Gmsh.y" - { (yyval.d) = tan((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3841 "Gmsh.y" + { (yyval.d) = tan((yyvsp[(3) - (4)].d)); } break; case 314: -/* Line 1464 of yacc.c */ -#line 3848 "Gmsh.y" - { (yyval.d) = atan((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3842 "Gmsh.y" + { (yyval.d) = atan((yyvsp[(3) - (4)].d)); } break; case 315: -/* Line 1464 of yacc.c */ -#line 3849 "Gmsh.y" - { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;} +/* Line 1806 of yacc.c */ +#line 3843 "Gmsh.y" + { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));} break; case 316: -/* Line 1464 of yacc.c */ -#line 3850 "Gmsh.y" - { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3844 "Gmsh.y" + { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); } break; case 317: -/* Line 1464 of yacc.c */ -#line 3851 "Gmsh.y" - { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3845 "Gmsh.y" + { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); } break; case 318: -/* Line 1464 of yacc.c */ -#line 3852 "Gmsh.y" - { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3846 "Gmsh.y" + { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); } break; case 319: -/* Line 1464 of yacc.c */ -#line 3853 "Gmsh.y" - { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3847 "Gmsh.y" + { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); } break; case 320: -/* Line 1464 of yacc.c */ -#line 3854 "Gmsh.y" - { (yyval.d) = floor((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3848 "Gmsh.y" + { (yyval.d) = floor((yyvsp[(3) - (4)].d)); } break; case 321: -/* Line 1464 of yacc.c */ -#line 3855 "Gmsh.y" - { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3849 "Gmsh.y" + { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); } break; case 322: -/* Line 1464 of yacc.c */ -#line 3856 "Gmsh.y" - { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3850 "Gmsh.y" + { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); } break; case 323: -/* Line 1464 of yacc.c */ -#line 3857 "Gmsh.y" - { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3851 "Gmsh.y" + { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); } break; case 324: -/* Line 1464 of yacc.c */ -#line 3858 "Gmsh.y" - { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3852 "Gmsh.y" + { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); } break; case 325: -/* Line 1464 of yacc.c */ -#line 3859 "Gmsh.y" - { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;} +/* Line 1806 of yacc.c */ +#line 3853 "Gmsh.y" + { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; } break; case 326: -/* Line 1464 of yacc.c */ -#line 3861 "Gmsh.y" - { (yyval.d) = exp((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3855 "Gmsh.y" + { (yyval.d) = exp((yyvsp[(3) - (4)].d)); } break; case 327: -/* Line 1464 of yacc.c */ -#line 3862 "Gmsh.y" - { (yyval.d) = log((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3856 "Gmsh.y" + { (yyval.d) = log((yyvsp[(3) - (4)].d)); } break; case 328: -/* Line 1464 of yacc.c */ -#line 3863 "Gmsh.y" - { (yyval.d) = log10((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3857 "Gmsh.y" + { (yyval.d) = log10((yyvsp[(3) - (4)].d)); } break; case 329: -/* Line 1464 of yacc.c */ -#line 3864 "Gmsh.y" - { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3858 "Gmsh.y" + { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); } break; case 330: -/* Line 1464 of yacc.c */ -#line 3865 "Gmsh.y" - { (yyval.d) = sin((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3859 "Gmsh.y" + { (yyval.d) = sin((yyvsp[(3) - (4)].d)); } break; case 331: -/* Line 1464 of yacc.c */ -#line 3866 "Gmsh.y" - { (yyval.d) = asin((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3860 "Gmsh.y" + { (yyval.d) = asin((yyvsp[(3) - (4)].d)); } break; case 332: -/* Line 1464 of yacc.c */ -#line 3867 "Gmsh.y" - { (yyval.d) = cos((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3861 "Gmsh.y" + { (yyval.d) = cos((yyvsp[(3) - (4)].d)); } break; case 333: -/* Line 1464 of yacc.c */ -#line 3868 "Gmsh.y" - { (yyval.d) = acos((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3862 "Gmsh.y" + { (yyval.d) = acos((yyvsp[(3) - (4)].d)); } break; case 334: -/* Line 1464 of yacc.c */ -#line 3869 "Gmsh.y" - { (yyval.d) = tan((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3863 "Gmsh.y" + { (yyval.d) = tan((yyvsp[(3) - (4)].d)); } break; case 335: -/* Line 1464 of yacc.c */ -#line 3870 "Gmsh.y" - { (yyval.d) = atan((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3864 "Gmsh.y" + { (yyval.d) = atan((yyvsp[(3) - (4)].d)); } break; case 336: -/* Line 1464 of yacc.c */ -#line 3871 "Gmsh.y" - { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;} +/* Line 1806 of yacc.c */ +#line 3865 "Gmsh.y" + { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));} break; case 337: -/* Line 1464 of yacc.c */ -#line 3872 "Gmsh.y" - { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3866 "Gmsh.y" + { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); } break; case 338: -/* Line 1464 of yacc.c */ -#line 3873 "Gmsh.y" - { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3867 "Gmsh.y" + { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); } break; case 339: -/* Line 1464 of yacc.c */ -#line 3874 "Gmsh.y" - { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3868 "Gmsh.y" + { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); } break; case 340: -/* Line 1464 of yacc.c */ -#line 3875 "Gmsh.y" - { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3869 "Gmsh.y" + { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); } break; case 341: -/* Line 1464 of yacc.c */ -#line 3876 "Gmsh.y" - { (yyval.d) = floor((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3870 "Gmsh.y" + { (yyval.d) = floor((yyvsp[(3) - (4)].d)); } break; case 342: -/* Line 1464 of yacc.c */ -#line 3877 "Gmsh.y" - { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3871 "Gmsh.y" + { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); } break; case 343: -/* Line 1464 of yacc.c */ -#line 3878 "Gmsh.y" - { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3872 "Gmsh.y" + { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); } break; case 344: -/* Line 1464 of yacc.c */ -#line 3879 "Gmsh.y" - { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3873 "Gmsh.y" + { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); } break; case 345: -/* Line 1464 of yacc.c */ -#line 3880 "Gmsh.y" - { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;} +/* Line 1806 of yacc.c */ +#line 3874 "Gmsh.y" + { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); } break; case 346: -/* Line 1464 of yacc.c */ -#line 3881 "Gmsh.y" - { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;} +/* Line 1806 of yacc.c */ +#line 3875 "Gmsh.y" + { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; } break; case 347: -/* Line 1464 of yacc.c */ -#line 3890 "Gmsh.y" - { (yyval.d) = (yyvsp[(1) - (1)].d); ;} +/* Line 1806 of yacc.c */ +#line 3884 "Gmsh.y" + { (yyval.d) = (yyvsp[(1) - (1)].d); } break; case 348: -/* Line 1464 of yacc.c */ -#line 3891 "Gmsh.y" - { (yyval.d) = 3.141592653589793; ;} +/* Line 1806 of yacc.c */ +#line 3885 "Gmsh.y" + { (yyval.d) = 3.141592653589793; } break; case 349: -/* Line 1464 of yacc.c */ -#line 3892 "Gmsh.y" - { (yyval.d) = Msg::GetCommRank(); ;} +/* Line 1806 of yacc.c */ +#line 3886 "Gmsh.y" + { (yyval.d) = Msg::GetCommRank(); } break; case 350: -/* Line 1464 of yacc.c */ -#line 3893 "Gmsh.y" - { (yyval.d) = Msg::GetCommSize(); ;} +/* Line 1806 of yacc.c */ +#line 3887 "Gmsh.y" + { (yyval.d) = Msg::GetCommSize(); } break; case 351: -/* Line 1464 of yacc.c */ -#line 3894 "Gmsh.y" - { (yyval.d) = GetGmshMajorVersion(); ;} +/* Line 1806 of yacc.c */ +#line 3888 "Gmsh.y" + { (yyval.d) = GetGmshMajorVersion(); } break; case 352: -/* Line 1464 of yacc.c */ -#line 3895 "Gmsh.y" - { (yyval.d) = GetGmshMinorVersion(); ;} +/* Line 1806 of yacc.c */ +#line 3889 "Gmsh.y" + { (yyval.d) = GetGmshMinorVersion(); } break; case 353: -/* Line 1464 of yacc.c */ -#line 3896 "Gmsh.y" - { (yyval.d) = GetGmshPatchVersion(); ;} +/* Line 1806 of yacc.c */ +#line 3890 "Gmsh.y" + { (yyval.d) = GetGmshPatchVersion(); } break; case 354: -/* Line 1464 of yacc.c */ -#line 3901 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 3895 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (1)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (1)].c)); @@ -9288,13 +9304,13 @@ yyreduce: (yyval.d) = s.value[0]; } Free((yyvsp[(1) - (1)].c)); - ;} + } break; case 355: -/* Line 1464 of yacc.c */ -#line 3921 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 3915 "Gmsh.y" { char tmpstring[1024]; sprintf(tmpstring, "%s_%d", (yyvsp[(1) - (5)].c), (int)(yyvsp[(4) - (5)].d)) ; @@ -9312,13 +9328,13 @@ yyreduce: (yyval.d) = s.value[0]; } Free((yyvsp[(1) - (5)].c)); - ;} + } break; case 356: -/* Line 1464 of yacc.c */ -#line 3940 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 3934 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -9335,13 +9351,13 @@ yyreduce: (yyval.d) = s.value[index]; } Free((yyvsp[(1) - (4)].c)); - ;} + } break; case 357: -/* Line 1464 of yacc.c */ -#line 3958 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 3952 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(2) - (4)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(2) - (4)].c)); @@ -9352,13 +9368,13 @@ yyreduce: (yyval.d) = s.value.size(); } Free((yyvsp[(2) - (4)].c)); - ;} + } break; case 358: -/* Line 1464 of yacc.c */ -#line 3970 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 3964 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (2)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (2)].c)); @@ -9374,13 +9390,13 @@ yyreduce: (yyval.d) = (s.value[0] += (yyvsp[(2) - (2)].i)); } Free((yyvsp[(1) - (2)].c)); - ;} + } break; case 359: -/* Line 1464 of yacc.c */ -#line 3987 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 3981 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -9397,33 +9413,33 @@ yyreduce: (yyval.d) = (s.value[index] += (yyvsp[(5) - (5)].i)); } Free((yyvsp[(1) - (5)].c)); - ;} + } break; case 360: -/* Line 1464 of yacc.c */ -#line 4008 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4002 "Gmsh.y" { NumberOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), (yyval.d)); Free((yyvsp[(1) - (3)].c)); Free((yyvsp[(3) - (3)].c)); - ;} + } break; case 361: -/* Line 1464 of yacc.c */ -#line 4013 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4007 "Gmsh.y" { NumberOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), (yyval.d)); Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(6) - (6)].c)); - ;} + } break; case 362: -/* Line 1464 of yacc.c */ -#line 4018 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4012 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (4)].c), 0, (yyvsp[(3) - (4)].c), d)){ @@ -9432,13 +9448,13 @@ yyreduce: (yyval.d) = d; } Free((yyvsp[(1) - (4)].c)); Free((yyvsp[(3) - (4)].c)); - ;} + } break; case 363: -/* Line 1464 of yacc.c */ -#line 4028 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4022 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c), d)){ @@ -9447,196 +9463,196 @@ yyreduce: (yyval.d) = d; } Free((yyvsp[(1) - (7)].c)); Free((yyvsp[(6) - (7)].c)); - ;} + } break; case 364: -/* Line 1464 of yacc.c */ -#line 4038 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4032 "Gmsh.y" { (yyval.d) = Msg::GetValue((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d)); Free((yyvsp[(3) - (6)].c)); - ;} + } break; case 365: -/* Line 1464 of yacc.c */ -#line 4046 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4040 "Gmsh.y" { memcpy((yyval.v), (yyvsp[(1) - (1)].v), 5*sizeof(double)); - ;} + } break; case 366: -/* Line 1464 of yacc.c */ -#line 4050 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4044 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = -(yyvsp[(2) - (2)].v)[i]; - ;} + } break; case 367: -/* Line 1464 of yacc.c */ -#line 4054 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4048 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i]; - ;} + } break; case 368: -/* Line 1464 of yacc.c */ -#line 4058 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4052 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] - (yyvsp[(3) - (3)].v)[i]; - ;} + } break; case 369: -/* Line 1464 of yacc.c */ -#line 4062 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4056 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] + (yyvsp[(3) - (3)].v)[i]; - ;} + } break; case 370: -/* Line 1464 of yacc.c */ -#line 4069 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4063 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (11)].d); (yyval.v)[1] = (yyvsp[(4) - (11)].d); (yyval.v)[2] = (yyvsp[(6) - (11)].d); (yyval.v)[3] = (yyvsp[(8) - (11)].d); (yyval.v)[4] = (yyvsp[(10) - (11)].d); - ;} + } break; case 371: -/* Line 1464 of yacc.c */ -#line 4073 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4067 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (9)].d); (yyval.v)[1] = (yyvsp[(4) - (9)].d); (yyval.v)[2] = (yyvsp[(6) - (9)].d); (yyval.v)[3] = (yyvsp[(8) - (9)].d); (yyval.v)[4] = 1.0; - ;} + } break; case 372: -/* Line 1464 of yacc.c */ -#line 4077 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4071 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; - ;} + } break; case 373: -/* Line 1464 of yacc.c */ -#line 4081 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4075 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; - ;} + } break; case 374: -/* Line 1464 of yacc.c */ -#line 4088 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4082 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(List_T*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].l))); - ;} + } break; case 375: -/* Line 1464 of yacc.c */ -#line 4093 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4087 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].l))); - ;} + } break; case 376: -/* Line 1464 of yacc.c */ -#line 4100 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4094 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); - ;} + } break; case 377: -/* Line 1464 of yacc.c */ -#line 4105 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4099 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); - ;} + } break; case 378: -/* Line 1464 of yacc.c */ -#line 4109 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4103 "Gmsh.y" { // creates an empty list (yyval.l) = List_Create(2, 1, sizeof(double)); - ;} + } break; case 379: -/* Line 1464 of yacc.c */ -#line 4114 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4108 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); - ;} + } break; case 380: -/* Line 1464 of yacc.c */ -#line 4118 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4112 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ double *pd = (double*)List_Pointer((yyval.l), i); (*pd) = - (*pd); } - ;} + } break; case 381: -/* Line 1464 of yacc.c */ -#line 4126 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4120 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (5)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ double *pd = (double*)List_Pointer((yyval.l), i); (*pd) *= (yyvsp[(1) - (5)].d); } - ;} + } break; case 382: -/* Line 1464 of yacc.c */ -#line 4137 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4131 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); - ;} + } break; case 383: -/* Line 1464 of yacc.c */ -#line 4141 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4135 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "*") || !strcmp((yyvsp[(1) - (1)].c), "all")) (yyval.l) = 0; @@ -9644,51 +9660,51 @@ yyreduce: yyerror("Unknown special string for list replacement"); (yyval.l) = List_Create(2, 1, sizeof(double)); } - ;} + } break; case 384: -/* Line 1464 of yacc.c */ -#line 4153 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4147 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ double *pd = (double*)List_Pointer((yyval.l), i); (*pd) = - (*pd); } - ;} + } break; case 385: -/* Line 1464 of yacc.c */ -#line 4161 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4155 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (3)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ double *pd = (double*)List_Pointer((yyval.l), i); (*pd) *= (yyvsp[(1) - (3)].d); } - ;} + } break; case 386: -/* Line 1464 of yacc.c */ -#line 4169 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4163 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); for(double d = (yyvsp[(1) - (3)].d); ((yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d)) ? (d <= (yyvsp[(3) - (3)].d)) : (d >= (yyvsp[(3) - (3)].d)); ((yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d)) ? (d += 1.) : (d -= 1.)) List_Add((yyval.l), &d); - ;} + } break; case 387: -/* Line 1464 of yacc.c */ -#line 4176 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4170 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!(yyvsp[(5) - (5)].d) || ((yyvsp[(1) - (5)].d) < (yyvsp[(3) - (5)].d) && (yyvsp[(5) - (5)].d) < 0) || ((yyvsp[(1) - (5)].d) > (yyvsp[(3) - (5)].d) && (yyvsp[(5) - (5)].d) > 0)){ @@ -9698,13 +9714,13 @@ yyreduce: else for(double d = (yyvsp[(1) - (5)].d); ((yyvsp[(5) - (5)].d) > 0) ? (d <= (yyvsp[(3) - (5)].d)) : (d >= (yyvsp[(3) - (5)].d)); d += (yyvsp[(5) - (5)].d)) List_Add((yyval.l), &d); - ;} + } break; case 388: -/* Line 1464 of yacc.c */ -#line 4187 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4181 "Gmsh.y" { // Returns the coordinates of a point and fills a list with it. // This allows to ensure e.g. that relative point positions are @@ -9723,49 +9739,49 @@ yyreduce: List_Add((yyval.l), &v->Pos.Y); List_Add((yyval.l), &v->Pos.Z); } - ;} + } break; case 389: -/* Line 1464 of yacc.c */ -#line 4207 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4201 "Gmsh.y" { (yyval.l) = GetAllEntityNumbers(0); - ;} + } break; case 390: -/* Line 1464 of yacc.c */ -#line 4211 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4205 "Gmsh.y" { (yyval.l) = GetAllEntityNumbers(1); - ;} + } break; case 391: -/* Line 1464 of yacc.c */ -#line 4215 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4209 "Gmsh.y" { (yyval.l) = GetAllEntityNumbers(2); - ;} + } break; case 392: -/* Line 1464 of yacc.c */ -#line 4219 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4213 "Gmsh.y" { (yyval.l) = GetAllEntityNumbers(3); - ;} + } break; case 393: -/* Line 1464 of yacc.c */ -#line 4223 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4217 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -9782,13 +9798,13 @@ yyreduce: } } List_Delete((yyvsp[(4) - (5)].l)); - ;} + } break; case 394: -/* Line 1464 of yacc.c */ -#line 4241 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4235 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -9805,13 +9821,13 @@ yyreduce: } } List_Delete((yyvsp[(4) - (5)].l)); - ;} + } break; case 395: -/* Line 1464 of yacc.c */ -#line 4259 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4253 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -9828,13 +9844,13 @@ yyreduce: } } List_Delete((yyvsp[(4) - (5)].l)); - ;} + } break; case 396: -/* Line 1464 of yacc.c */ -#line 4277 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4271 "Gmsh.y" { (yyval.l) = List_Create(10, 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ @@ -9851,13 +9867,13 @@ yyreduce: } } List_Delete((yyvsp[(4) - (5)].l)); - ;} + } break; case 397: -/* Line 1464 of yacc.c */ -#line 4295 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4289 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -9866,13 +9882,13 @@ yyreduce: List_Add((yyval.l), &d); } List_Delete((yyvsp[(1) - (1)].l)); - ;} + } break; case 398: -/* Line 1464 of yacc.c */ -#line 4305 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4299 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -9881,13 +9897,13 @@ yyreduce: List_Add((yyval.l), &d); } List_Delete((yyvsp[(1) - (1)].l)); - ;} + } break; case 399: -/* Line 1464 of yacc.c */ -#line 4315 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4309 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) @@ -9898,13 +9914,13 @@ yyreduce: List_Add((yyval.l), &s.value[i]); } Free((yyvsp[(1) - (3)].c)); - ;} + } break; case 400: -/* Line 1464 of yacc.c */ -#line 4327 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4321 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(3) - (4)].c))) @@ -9915,13 +9931,13 @@ yyreduce: List_Add((yyval.l), &s.value[i]); } Free((yyvsp[(3) - (4)].c)); - ;} + } break; case 401: -/* Line 1464 of yacc.c */ -#line 4339 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4333 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) @@ -9938,41 +9954,41 @@ yyreduce: } Free((yyvsp[(1) - (6)].c)); List_Delete((yyvsp[(4) - (6)].l)); - ;} + } break; case 402: -/* Line 1464 of yacc.c */ -#line 4360 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4354 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); - ;} + } break; case 403: -/* Line 1464 of yacc.c */ -#line 4365 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4359 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); - ;} + } break; case 404: -/* Line 1464 of yacc.c */ -#line 4369 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4363 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].d))); - ;} + } break; case 405: -/* Line 1464 of yacc.c */ -#line 4373 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4367 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){ double d; @@ -9980,64 +9996,64 @@ yyreduce: List_Add((yyval.l), &d); } List_Delete((yyvsp[(3) - (3)].l)); - ;} + } break; case 406: -/* Line 1464 of yacc.c */ -#line 4385 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4379 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (9)].d), (int)(yyvsp[(4) - (9)].d), (int)(yyvsp[(6) - (9)].d), (int)(yyvsp[(8) - (9)].d)); - ;} + } break; case 407: -/* Line 1464 of yacc.c */ -#line 4389 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4383 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (7)].d), (int)(yyvsp[(4) - (7)].d), (int)(yyvsp[(6) - (7)].d), 255); - ;} + } break; case 408: -/* Line 1464 of yacc.c */ -#line 4401 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4395 "Gmsh.y" { int flag; (yyval.u) = GetColorForString(-1, (yyvsp[(1) - (1)].c), &flag); if(flag) yymsg(0, "Unknown color '%s'", (yyvsp[(1) - (1)].c)); Free((yyvsp[(1) - (1)].c)); - ;} + } break; case 409: -/* Line 1464 of yacc.c */ -#line 4408 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4402 "Gmsh.y" { unsigned int val = 0; ColorOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(5) - (5)].c), val); (yyval.u) = val; Free((yyvsp[(1) - (5)].c)); Free((yyvsp[(5) - (5)].c)); - ;} + } break; case 410: -/* Line 1464 of yacc.c */ -#line 4418 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4412 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); - ;} + } break; case 411: -/* Line 1464 of yacc.c */ -#line 4422 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4416 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (6)].d)); @@ -10048,41 +10064,41 @@ yyreduce: List_Add((yyval.l), &ct->table[i]); } Free((yyvsp[(1) - (6)].c)); - ;} + } break; case 412: -/* Line 1464 of yacc.c */ -#line 4437 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4431 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); List_Add((yyval.l), &((yyvsp[(1) - (1)].u))); - ;} + } break; case 413: -/* Line 1464 of yacc.c */ -#line 4442 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4436 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].u))); - ;} + } break; case 414: -/* Line 1464 of yacc.c */ -#line 4449 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4443 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); - ;} + } break; case 415: -/* Line 1464 of yacc.c */ -#line 4453 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4447 "Gmsh.y" { if(!gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c))){ yymsg(0, "Unknown string variable '%s'", (yyvsp[(1) - (1)].c)); @@ -10094,100 +10110,100 @@ yyreduce: strcpy((yyval.c), val.c_str()); Free((yyvsp[(1) - (1)].c)); } - ;} + } break; case 416: -/* Line 1464 of yacc.c */ -#line 4466 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4460 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), out); (yyval.c) = (char*)Malloc((out.size() + 1) * sizeof(char)); strcpy((yyval.c), out.c_str()); Free((yyvsp[(1) - (3)].c)); Free((yyvsp[(3) - (3)].c)); - ;} + } break; case 417: -/* Line 1464 of yacc.c */ -#line 4474 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4468 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), out); (yyval.c) = (char*)Malloc((out.size() + 1) * sizeof(char)); strcpy((yyval.c), out.c_str()); Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(6) - (6)].c)); - ;} + } break; case 418: -/* Line 1464 of yacc.c */ -#line 4485 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4479 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); - ;} + } break; case 419: -/* Line 1464 of yacc.c */ -#line 4489 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4483 "Gmsh.y" { (yyval.c) = (char *)Malloc(32 * sizeof(char)); time_t now; time(&now); strcpy((yyval.c), ctime(&now)); (yyval.c)[strlen((yyval.c)) - 1] = '\0'; - ;} + } break; case 420: -/* Line 1464 of yacc.c */ -#line 4497 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4491 "Gmsh.y" { const char *env = GetEnvironmentVar((yyvsp[(3) - (4)].c)); if(!env) env = ""; (yyval.c) = (char *)Malloc((sizeof(env) + 1) * sizeof(char)); strcpy((yyval.c), env); Free((yyvsp[(3) - (4)].c)); - ;} + } break; case 421: -/* Line 1464 of yacc.c */ -#line 4505 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4499 "Gmsh.y" { std::string s = Msg::GetString((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].c)); (yyval.c) = (char *)Malloc((s.size() + 1) * sizeof(char)); strcpy((yyval.c), s.c_str()); Free((yyvsp[(3) - (6)].c)); Free((yyvsp[(5) - (6)].c)); - ;} + } break; case 422: -/* Line 1464 of yacc.c */ -#line 4513 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4507 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (6)].c)) + strlen((yyvsp[(5) - (6)].c)) + 1) * sizeof(char)); strcpy((yyval.c), (yyvsp[(3) - (6)].c)); strcat((yyval.c), (yyvsp[(5) - (6)].c)); Free((yyvsp[(3) - (6)].c)); Free((yyvsp[(5) - (6)].c)); - ;} + } break; case 423: -/* Line 1464 of yacc.c */ -#line 4521 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4515 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -10200,13 +10216,13 @@ yyreduce: } if(i <= 0) strcpy((yyval.c), (yyvsp[(3) - (4)].c)); Free((yyvsp[(3) - (4)].c)); - ;} + } break; case 424: -/* Line 1464 of yacc.c */ -#line 4535 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4529 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -10219,22 +10235,22 @@ yyreduce: else strcpy((yyval.c), &(yyvsp[(3) - (4)].c)[i+1]); Free((yyvsp[(3) - (4)].c)); - ;} + } break; case 425: -/* Line 1464 of yacc.c */ -#line 4549 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4543 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); - ;} + } break; case 426: -/* Line 1464 of yacc.c */ -#line 4553 "Gmsh.y" +/* Line 1806 of yacc.c */ +#line 4547 "Gmsh.y" { char tmpstring[5000]; int i = PrintListOfDouble((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].l), tmpstring); @@ -10252,15 +10268,26 @@ yyreduce: Free((yyvsp[(3) - (6)].c)); } List_Delete((yyvsp[(5) - (6)].l)); - ;} + } break; -/* Line 1464 of yacc.c */ -#line 10262 "Gmsh.tab.cpp" +/* Line 1806 of yacc.c */ +#line 10278 "Gmsh.tab.cpp" default: break; } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); @@ -10288,6 +10315,10 @@ yyreduce: | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { @@ -10295,37 +10326,36 @@ yyerrlab: #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) { - YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); - if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) - { - YYSIZE_T yyalloc = 2 * yysize; - if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) - yyalloc = YYSTACK_ALLOC_MAXIMUM; - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yyalloc); - if (yymsg) - yymsg_alloc = yyalloc; - else - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - } - } - - if (0 < yysize && yysize <= yymsg_alloc) - { - (void) yysyntax_error (yymsg, yystate, yychar); - yyerror (yymsg); - } - else - { - yyerror (YY_("syntax error")); - if (yysize != 0) - goto yyexhaustedlab; - } + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; } +# undef YYSYNTAX_ERROR #endif } @@ -10384,7 +10414,7 @@ yyerrlab1: for (;;) { yyn = yypact[yystate]; - if (yyn != YYPACT_NINF) + if (!yypact_value_is_default (yyn)) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) @@ -10443,8 +10473,13 @@ yyexhaustedlab: yyreturn: if (yychar != YYEMPTY) - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); @@ -10469,8 +10504,8 @@ yyreturn: -/* Line 1684 of yacc.c */ -#line 4573 "Gmsh.y" +/* Line 2067 of yacc.c */ +#line 4567 "Gmsh.y" int PrintListOfDouble(char *format, List_T *list, char *buffer) diff --git a/Parser/Gmsh.tab.hpp b/Parser/Gmsh.tab.hpp index a8069b2a137fc824d3b96fdc7928a12293dfba6c..183f2c8754e87754af909d0f212fe36d5aaaf0f0 100644 --- a/Parser/Gmsh.tab.hpp +++ b/Parser/Gmsh.tab.hpp @@ -1,9 +1,8 @@ -/* A Bison parser, made by GNU Bison 2.4.3. */ +/* A Bison parser, made by GNU Bison 2.5. */ -/* Skeleton interface for Bison's Yacc-like parsers in C +/* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006, - 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -184,7 +183,7 @@ typedef union YYSTYPE { -/* Line 1685 of yacc.c */ +/* Line 2068 of yacc.c */ #line 92 "Gmsh.y" char *c; @@ -197,8 +196,8 @@ typedef union YYSTYPE -/* Line 1685 of yacc.c */ -#line 202 "Gmsh.tab.hpp" +/* Line 2068 of yacc.c */ +#line 201 "Gmsh.tab.hpp" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 194bcedec336953a49e8208e2ad6bedaf0444356..3984e1b50756a1a0f5c88a0a61eb2def0c03b423 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -3746,8 +3746,6 @@ Homology : HomologyCommand tEND { std::vector<int> domain, subdomain, dim; - if(GModel::current()->getDim() != 1) dim.push_back(1); - if(GModel::current()->getDim() != 2) dim.push_back(2); GModel::current()->addHomologyRequest($1, domain, subdomain, dim); } | HomologyCommand '{' ListOfDouble '}' tEND @@ -3758,8 +3756,6 @@ Homology : List_Read($3, i, &d); domain.push_back((int)d); } - if(GModel::current()->getDim() != 1) dim.push_back(1); - if(GModel::current()->getDim() != 2) dim.push_back(2); GModel::current()->addHomologyRequest($1, domain, subdomain, dim); List_Delete($3); } @@ -3776,8 +3772,6 @@ Homology : List_Read($5, i, &d); subdomain.push_back((int)d); } - if(GModel::current()->getDim() != 1) dim.push_back(1); - if(GModel::current()->getDim() != 2) dim.push_back(2); GModel::current()->addHomologyRequest($1, domain, subdomain, dim); List_Delete($3); List_Delete($5); diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index e1cdbb6b9c4445574bdd385a133035ec7831c8df..51862f0c4cfa2ba097069bc0e468aa7d8966ace2 100644 --- a/Parser/Gmsh.yy.cpp +++ b/Parser/Gmsh.yy.cpp @@ -66,7 +66,6 @@ typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; -typedef uint64_t flex_uint64_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; @@ -74,7 +73,6 @@ typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN @@ -105,6 +103,8 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif +#endif /* ! C99 */ + #endif /* ! FLEXINT_H */ #ifdef __cplusplus @@ -161,7 +161,15 @@ typedef unsigned int flex_uint32_t; /* Size of default input buffer. */ #ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else #define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -173,12 +181,7 @@ typedef unsigned int flex_uint32_t; typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern yy_size_t gmsh_yyleng; +extern int gmsh_yyleng; extern FILE *gmsh_yyin, *gmsh_yyout; @@ -204,6 +207,11 @@ extern FILE *gmsh_yyin, *gmsh_yyout; #define unput(c) yyunput( c, (yytext_ptr) ) +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state @@ -221,7 +229,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - yy_size_t yy_n_chars; + int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -291,8 +299,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* yy_hold_char holds the character lost when gmsh_yytext is formed. */ static char yy_hold_char; -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ -yy_size_t gmsh_yyleng; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int gmsh_yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; @@ -320,7 +328,7 @@ static void gmsh_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); YY_BUFFER_STATE gmsh_yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE gmsh_yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE gmsh_yy_scan_bytes (yyconst char *bytes,yy_size_t len ); +YY_BUFFER_STATE gmsh_yy_scan_bytes (yyconst char *bytes,int len ); void *gmsh_yyalloc (yy_size_t ); void *gmsh_yyrealloc (void *,yy_size_t ); @@ -375,7 +383,7 @@ static void yy_fatal_error (yyconst char msg[] ); */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ - gmsh_yyleng = (yy_size_t) (yy_cp - yy_bp); \ + gmsh_yyleng = (size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; @@ -951,7 +959,7 @@ void skipline(void); #define YY_NO_UNISTD_H #endif -#line 955 "Gmsh.yy.cpp" +#line 963 "Gmsh.yy.cpp" #define INITIAL 0 @@ -990,7 +998,7 @@ FILE *gmsh_yyget_out (void ); void gmsh_yyset_out (FILE * out_str ); -yy_size_t gmsh_yyget_leng (void ); +int gmsh_yyget_leng (void ); char *gmsh_yyget_text (void ); @@ -1032,7 +1040,12 @@ static int input (void ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else #define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -1040,7 +1053,7 @@ static int input (void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO fwrite( gmsh_yytext, gmsh_yyleng, 1, gmsh_yyout ) +#define ECHO do { if (fwrite( gmsh_yytext, gmsh_yyleng, 1, gmsh_yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -1051,7 +1064,7 @@ static int input (void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - yy_size_t n; \ + size_t n; \ for ( n = 0; n < max_size && \ (c = getc( gmsh_yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -1136,7 +1149,7 @@ YY_DECL #line 49 "Gmsh.l" -#line 1140 "Gmsh.yy.cpp" +#line 1153 "Gmsh.yy.cpp" if ( !(yy_init) ) { @@ -2011,7 +2024,7 @@ YY_RULE_SETUP #line 235 "Gmsh.l" ECHO; YY_BREAK -#line 2015 "Gmsh.yy.cpp" +#line 2028 "Gmsh.yy.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -2197,7 +2210,7 @@ static int yy_get_next_buffer (void) else { - yy_size_t num_to_read = + int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -2211,7 +2224,7 @@ static int yy_get_next_buffer (void) if ( b->yy_is_our_buffer ) { - yy_size_t new_size = b->yy_buf_size * 2; + int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -2242,7 +2255,7 @@ static int yy_get_next_buffer (void) /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); + (yy_n_chars), (size_t) num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } @@ -2352,7 +2365,7 @@ static int yy_get_next_buffer (void) if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - register yy_size_t number_to_move = (yy_n_chars) + 2; + register int number_to_move = (yy_n_chars) + 2; register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = @@ -2401,7 +2414,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -2425,7 +2438,7 @@ static int yy_get_next_buffer (void) case EOB_ACT_END_OF_FILE: { if ( gmsh_yywrap( ) ) - return 0; + return EOF; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; @@ -2677,7 +2690,7 @@ void gmsh_yypop_buffer_state (void) */ static void gmsh_yyensure_buffer_stack (void) { - yy_size_t num_to_alloc; + int num_to_alloc; if (!(yy_buffer_stack)) { @@ -2769,16 +2782,17 @@ YY_BUFFER_STATE gmsh_yy_scan_string (yyconst char * yystr ) /** Setup the input buffer state to scan the given bytes. The next call to gmsh_yylex() will * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE gmsh_yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +YY_BUFFER_STATE gmsh_yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; - yy_size_t n, i; + yy_size_t n; + int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; @@ -2860,7 +2874,7 @@ FILE *gmsh_yyget_out (void) /** Get the length of the current token. * */ -yy_size_t gmsh_yyget_leng (void) +int gmsh_yyget_leng (void) { return gmsh_yyleng; } diff --git a/Plugin/HomologyComputation.cpp b/Plugin/HomologyComputation.cpp index d7cbaf402ab075a2811bdc37fcf94aaafbbe0967..9d52c8714a0800318f9ed08980208849a713dd47 100644 --- a/Plugin/HomologyComputation.cpp +++ b/Plugin/HomologyComputation.cpp @@ -24,7 +24,7 @@ StringXNumber HomologyComputationOptions_Number[] = { {GMSH_FULLRC, "CohomologyPhysicalGroupsBegin", NULL, -1.}, {GMSH_FULLRC, "CreatePostProcessingViews", NULL, 1.}, {GMSH_FULLRC, "ReductionOmit", NULL, 1.}, - {GMSH_FULLRC, "ReductionCombine", NULL, 1.}, + {GMSH_FULLRC, "ReductionCombine", NULL, 2.}, {GMSH_FULLRC, "PostProcessSmoothen", NULL, 1.} }; @@ -109,7 +109,7 @@ PView *GMSH_HomologyComputationPlugin::execute(PView *v) int cohpg = (int)HomologyComputationOptions_Number[3].def; bool pviews = (bool)HomologyComputationOptions_Number[4].def; bool omit = (bool)HomologyComputationOptions_Number[5].def; - bool combine = (bool)HomologyComputationOptions_Number[6].def; + int combine = (int)HomologyComputationOptions_Number[6].def; bool smoothen = (bool)HomologyComputationOptions_Number[7].def; std::vector<int> domain; @@ -127,8 +127,8 @@ PView *GMSH_HomologyComputationPlugin::execute(PView *v) true, combine, omit, smoothen); homology->setFileName(fileName); - if(hom != 0) homology->findHomologyBasis(); - if(coh != 0) homology->findCohomologyBasis(); + if(hom != 0) homology->findHomologyBasis(dimsave); + if(coh != 0) homology->findCohomologyBasis(dimsave); for(unsigned int i = 0; i < dimsave.size(); i++) { int dim = dimsave.at(i); diff --git a/Plugin/HomologyPostProcessing.cpp b/Plugin/HomologyPostProcessing.cpp index bc5133ba1dfd806cf70033395d09035417a460dd..72dc4f1095a65a2a9fddab839698ebe27086a8e5 100644 --- a/Plugin/HomologyPostProcessing.cpp +++ b/Plugin/HomologyPostProcessing.cpp @@ -40,13 +40,24 @@ extern "C" std::string GMSH_HomologyPostProcessingPlugin::getHelp() const { return "Plugin(HomologyPostProcessing) operates on representative " - "basis chains of homology and cohomology spaces.\n\n" + "basis chains of homology and cohomology spaces. Functionality:\n\n" + + "1. (co)homology basis transformation:\n " + "'TransformationMatrix': Integer matrix of the transformation.\n " + "'PhysicalGroupsOfOperatedChains': (Co)chains of a (co)homology space basis to be transformed.\n " + "Results a new (co)chain basis that is an integer cobination of the given basis. \n\n" + + "2. Make basis representations of a homology space and a cohomology space " + "compatible: \n" + "'PhysicalGroupsOfOperatedChains': Chains of a homology space basis.\n" + "'PhysicalGroupsOfOperatedChains2': Cochains of a cohomology space basis.\n" + "Results a new basis for the homology space such that the incidence matrix of the new basis and the basis of the cohomology space is the identity matrix.\n\n" + + "Options:\n" + "'PhysicalGroupsToTraceResults': Trace the resulting cochains to the given physical groups.\n" + "'NameForResultChains': Post-processing view name prefix for the results.\n" + "'ApplyBoundaryOperatorToResults': Apply boundary operator to the resulting chains.\n"; - "Define the physical groups of chains and their dimension " - "to be transformed by the " - "given integer transformation matrix. Number of matrix columns must " - "equal to the number of chains given. The resulting " - "chains are thus integer combinations of the given chains. "; } int GMSH_HomologyPostProcessingPlugin::getNbOptions() const diff --git a/doc/texinfo/gmsh.texi b/doc/texinfo/gmsh.texi index 543f84b534727a09a58a4fc5a900fb4e1ad4ba2c..ee1fcfab44bbdf90c9acda45f863fb5729b33b32 100644 --- a/doc/texinfo/gmsh.texi +++ b/doc/texinfo/gmsh.texi @@ -3030,16 +3030,18 @@ Sets number of elliptic smoothing steps for the surfaces listed in @var{expression-list} (smoothing only applies to transfinite meshes at the moment). -@item Homology @{ @{ @var{expression-list} @}, @{ @var{expression-list} @} @}; +@item Homology ( @{ @var{expression-list} @} ) @{ @{ @var{expression-list} @} , @{ @var{expression-list} @} @}; Compute a basis representation for homology spaces after a mesh has -been generated. The first @var{expression-list} is a list of physical -groups that constitute the computation domain. The second -@var{expression-list} is a list of physical groups that constitute the -relative subdomain of relative homology computation; if empty, -absolute homology is computed. Resulting basis representation chains -are stored as physical groups in the mesh. - -@item Cohomology @{ @{ @var{expression-list} @}, @{ @var{expression-list} @} @}; +been generated. The first @var{expression-list} is a list of +dimensions whose homology bases are computed; if empty, all bases are +computed. The second @var{expression-list} is a list physical groups +that constitute the computation domain; if empty, the whole mesh is +the domain. The third @var{expression-list} is a list of physical +groups that constitute the relative subdomain of relative homology +computation; if empty, absolute homology is computed. Resulting basis +representation chains are stored as physical groups in the mesh. + +@item Cohomology ( @{ @var{expression-list} @} ) @{ @{ @var{expression-list} @} , @{ @var{expression-list} @} @}; Similar to command @code{Homology}, but computes a basis representation for cohomology spaces instead.