00001 #ifndef FG_SXTOKEN_H
00002 #define FG_SXTOKEN_H
00003
00004 #include <string>
00005 #include <list>
00006 #include <map>
00007 #include <iostream>
00008
00009 #include "fg_sxrel.h"
00010
00011 using namespace std;
00012
00028 class SxToken
00029 {
00030
00031 public:
00032
00037 enum SxTokenCat
00038 {
00039 SxC_NONE = 0,
00040 SxC_Adj,
00041 SxC_Adj11,
00042 SxC_Adj1P,
00043 SxC_Adj1S,
00044 SxC_AdjFP,
00045 SxC_AdjFS,
00046 SxC_AdjIng,
00047 SxC_AdjMP,
00048 SxC_AdjMS,
00049 SxC_AdjNum,
00050 SxC_Adv,
00051 SxC_AdvGP,
00052 SxC_Advp,
00053 SxC_CCoord,
00054 SxC_CSub,
00055 SxC_Det,
00056 SxC_Det11,
00057 SxC_Det1P,
00058 SxC_Det1S,
00059 SxC_DetFP,
00060 SxC_DetFS,
00061 SxC_DetMP,
00062 SxC_DetMS,
00063 SxC_DetNum,
00064 SxC_Elim,
00065 SxC_Nom1P,
00066 SxC_Nom1Pp,
00067 SxC_Nom1S,
00068 SxC_Nom1Sp,
00069 SxC_NomFP,
00070 SxC_NomFS,
00071 SxC_NomInc,
00072 SxC_NomIng,
00073 SxC_NomMP,
00074 SxC_NomMS,
00075 SxC_NomPr,
00076 SxC_NomPrXXInc,
00077 SxC_NomPrXXPrenom,
00078 SxC_NomXXAdr,
00079 SxC_NomXXDate,
00080 SxC_NomXXMes,
00081 SxC_NomXXMon,
00082 SxC_NomXXNum,
00083 SxC_NomXXTitre,
00084 SxC_NomXXUrl,
00085 SxC_Num,
00086 SxC_POS,
00087 SxC_Ppa,
00088 SxC_PpaFP,
00089 SxC_PpaFS,
00090 SxC_PpaMP,
00091 SxC_PpaMS,
00092 SxC_Ppap,
00093 SxC_Ppr,
00094 SxC_PprIng,
00095 SxC_PprIngp,
00096 SxC_Pprp,
00097 SxC_Prep,
00098 SxC_Pro,
00099 SxC_ProRel,
00100 SxC_RP,
00101 SxC_SENT,
00102 SxC_Typo,
00103 SxC_VCONJ,
00104 SxC_VCONJP,
00105 SxC_VCONJPp,
00106 SxC_VCONJS,
00107 SxC_VCONJSp,
00108 SxC_VCONJp,
00109 SxC_VINF,
00110 SxC_VINFp,
00111 };
00112
00114 typedef map<string, SxTokenCat, less<string> > SxCatMap;
00116 typedef map<SxTokenCat, string> SxInvCatMap;
00117
00119 SxToken();
00121 virtual ~SxToken();
00122
00127 inline SxTokenCat getCat() const;
00135 bool setCat( const string &catStr );
00140 inline void setCat( SxTokenCat cat );
00141
00146 inline const string &getLemma() const;
00151 inline void setLemma( const string &lemma );
00152
00157 inline const string &getTokenText() const;
00162 inline void setTokenText( const string &tokenText );
00163
00169 inline unsigned int getId() const;
00175 inline void setId( unsigned int id );
00176
00182 inline const list<SxRel> &getRegiRelList() const;
00188 inline void addRegiRel( const SxRel regiRel );
00189
00195 inline const list<SxRel> &getRecteurRelList() const;
00201 inline void addRecteurRel( const SxRel recteurRel );
00202
00210 static SxTokenCat stringToCat( const string &catStr );
00219 static const string &catToString( SxTokenCat cat );
00220
00232 friend ostream &operator<< ( ostream &os, const SxToken &token );
00233
00234 private:
00235
00237 static int initCatMap();
00239 static const int m_iIsMapInit;
00241 static SxCatMap m_mCatMap;
00243 static SxInvCatMap m_mInvCatMap;
00245 string m_sLemma;
00247 string m_sTokenText;
00249 SxTokenCat m_eCat;
00251 unsigned int m_iId;
00252
00254 list<SxRel> m_lRecteurRels;
00255
00257 list<SxRel> m_lRegiRels;
00258 };
00259
00260
00261
00262 inline void SxToken::setLemma( const string &lemma )
00263 {
00264 m_sLemma = lemma;
00265 }
00266
00267 inline const string &SxToken::getLemma() const
00268 {
00269 return m_sLemma;
00270 }
00271
00272 inline const string &SxToken::getTokenText() const
00273 {
00274 return m_sTokenText;
00275 }
00276
00277 inline void SxToken::setTokenText( const string &tokenText )
00278 {
00279 m_sTokenText = tokenText;
00280 }
00281
00282 inline const list<SxRel> &SxToken::getRegiRelList() const
00283 {
00284 return m_lRegiRels;
00285 }
00286
00287 inline const list<SxRel> &SxToken::getRecteurRelList() const
00288 {
00289 return m_lRecteurRels;
00290 }
00291
00292 inline SxToken::SxTokenCat SxToken::getCat() const
00293 {
00294 return m_eCat;
00295 }
00296
00297 inline void SxToken::addRegiRel( const SxRel regiRel )
00298 {
00299 m_lRegiRels.push_back( regiRel );
00300 }
00301
00302 inline void SxToken::addRecteurRel( const SxRel recteurRel )
00303 {
00304 m_lRecteurRels.push_back( recteurRel );
00305 }
00306
00307 inline void SxToken::setCat( SxToken::SxTokenCat cat )
00308 {
00309 m_eCat = cat;
00310 }
00311
00312 inline void SxToken::setId( unsigned int id )
00313 {
00314 m_iId = id;
00315 }
00316
00317 inline unsigned int SxToken::getId() const
00318 {
00319 return m_iId;
00320 }
00321
00322 #endif // #ifndef FG_SXTOKEN_H