LCOV - code coverage report
Current view: top level - extensions/spellcheck/hunspell/src - affentry.hxx (source / functions) Hit Total Coverage
Test: output.info Lines: 0 33 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 35 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* ***** BEGIN LICENSE BLOCK *****
       2             :  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
       3             :  *
       4             :  * Copyright (C) 2002-2017 Németh László
       5             :  *
       6             :  * The contents of this file are subject to the Mozilla Public License Version
       7             :  * 1.1 (the "License"); you may not use this file except in compliance with
       8             :  * the License. You may obtain a copy of the License at
       9             :  * http://www.mozilla.org/MPL/
      10             :  *
      11             :  * Software distributed under the License is distributed on an "AS IS" basis,
      12             :  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
      13             :  * for the specific language governing rights and limitations under the
      14             :  * License.
      15             :  *
      16             :  * Hunspell is based on MySpell which is Copyright (C) 2002 Kevin Hendricks.
      17             :  *
      18             :  * Contributor(s): David Einstein, Davide Prina, Giuseppe Modugno,
      19             :  * Gianluca Turconi, Simon Brouwer, Noll János, Bíró Árpád,
      20             :  * Goldman Eleonóra, Sarlós Tamás, Bencsáth Boldizsár, Halácsy Péter,
      21             :  * Dvornik László, Gefferth András, Nagy Viktor, Varga Dániel, Chris Halls,
      22             :  * Rene Engelhard, Bram Moolenaar, Dafydd Jones, Harri Pitkänen
      23             :  *
      24             :  * Alternatively, the contents of this file may be used under the terms of
      25             :  * either the GNU General Public License Version 2 or later (the "GPL"), or
      26             :  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
      27             :  * in which case the provisions of the GPL or the LGPL are applicable instead
      28             :  * of those above. If you wish to allow use of your version of this file only
      29             :  * under the terms of either the GPL or the LGPL, and not to allow others to
      30             :  * use your version of this file under the terms of the MPL, indicate your
      31             :  * decision by deleting the provisions above and replace them with the notice
      32             :  * and other provisions required by the GPL or the LGPL. If you do not delete
      33             :  * the provisions above, a recipient may use your version of this file under
      34             :  * the terms of any one of the MPL, the GPL or the LGPL.
      35             :  *
      36             :  * ***** END LICENSE BLOCK ***** */
      37             : /*
      38             :  * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada
      39             :  * And Contributors.  All rights reserved.
      40             :  *
      41             :  * Redistribution and use in source and binary forms, with or without
      42             :  * modification, are permitted provided that the following conditions
      43             :  * are met:
      44             :  *
      45             :  * 1. Redistributions of source code must retain the above copyright
      46             :  *    notice, this list of conditions and the following disclaimer.
      47             :  *
      48             :  * 2. Redistributions in binary form must reproduce the above copyright
      49             :  *    notice, this list of conditions and the following disclaimer in the
      50             :  *    documentation and/or other materials provided with the distribution.
      51             :  *
      52             :  * 3. All modifications to the source code must be clearly marked as
      53             :  *    such.  Binary redistributions based on modified source code
      54             :  *    must be clearly marked as modified versions in the documentation
      55             :  *    and/or other materials provided with the distribution.
      56             :  *
      57             :  * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS
      58             :  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      59             :  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
      60             :  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
      61             :  * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
      62             :  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
      63             :  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
      64             :  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      65             :  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
      66             :  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
      67             :  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
      68             :  * SUCH DAMAGE.
      69             :  */
      70             : 
      71             : #ifndef AFFIX_HXX_
      72             : #define AFFIX_HXX_
      73             : 
      74             : #include "atypes.hxx"
      75             : #include "baseaffix.hxx"
      76             : #include "affixmgr.hxx"
      77             : 
      78             : /* A Prefix Entry  */
      79             : 
      80           0 : class PfxEntry : public AffEntry {
      81             :  private:
      82             :   PfxEntry(const PfxEntry&);
      83             :   PfxEntry& operator=(const PfxEntry&);
      84             : 
      85             :  private:
      86             :   AffixMgr* pmyMgr;
      87             : 
      88             :   PfxEntry* next;
      89             :   PfxEntry* nexteq;
      90             :   PfxEntry* nextne;
      91             :   PfxEntry* flgnxt;
      92             : 
      93             :  public:
      94             :   explicit PfxEntry(AffixMgr* pmgr);
      95             : 
      96           0 :   bool allowCross() const { return ((opts & aeXPRODUCT) != 0); }
      97             :   struct hentry* checkword(const char* word,
      98             :                            int len,
      99             :                            char in_compound,
     100             :                            const FLAG needflag = FLAG_NULL);
     101             : 
     102             :   struct hentry* check_twosfx(const char* word,
     103             :                               int len,
     104             :                               char in_compound,
     105             :                               const FLAG needflag = FLAG_NULL);
     106             : 
     107             :   std::string check_morph(const char* word,
     108             :                           int len,
     109             :                           char in_compound,
     110             :                           const FLAG needflag = FLAG_NULL);
     111             : 
     112             :   std::string check_twosfx_morph(const char* word,
     113             :                                  int len,
     114             :                                  char in_compound,
     115             :                                  const FLAG needflag = FLAG_NULL);
     116             : 
     117           0 :   FLAG getFlag() { return aflag; }
     118           0 :   const char* getKey() { return appnd.c_str(); }
     119             :   std::string add(const char* word, size_t len);
     120             : 
     121           0 :   inline short getKeyLen() { return appnd.size(); }
     122             : 
     123           0 :   inline const char* getMorph() { return morphcode; }
     124             : 
     125           0 :   inline const unsigned short* getCont() { return contclass; }
     126           0 :   inline short getContLen() { return contclasslen; }
     127             : 
     128           0 :   inline PfxEntry* getNext() { return next; }
     129           0 :   inline PfxEntry* getNextNE() { return nextne; }
     130           0 :   inline PfxEntry* getNextEQ() { return nexteq; }
     131           0 :   inline PfxEntry* getFlgNxt() { return flgnxt; }
     132             : 
     133           0 :   inline void setNext(PfxEntry* ptr) { next = ptr; }
     134           0 :   inline void setNextNE(PfxEntry* ptr) { nextne = ptr; }
     135           0 :   inline void setNextEQ(PfxEntry* ptr) { nexteq = ptr; }
     136           0 :   inline void setFlgNxt(PfxEntry* ptr) { flgnxt = ptr; }
     137             : 
     138             :   inline char* nextchar(char* p);
     139             :   inline int test_condition(const char* st);
     140             : };
     141             : 
     142             : /* A Suffix Entry */
     143             : 
     144           0 : class SfxEntry : public AffEntry {
     145             :  private:
     146             :   SfxEntry(const SfxEntry&);
     147             :   SfxEntry& operator=(const SfxEntry&);
     148             : 
     149             :  private:
     150             :   AffixMgr* pmyMgr;
     151             :   std::string rappnd;
     152             : 
     153             :   SfxEntry* next;
     154             :   SfxEntry* nexteq;
     155             :   SfxEntry* nextne;
     156             :   SfxEntry* flgnxt;
     157             : 
     158             :   SfxEntry* l_morph;
     159             :   SfxEntry* r_morph;
     160             :   SfxEntry* eq_morph;
     161             : 
     162             :  public:
     163             :   explicit SfxEntry(AffixMgr* pmgr);
     164             : 
     165           0 :   bool allowCross() const { return ((opts & aeXPRODUCT) != 0); }
     166             :   struct hentry* checkword(const char* word,
     167             :                            int len,
     168             :                            int optflags,
     169             :                            PfxEntry* ppfx,
     170             :                            const FLAG cclass,
     171             :                            const FLAG needflag,
     172             :                            const FLAG badflag);
     173             : 
     174             :   struct hentry* check_twosfx(const char* word,
     175             :                               int len,
     176             :                               int optflags,
     177             :                               PfxEntry* ppfx,
     178             :                               const FLAG needflag = FLAG_NULL);
     179             : 
     180             :   std::string check_twosfx_morph(const char* word,
     181             :                                  int len,
     182             :                                  int optflags,
     183             :                                  PfxEntry* ppfx,
     184             :                                  const FLAG needflag = FLAG_NULL);
     185             :   struct hentry* get_next_homonym(struct hentry* he);
     186             :   struct hentry* get_next_homonym(struct hentry* word,
     187             :                                   int optflags,
     188             :                                   PfxEntry* ppfx,
     189             :                                   const FLAG cclass,
     190             :                                   const FLAG needflag);
     191             : 
     192           0 :   FLAG getFlag() { return aflag; }
     193           0 :   const char* getKey() { return rappnd.c_str(); }
     194             :   std::string add(const char* word, size_t len);
     195             : 
     196           0 :   inline const char* getMorph() { return morphcode; }
     197             : 
     198           0 :   inline const unsigned short* getCont() { return contclass; }
     199           0 :   inline short getContLen() { return contclasslen; }
     200           0 :   inline const char* getAffix() { return appnd.c_str(); }
     201             : 
     202           0 :   inline short getKeyLen() { return appnd.size(); }
     203             : 
     204           0 :   inline SfxEntry* getNext() { return next; }
     205           0 :   inline SfxEntry* getNextNE() { return nextne; }
     206           0 :   inline SfxEntry* getNextEQ() { return nexteq; }
     207             : 
     208             :   inline SfxEntry* getLM() { return l_morph; }
     209             :   inline SfxEntry* getRM() { return r_morph; }
     210             :   inline SfxEntry* getEQM() { return eq_morph; }
     211           0 :   inline SfxEntry* getFlgNxt() { return flgnxt; }
     212             : 
     213           0 :   inline void setNext(SfxEntry* ptr) { next = ptr; }
     214           0 :   inline void setNextNE(SfxEntry* ptr) { nextne = ptr; }
     215           0 :   inline void setNextEQ(SfxEntry* ptr) { nexteq = ptr; }
     216           0 :   inline void setFlgNxt(SfxEntry* ptr) { flgnxt = ptr; }
     217             :   void initReverseWord();
     218             : 
     219             :   inline char* nextchar(char* p);
     220             :   inline int test_condition(const char* st, const char* begin);
     221             : };
     222             : 
     223             : #endif

Generated by: LCOV version 1.13