LCOV - code coverage report
Current view: top level - src - EquivClass.h (source / functions) Hit Total Coverage
Test: app.info Lines: 5 5 100.0 %
Date: 2010-12-13 Functions: 5 5 100.0 %
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : // $Id: EquivClass.h 6219 2008-10-01 05:39:07Z vern $
       2                 :            : //
       3                 :            : // See the file "COPYING" in the main distribution directory for copyright.
       4                 :            : 
       5                 :            : #ifndef equiv_class_h
       6                 :            : #define equiv_class_h
       7                 :            : 
       8                 :            : #include <stdio.h>
       9                 :            : 
      10                 :            : #include "CCL.h"
      11                 :            : 
      12                 :            : class EquivClass {
      13                 :            : public:
      14                 :            :         EquivClass(int size);
      15                 :            :         ~EquivClass();
      16                 :            : 
      17                 :            :         void UniqueChar(int sym);
      18                 :            :         void CCL_Use(CCL* ccl);
      19                 :            : 
      20                 :            :         // All done adding character usage info - generate equivalence
      21                 :            :         // classes.  Returns number of classes.
      22                 :            :         int BuildECs();
      23                 :            : 
      24                 :            :         void ConvertCCL(CCL* ccl);
      25                 :            : 
      26                 :      32107 :         int IsRep(int sym) const                { return rep[sym] == sym; }
      27                 :       1438 :         int EquivRep(int sym) const             { return rep[sym]; }
      28                 :      28053 :         int SymEquivClass(int sym) const        { return equiv_class[sym]; }
      29                 :        444 :         int* EquivClasses() const               { return equiv_class; }
      30                 :            : 
      31                 :            :         int NumSyms() const     { return size; }
      32                 :       1164 :         int NumClasses() const  { return num_ecs; }
      33                 :            : 
      34                 :            :         void Dump(FILE* f);
      35                 :            :         int Size() const;
      36                 :            : 
      37                 :            : protected:
      38                 :            :         int size;       // size of character set
      39                 :            :         int num_ecs;    // size of equivalence classes
      40                 :            :         int* fwd;       // forward list of different classes
      41                 :            :         int* bck;       // backward list
      42                 :            :         int* equiv_class;       // symbol's equivalence class
      43                 :            :         int* rep;       // representative for symbol's equivalence class
      44                 :            :         int* ccl_flags;
      45                 :            :         int ec_nil, no_class, no_rep;
      46                 :            : };
      47                 :            : 
      48                 :            : #endif

Generated by: LCOV version 1.8