LCOV - app.info - gfx/graphite2/src/inc/FeatureVal.h

LCOV - code coverage report
| Current view: | directory - gfx/graphite2/src/inc - FeatureVal.h (source / functions) |  | Found | Hit | Coverage |
| Test: | app.info | Lines: | 6 | 0 | 0.0 %
| Date: | 2012-07-07 | Functions: | 8 | 0 | 0.0 %

           1                 : /*  GRAPHITE2 LICENSING
           2                 :
           3                 :     Copyright 2010, SIL International
           4                 :     All rights reserved.
           5                 :
           6                 :     This library is free software; you can redistribute it and/or modify
           7                 :     it under the terms of the GNU Lesser General Public License as published
           8                 :     by the Free Software Foundation; either version 2.1 of License, or
           9                 :     (at your option) any later version.
          10                 :
          11                 :     This program is distributed in the hope that it will be useful,
          12                 :     but WITHOUT ANY WARRANTY; without even the implied warranty of
          13                 :     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
          14                 :     Lesser General Public License for more details.
          15                 :
          16                 :     You should also have received a copy of the GNU Lesser General Public
          17                 :     License along with this library in the file named "LICENSE".
          18                 :     If not, write to the Free Software Foundation, 51 Franklin Street,
          19                 :     Suite 500, Boston, MA 02110-1335, USA or visit their web page on the
          20                 :     internet at http://www.fsf.org/licenses/lgpl.html.
          21                 :
          22                 : Alternatively, the contents of this file may be used under the terms of the
          23                 : Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
          24                 : License, as published by the Free Software Foundation, either version 2
          25                 : of the License or (at your option) any later version.
          26                 : */
          27                 : #pragma once
          28                 : #include <cstring>
          29                 : #include <cassert>
          30                 : #include "inc/Main.h"
          31                 : #include "inc/List.h"
          32                 :
          33                 : namespace graphite2 {
          34                 :
          35                 : class FeatureRef;
          36                 : class FeatureMap;
          37                 :
          38                 : class FeatureVal : public Vector<uint32>
          39               0 : {
          40                 : public:
          41                 :     uint32 maskedOr(const FeatureVal &other, const FeatureVal &mask) {
          42                 :         uint32 len = size() ;
          43                 :         if (other.size()<len) len = other.size();            //defensive
          44                 :         if (mask.size()<len) len = mask.size();              //defensive
          45                 :         for (uint32 i = 0; i < len; i++)
          46                 :             if (mask[i]) operator[](i) = (operator[](i) & ~mask[i]) | (other[i] & mask[i]);
          47                 :         return len;
          48                 :     }
          49                 :
          50               0 :     FeatureVal() : m_pMap(0) { }
          51               0 :     FeatureVal(int num, const FeatureMap & pMap) : Vector<uint32>(num), m_pMap(&pMap) {}
          52               0 :     FeatureVal(const FeatureVal & rhs) : Vector<uint32>(rhs), m_pMap(rhs.m_pMap) {}
          53                 :
          54                 :     bool operator ==(const FeatureVal & b) const
          55                 :     {
          56                 :         size_t n = size();
          57                 :         if (n != b.size())      return false;
          58                 :
          59                 :         for(const_iterator l = begin(), r = b.begin(); n && *l == *r; --n, ++l, ++r);
          60                 :
          61                 :         return n == 0;
          62                 :     }
          63                 :
          64               0 :     CLASS_NEW_DELETE
          65                 : private:
          66                 :     friend class FeatureRef;            //so that FeatureRefs can manipulate m_vec directly
          67                 :     const FeatureMap* m_pMap;
          68                 : };
          69                 :
          70                 : typedef FeatureVal Features;
          71                 :
          72                 : } // namespace graphite2
          73                 :
          74                 :
          75               0 : struct gr_feature_val : public graphite2::FeatureVal {};

Generated by: LCOV version 1.7