blob: 4aaddc9d8852fe57136703409cdc993683c05359 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016 CEA LIST.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Arnault Lapitre (CEA LIST) arnault.lapitre@cea.fr
* - Initial API and implementation
******************************************************************************/
#ifndef FML_EXPRESSION_CHARACTER_H_
#define FML_EXPRESSION_CHARACTER_H_
#include <fml/builtin/BuiltinForm.h>
namespace sep
{
class Character :
public BuiltinForm,
public GenericBuiltinValue< char , Character >
{
AVM_DECLARE_CLONABLE_CLASS( Character )
protected:
/**
* ATTRIBUTES
*/
char mQuoteChar;
public:
/**
* CONSTRUCTOR
* Default
*/
Character(char aValue, char aQuote = '\'')
: BuiltinForm( CLASS_KIND_T( Character ) ),
GenericBuiltinValue( aValue ),
mQuoteChar( aQuote )
{
//!! NOTHING
}
/**
* CONSTRUCTOR
* Copy
*/
Character(const Character & aCharacter)
: BuiltinForm( aCharacter ),
GenericBuiltinValue( aCharacter ),
mQuoteChar( aCharacter.mQuoteChar )
{
//!! NOTHING
}
/**
* DESTRUCTOR
*/
virtual ~Character()
{
//!! NOTHING
}
/**
* Serialization
*/
inline void toStream(OutStream & os) const
{
os << TAB << mQuoteChar << mValue << mQuoteChar;
AVM_DEBUG_REF_COUNTER(os);
os << EOL_FLUSH;
}
virtual std::string str() const
{
return( OSS() << mQuoteChar << mValue << mQuoteChar );
}
std::string strChar(char aQuote = '\'') const
{
return( OSS() << aQuote << mValue << aQuote );
}
inline virtual std::string strNum(
avm_uint8_t precision = AVM_MUMERIC_PRECISION) const
{
return( OSS() << mQuoteChar << mValue << mQuoteChar );
}
};
}
#endif /*FML_EXPRESSION_CHARACTER_H_*/