/*---------------------------------------------------------------------------------------------------------------------
- File      : datas.h                                                                     Project ELSE, EPFL - DI/LIA -
-                                                                       Evaluation in Language and Speech Engineering -
- Author    : Seydoux Florian   Creation date : 5 Sept 1999                                                           -
- Eulogist  : -                 Approval date : -                  Version: 0.1                                       -
-                                                                                                                     -
- Descript. : Define readed data                                                                                      -
-                                                                                                                     -
- Requested : -                                                                                                       -
-                                                                                                                     -
- Gaps      : o) Repenser totalement les visibilites, et reorganiser les fichiers. 
-                                                                                                                     -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Rev. date | Reviser               | Revise's description                                                            -
- - - - - - + - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- ../../....| ........              | ...                                                                             -
---------------------------------------------------------------------------------------------------------------------*/

#ifndef DATAS_H
#define DATAS_H    

#include <vector>
#include <deque>

#include "globaldef.h"
#include "tags_mapping_table.h"
#include "constrained_circular_buffer.h"

#ifdef _USE_NAMESPACES
    namespace Else { 
#endif // _USE_NAMESPACES


typedef LocalisedString Comment;
typedef LocalisedString Token;


class LemmeBaseType {
public:
    // RTTI (dynamic_cast) requires at least one virtual function in base class !
    virtual ~LemmeBaseType()
    { }
};
typedef       LemmeBaseType* LemmeBasePtr;
typedef const LemmeBaseType* LemmeBaseAccess;

class Lemme : public LemmeBaseType {
public:
    Lemme(const Token& tok, const LocalisedTag& tag)
    : tok(tok),
      tag(tag),
      cmt()
    { }

    Lemme(const Token& tok, const LocalisedTag& tag, const Comment& cmt)
    : tok(tok),
      tag(tag),
      cmt(cmt)
    { }

public:    
    Token   tok;
    LocalisedTag     tag;
    Comment cmt;
};
typedef const Lemme* LemmeAccess;

class SingleComment: public LemmeBaseType {
public:
    SingleComment(const Comment& cmt)
    : cmt(cmt)
    { }

public:
    Comment cmt; 
};
typedef const SingleComment* SingleCommentAccess;

/*
class LemmeWithComment: public Lemme, public SingleComment {
// public:
    LemmeWithComment(const Token& tok, const LocalisedTag& tag, const Comment& cmt)
    : Lemme(tok, tag),
      SingleComment(cmt)
    { }
};
*/


#ifdef _USE_NAMESPACES
    }
#endif // _USE_NAMESPACES

#endif


