/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/

#include <precomp.h>
#include <s2_luidl/tk_keyw.hxx>


// NOT FULLY DECLARED SERVICES
#include <s2_luidl/tokintpr.hxx>


using csi::uidl::TokBuiltInType;
using csi::uidl::TokTypeModifier;
using csi::uidl::TokMetaType;
using csi::uidl::TokStereotype;
using csi::uidl::TokParameterHandling;


lux::EnumValueMap			G_aTokBuiltInType_EV_TokenId_Values;
TokBuiltInType::EV_TokenId  ev_bty_none(TokBuiltInType::e_none,"");
TokBuiltInType::EV_TokenId  ev_bty_any(TokBuiltInType::bty_any,"any");
TokBuiltInType::EV_TokenId  ev_bty_boolean(TokBuiltInType::bty_boolean,"boolean");
TokBuiltInType::EV_TokenId  ev_bty_byte(TokBuiltInType::bty_byte,"byte");
TokBuiltInType::EV_TokenId  ev_bty_char(TokBuiltInType::bty_char,"char");
TokBuiltInType::EV_TokenId  ev_bty_double(TokBuiltInType::bty_double,"double");
TokBuiltInType::EV_TokenId  ev_bty_hyper(TokBuiltInType::bty_hyper,"hyper");
TokBuiltInType::EV_TokenId  ev_bty_long(TokBuiltInType::bty_long,"long");
TokBuiltInType::EV_TokenId  ev_bty_short(TokBuiltInType::bty_short,"short");
TokBuiltInType::EV_TokenId  ev_bty_string(TokBuiltInType::bty_string,"string");
TokBuiltInType::EV_TokenId  ev_bty_void(TokBuiltInType::bty_void,"void");
TokBuiltInType::EV_TokenId  ev_bty_ellipse(TokBuiltInType::bty_ellipse,"...");


lux::EnumValueMap	        G_aTokTypeModifier_EV_TokenId_Values;
TokTypeModifier::EV_TokenId ev_tmod_none(TokTypeModifier::e_none,"");
TokTypeModifier::EV_TokenId ev_tmod_unsigned(TokTypeModifier::tmod_unsigned,"unsigned");
TokTypeModifier::EV_TokenId ev_tmod_sequence(TokTypeModifier::tmod_sequence,"sequence");


lux::EnumValueMap	        G_aTokMetaType_EV_TokenId_Values;
TokMetaType::EV_TokenId     ev_mt_none(TokMetaType::e_none,"");
TokMetaType::EV_TokenId   	ev_mt_attribute(TokMetaType::mt_attribute,"attribute");
TokMetaType::EV_TokenId   	ev_mt_constants(TokMetaType::mt_constants,"constants");
TokMetaType::EV_TokenId   	ev_mt_enum(TokMetaType::mt_enum,"enum");
TokMetaType::EV_TokenId   	ev_mt_exception(TokMetaType::mt_exception,"exception");
TokMetaType::EV_TokenId   	ev_mt_ident(TokMetaType::mt_ident,"ident");
TokMetaType::EV_TokenId   	ev_mt_interface(TokMetaType::mt_interface,"interface");
TokMetaType::EV_TokenId   	ev_mt_module(TokMetaType::mt_module,"module");
TokMetaType::EV_TokenId   	ev_mt_property(TokMetaType::mt_property,"property");
TokMetaType::EV_TokenId   	ev_mt_service(TokMetaType::mt_service,"service");
TokMetaType::EV_TokenId   	ev_mt_singleton(TokMetaType::mt_singleton,"singleton");
TokMetaType::EV_TokenId   	ev_mt_struct(TokMetaType::mt_struct,"struct");
TokMetaType::EV_TokenId   	ev_mt_typedef(TokMetaType::mt_typedef,"typedef");
TokMetaType::EV_TokenId   	ev_mt_uik(TokMetaType::mt_uik,"uik");


