Back to index

lightning-sunbird  0.9+nobinonly
affentry.hxx
Go to the documentation of this file.
00001 #ifndef _AFFIX_HXX_
00002 #define _AFFIX_HXX_
00003 
00004 #include "atypes.hxx"
00005 #include "baseaffix.hxx"
00006 #include "affixmgr.hxx"
00007 
00008 
00009 /* A Prefix Entry  */
00010 
00011 class PfxEntry : public AffEntry
00012 {
00013        AffixMgr*    pmyMgr;
00014 
00015        PfxEntry * next;
00016        PfxEntry * nexteq;
00017        PfxEntry * nextne;
00018        PfxEntry * flgnxt;
00019 
00020 public:
00021 
00022   PfxEntry(AffixMgr* pmgr, affentry* dp );
00023   ~PfxEntry();
00024 
00025   struct hentry *      check(const char * word, int len);
00026 
00027   inline bool          allowCross() { return ((xpflg & XPRODUCT) != 0); }
00028   inline unsigned char getFlag()   { return achar;   }
00029   inline const char *  getKey()    { return appnd;  } 
00030   char *               add(const char * word, int len);
00031 
00032   inline PfxEntry *    getNext()   { return next;   }
00033   inline PfxEntry *    getNextNE() { return nextne; }
00034   inline PfxEntry *    getNextEQ() { return nexteq; }
00035   inline PfxEntry *    getFlgNxt() { return flgnxt; }
00036 
00037   inline void   setNext(PfxEntry * ptr)   { next = ptr;   }
00038   inline void   setNextNE(PfxEntry * ptr) { nextne = ptr; }
00039   inline void   setNextEQ(PfxEntry * ptr) { nexteq = ptr; }
00040   inline void   setFlgNxt(PfxEntry * ptr) { flgnxt = ptr; }
00041 };
00042 
00043 
00044 
00045 
00046 /* A Suffix Entry */
00047 
00048 class SfxEntry : public AffEntry
00049 {
00050        AffixMgr*    pmyMgr;
00051        char *       rappnd;
00052 
00053        SfxEntry *   next;
00054        SfxEntry *   nexteq;
00055        SfxEntry *   nextne;
00056        SfxEntry *   flgnxt;
00057 
00058 public:
00059 
00060   SfxEntry(AffixMgr* pmgr, affentry* dp );
00061   ~SfxEntry();
00062 
00063   struct hentry *   check(const char * word, int len, int optflags, 
00064                                                        AffEntry* ppfx);
00065 
00066   inline bool          allowCross() { return ((xpflg & XPRODUCT) != 0); }
00067   inline unsigned char getFlag()   { return achar;   }
00068   inline const char *  getKey()    { return rappnd; } 
00069   char *               add(const char * word, int len);
00070 
00071   inline SfxEntry *    getNext()   { return next;   }
00072   inline SfxEntry *    getNextNE() { return nextne; }
00073   inline SfxEntry *    getNextEQ() { return nexteq; }
00074   inline SfxEntry *    getFlgNxt() { return flgnxt; }
00075 
00076   inline void   setNext(SfxEntry * ptr)   { next = ptr;   }
00077   inline void   setNextNE(SfxEntry * ptr) { nextne = ptr; }
00078   inline void   setNextEQ(SfxEntry * ptr) { nexteq = ptr; }
00079   inline void   setFlgNxt(SfxEntry * ptr) { flgnxt = ptr; }
00080 
00081 };
00082 
00083 
00084 #endif
00085 
00086