blob: 87194dca1591b5e896aec02977bac6abd8bb490f [file] [log] [blame]
ANTLR_BEGIN_NAMESPACE()
template<class ImplTraits>
CommonToken<ImplTraits>::CommonToken()
{
m_type = 0;
m_channel = 0;
m_lineStart = NULL;
m_line = 0;
m_charPositionInLine = 0;
m_input = NULL;
m_index = 0;
m_startIndex = 0;
m_stopIndex = 0;
}
template<class ImplTraits>
CommonToken<ImplTraits>::CommonToken(ANTLR_UINT32 type)
{
m_type = type;
m_channel = 0;
m_lineStart = NULL;
m_line = 0;
m_charPositionInLine = 0;
m_input = NULL;
m_index = 0;
m_startIndex = 0;
m_stopIndex = 0;
}
template<class ImplTraits>
CommonToken<ImplTraits>::CommonToken(TOKEN_TYPE type)
{
m_type = type;
m_channel = 0;
m_lineStart = NULL;
m_line = 0;
m_charPositionInLine = 0;
m_input = NULL;
m_index = 0;
m_startIndex = 0;
m_stopIndex = 0;
}
template<class ImplTraits>
CommonToken<ImplTraits>::CommonToken( const CommonToken& ctoken )
:m_tokText( ctoken.m_tokText )
{
m_type = ctoken.m_type;
m_channel = ctoken.m_channel;
m_lineStart = ctoken.m_lineStart;
m_line = ctoken.m_line;
m_charPositionInLine = ctoken.m_charPositionInLine;
m_input = ctoken.m_input;
m_index = ctoken.m_index;
m_startIndex = ctoken.m_startIndex;
m_stopIndex = ctoken.m_stopIndex;
}
template<class ImplTraits>
CommonToken<ImplTraits>& CommonToken<ImplTraits>::operator=( const CommonToken& ctoken )
{
m_type = ctoken.m_type;
m_channel = ctoken.m_channel;
m_lineStart = ctoken.m_lineStart;
m_line = ctoken.m_line;
m_charPositionInLine = ctoken.m_charPositionInLine;
m_input = ctoken.m_input;
m_index = ctoken.m_index;
m_startIndex = ctoken.m_startIndex;
m_stopIndex = ctoken.m_stopIndex;
m_tokText = ctoken.m_tokText;
return *this;
}
template<class ImplTraits>
ANTLR_INLINE bool CommonToken<ImplTraits>::operator<( const CommonToken& ctoken ) const
{
return (m_index < ctoken.m_index);
}
template<class ImplTraits>
bool CommonToken<ImplTraits>::operator==( const CommonToken& ctoken ) const
{
return ( (m_type == ctoken.m_type) &&
(m_channel == ctoken.m_channel) &&
(m_lineStart == ctoken.m_lineStart) &&
(m_line == ctoken.m_line) &&
(m_charPositionInLine == ctoken.m_charPositionInLine) &&
(m_input == ctoken.m_input) &&
(m_index == ctoken.m_index) &&
(m_startIndex == ctoken.m_startIndex) &&
(m_stopIndex == ctoken.m_stopIndex) );
}
template<class ImplTraits>
ANTLR_INLINE typename CommonToken<ImplTraits>::InputStreamType* CommonToken<ImplTraits>::get_input() const
{
return m_input;
}
template<class ImplTraits>
ANTLR_INLINE ANTLR_MARKER CommonToken<ImplTraits>::get_index() const
{
return m_index;
}
template<class ImplTraits>
ANTLR_INLINE void CommonToken<ImplTraits>::set_index( ANTLR_MARKER index )
{
m_index = index;
}
template<class ImplTraits>
void CommonToken<ImplTraits>::set_input( InputStreamType* input )
{
m_input = input;
}
template<class ImplTraits>
typename CommonToken<ImplTraits>::StringType CommonToken<ImplTraits>::getText() const
{
if ( !m_tokText.empty() )
return m_tokText;
// EOF is a special case
//
if ( m_type == TOKEN_EOF)
{
m_tokText = "<EOF>";
return m_tokText;
}
// We had nothing installed in the token, create a new string
// from the input stream
//
if (m_input != NULL)
return m_input->substr( this->get_startIndex(), this->get_stopIndex() );
// Nothing to return, there is no input stream
//
return "";
}
template<class ImplTraits>
ANTLR_INLINE void CommonToken<ImplTraits>::set_tokText( const StringType& text )
{
m_tokText = text;
}
template<class ImplTraits>
ANTLR_INLINE void CommonToken<ImplTraits>::setText(ANTLR_UINT8* text)
{
if( text == NULL )
m_tokText.clear();
else
m_tokText = (const char*) text;
}
template<class ImplTraits>
ANTLR_INLINE void CommonToken<ImplTraits>::setText(const char* text)
{
if( text == NULL )
m_tokText.clear();
else
m_tokText = (const char*) text;
}
template<class ImplTraits>
ANTLR_INLINE ANTLR_UINT32 CommonToken<ImplTraits>::get_type() const
{
return m_type;
}
template<class ImplTraits>
ANTLR_INLINE ANTLR_UINT32 CommonToken<ImplTraits>::getType() const
{
return m_type;
}
template<class ImplTraits>
ANTLR_INLINE void CommonToken<ImplTraits>::set_type(ANTLR_UINT32 ttype)
{
m_type = ttype;
}
template<class ImplTraits>
ANTLR_INLINE ANTLR_UINT32 CommonToken<ImplTraits>::get_line() const
{
return m_line;
}
template<class ImplTraits>
ANTLR_INLINE void CommonToken<ImplTraits>::set_line(ANTLR_UINT32 line)
{
m_line = line;
}
template<class ImplTraits>
ANTLR_INLINE ANTLR_INT32 CommonToken<ImplTraits>::get_charPositionInLine() const
{
return m_charPositionInLine;
}
template<class ImplTraits>
ANTLR_INLINE ANTLR_INT32 CommonToken<ImplTraits>::getCharPositionInLine() const
{
return this->get_charPositionInLine();
}
template<class ImplTraits>
ANTLR_INLINE void CommonToken<ImplTraits>::set_charPositionInLine(ANTLR_INT32 pos)
{
m_charPositionInLine = pos;
}
template<class ImplTraits>
ANTLR_INLINE ANTLR_UINT32 CommonToken<ImplTraits>::get_channel() const
{
return m_channel;
}
template<class ImplTraits>
ANTLR_INLINE void CommonToken<ImplTraits>::set_channel(ANTLR_UINT32 channel)
{
m_channel = channel;
}
template<class ImplTraits>
ANTLR_INLINE ANTLR_MARKER CommonToken<ImplTraits>::get_tokenIndex() const
{
return m_index;
}
template<class ImplTraits>
ANTLR_INLINE void CommonToken<ImplTraits>::set_tokenIndex(ANTLR_MARKER tokenIndex)
{
m_index = tokenIndex;
}
template<class ImplTraits>
ANTLR_INLINE ANTLR_MARKER CommonToken<ImplTraits>::get_startIndex() const
{
return (m_startIndex == -1) ? (ANTLR_MARKER)(m_input->get_data()) : m_startIndex;
}
template<class ImplTraits>
ANTLR_INLINE void CommonToken<ImplTraits>::set_startIndex(ANTLR_MARKER index)
{
m_startIndex = index;
}
template<class ImplTraits>
ANTLR_INLINE ANTLR_MARKER CommonToken<ImplTraits>::get_stopIndex() const
{
return m_stopIndex;
}
template<class ImplTraits>
ANTLR_INLINE void CommonToken<ImplTraits>::set_stopIndex(ANTLR_MARKER index)
{
m_stopIndex = index;
}
template<class ImplTraits>
ANTLR_INLINE const typename CommonToken<ImplTraits>::StreamDataType* CommonToken<ImplTraits>::get_lineStart() const
{
return m_lineStart;
}
template<class ImplTraits>
ANTLR_INLINE void CommonToken<ImplTraits>::set_lineStart( const StreamDataType* lineStart )
{
m_lineStart = lineStart;
}
template<class ImplTraits>
typename CommonToken<ImplTraits>::StringType CommonToken<ImplTraits>::toString() const
{
StringType text;
typedef typename ImplTraits::StringStreamType StringStreamType;
StringStreamType outtext;
text = this->getText();
if (text.empty())
return "";
/* Now we use our handy dandy string utility to assemble the
* the reporting string
* return "[@"+getTokenIndex()+","+start+":"+stop+"='"+txt+"',<"+type+">"+channelStr+","+line+":"+getCharPositionInLine()+"]";
*/
outtext << "[Index: ";
outtext << (int)this->get_tokenIndex();
outtext << " (Start: ";
outtext << (int)this->get_startIndex();
outtext << "-Stop: ";
outtext << (int)this->get_stopIndex();
outtext << ") ='";
outtext << text;
outtext << "', type<";
outtext << (int)m_type;
outtext << "> ";
if (this->get_channel() > TOKEN_DEFAULT_CHANNEL)
{
outtext << "(channel = ";
outtext << (int)this->get_channel();
outtext << ") ";
}
outtext << "Line: ";
outtext << (int)this->get_line();
outtext << " LinePos:";
outtext << (int)this->get_charPositionInLine();
outtext << "]";
return outtext.str();
}
ANTLR_END_NAMESPACE()