lux::EnumValueMap	        G_aTokStereotype_EV_TokenId_Values;
TokStereotype::EV_TokenId   ev_ste_none(TokStereotype::e_none,"");
TokStereotype::EV_TokenId   ev_ste_bound(TokStereotype::ste_bound,"bound");
TokStereotype::EV_TokenId   ev_ste_const(TokStereotype::ste_const,"const");
TokStereotype::EV_TokenId   ev_ste_constrained(TokStereotype::ste_constrained,"constrained");
TokStereotype::EV_TokenId   ev_ste_maybeambiguous(TokStereotype::ste_maybeambiguous,"maybeambiguous");
TokStereotype::EV_TokenId   ev_ste_maybedefault(TokStereotype::ste_maybedefault,"maybedefault");
TokStereotype::EV_TokenId   ev_ste_maybevoid(TokStereotype::ste_maybevoid,"maybevoid");
TokStereotype::EV_TokenId   ev_ste_oneway(TokStereotype::ste_oneway,"oneway");
TokStereotype::EV_TokenId   ev_ste_optional(TokStereotype::ste_optional,"optional");
TokStereotype::EV_TokenId   ev_ste_readonly(TokStereotype::ste_readonly,"readonly");
TokStereotype::EV_TokenId   ev_ste_removable(TokStereotype::ste_removable,"removable");
TokStereotype::EV_TokenId   ev_ste_virtual(TokStereotype::ste_virtual,"virtual");
TokStereotype::EV_TokenId   ev_ste_transient(TokStereotype::ste_transient,"transient");
TokStereotype::EV_TokenId   ev_ste_published(TokStereotype::ste_published,"published");


lux::EnumValueMap	        		G_aTokParameterHandling_EV_TokenId_Values;
TokParameterHandling::EV_TokenId    ev_ph_none(TokParameterHandling::e_none,"");
TokParameterHandling::EV_TokenId   	ev_ph_in(TokParameterHandling::ph_in,"in");
TokParameterHandling::EV_TokenId   	ev_ph_out(TokParameterHandling::ph_out,"out");
TokParameterHandling::EV_TokenId   	ev_ph_inout(TokParameterHandling::ph_inout,"inout");


namespace lux
{

template<> EnumValueMap &
TokBuiltInType::EV_TokenId::Values_()		{ return G_aTokBuiltInType_EV_TokenId_Values; }
template<> EnumValueMap &
TokTypeModifier::EV_TokenId::Values_()		{ return G_aTokTypeModifier_EV_TokenId_Values; }
template<> EnumValueMap &
TokMetaType::EV_TokenId::Values_()			{ return G_aTokMetaType_EV_TokenId_Values; }
template<> EnumValueMap &
TokStereotype::EV_TokenId::Values_()		{ return G_aTokStereotype_EV_TokenId_Values; }
template<> EnumValueMap &
TokParameterHandling::EV_TokenId::Values_()	{ return G_aTokParameterHandling_EV_TokenId_Values; }

}   // namespace lux



namespace csi
{
namespace uidl
{

void
TokBuiltInType::Trigger( TokenInterpreter &	io_rInterpreter ) const
{
	io_rInterpreter.Process_BuiltInType(*this);
}

const char *
TokBuiltInType::Text() const
{
	return eTag.Text();
}

void
TokTypeModifier::Trigger( TokenInterpreter &	io_rInterpreter ) const
{
	io_rInterpreter.Process_TypeModifier(*this);
}

const char *
TokTypeModifier::Text() const
{
	return eTag.Text();
}

void
TokMetaType::Trigger( TokenInterpreter &	io_rInterpreter ) const
{
	io_rInterpreter.Process_MetaType(*this);
}

const char *
TokMetaType::Text() const
{
	return eTag.Text();
}

void
TokStereotype::Trigger( TokenInterpreter &	io_rInterpreter ) const
{
	io_rInterpreter.Process_Stereotype(*this);
}

const char *
TokStereotype::Text() const
{
	return eTag.Text();
}

void
TokParameterHandling::Trigger( TokenInterpreter &	io_rInterpreter ) const
{
	io_rInterpreter.Process_ParameterHandling(*this);
}

const char *
TokParameterHandling::Text() const
{
	return eTag.Text();
}

void
TokRaises::Trigger( TokenInterpreter &	io_rInterpreter ) const
{
	io_rInterpreter.Process_Raises();
}

const char *
TokRaises::Text() const
{
	return "raises";
}

void
TokNeeds::Trigger( TokenInterpreter &	io_rInterpreter ) const
{
	io_rInterpreter.Process_Needs();
}

const char *
TokNeeds::Text() const
{
	return "needs";
}
void
TokObserves::Trigger( TokenInterpreter &	io_rInterpreter ) const
{
	io_rInterpreter.Process_Observes();
}

const char *
TokObserves::Text() const
{
	return "observes";
}

}   // namespace uidl
}   // namespace csi

