Blame view
tools/sctk-2.4.10/src/asclite/core/graphalignedtoken.cpp
2.98 KB
8dcb6dfcb first commit |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
/* * ASCLITE * Author: Jerome Ajot, Jon Fiscus, Nicolas Radde, Chris Laprun * * This software was developed at the National Institute of Standards and Technology by * employees of the Federal Government in the course of their official duties. Pursuant * to title 17 Section 105 of the United States Code this software is not subject to * copyright protection and is in the public domain. ASCLITE is an experimental system. * NIST assumes no responsibility whatsoever for its use by other parties, and makes no * guarantees, expressed or implied, about its quality, reliability, or any other * characteristic. We would appreciate acknowledgement if the software is used. * * THIS SOFTWARE IS PROVIDED "AS IS." With regard to this software, NIST MAKES NO EXPRESS * OR IMPLIED WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING MERCHANTABILITY, * OR FITNESS FOR A PARTICULAR PURPOSE. */ /** Class to aligned tokens returned by the graph */ #include "graphalignedtoken.h" /** Constructor with the number of dimension */ GraphAlignedToken::GraphAlignedToken(const size_t& _dimension) { m_Dimension = _dimension; m_TabAlignedTokens = new Token* [m_Dimension]; for(size_t i = 0; i < m_Dimension; ++i) { m_TabAlignedTokens[i] = NULL; } } /** Destructor */ GraphAlignedToken::~GraphAlignedToken() { if(m_TabAlignedTokens) delete [] m_TabAlignedTokens; } /** Set the pointer of a token */ void GraphAlignedToken::SetToken(const size_t& dim, Token* token) { if(dim < GetDimension()) { m_TabAlignedTokens[dim] = token; } else { printf("GraphAlignedToken::SetToken() Invalid dimension (%li), max: %li Exiting! ", dim, m_Dimension); exit(E_INVALID); } } string GraphAlignedToken::ToString() { string result = "["; Token* token; for (size_t i = 0; i < m_Dimension; ++i) { token = m_TabAlignedTokens[i]; result += ((token != NULL) ? token->GetText() : "*") + " "; } result += "]"; return result; } /** * Redefine the == operator to go through all the object for the comparison */ bool GraphAlignedToken::operator ==(const GraphAlignedToken & gat) const { if(m_Dimension != gat.m_Dimension) return false; for (size_t i=0 ; i < m_Dimension ; ++i) { Token* left = m_TabAlignedTokens[i]; Token* right = gat.m_TabAlignedTokens[i]; if (left == NULL) { if(right != NULL) return false; } else if (!left->Equals(right)) { return false; } } return true; } bool GraphAlignedToken::operator !=(const GraphAlignedToken & gat) const { if(m_Dimension != gat.m_Dimension) return true; for (size_t i=0 ; i < m_Dimension ; ++i) { Token* left = m_TabAlignedTokens[i]; Token* right = gat.m_TabAlignedTokens[i]; if (left == NULL) { if(right != NULL) return true; } else if (!left->Equals(right)) { return true; } } return false; } |