<commit_before>#ifndef STINGRAY_TOOLKIT_SERVICETRAITS_H
#define STINGRAY_TOOLKIT_SERVICETRAITS_H


#include <stingray/toolkit/TypeList.h>


namespace stingray
{

	/*! \cond GS_INTERNAL */

	template < typename ServiceInterfaces_, typename Dependencies_ >
	struct ServiceTraits
	{
		typedef typename ToTypeList<ServiceInterfaces_>::ValueT	ServiceInterfaces;
		typedef typename ToTypeList<Dependencies_>::ValueT		Dependencies;
	};

	template < typename ServiceBase_, typename Dependencies_ >
	struct DerivedService : public ServiceBase_
	{
		typedef typename ServiceBase_::ServiceInterfaces									ServiceInterfaces;
		typedef typename TypeListMerge<TypeList_2<typename ServiceBase_::Dependencies,
			typename ToTypeList<Dependencies_>::ValueT> >::ValueT							Dependencies;
	};

	template < typename Service >
	struct GetServiceInterfaces
	{ typedef typename Service::ServiceInterfaces ValueT; };

	template < typename Service >
	struct GetServiceDependencies
	{ typedef typename Service::Dependencies ValueT; };

	/*! \endcond */
<commit_msg>Added parametrized ctors to DerivedService<commit_after>#ifndef STINGRAY_TOOLKIT_SERVICETRAITS_H
#define STINGRAY_TOOLKIT_SERVICETRAITS_H


#include <stingray/toolkit/TypeList.h>


namespace stingray
{

	/*! \cond GS_INTERNAL */

	template < typename ServiceInterfaces_, typename Dependencies_ >
	struct ServiceTraits
	{
		typedef typename ToTypeList<ServiceInterfaces_>::ValueT	ServiceInterfaces;
		typedef typename ToTypeList<Dependencies_>::ValueT		Dependencies;
	};

	template < typename ServiceBase_, typename Dependencies_ >
	struct DerivedService : public ServiceBase_
	{
		typedef typename ServiceBase_::ServiceInterfaces									ServiceInterfaces;
		typedef typename TypeListMerge<TypeList_2<typename ServiceBase_::Dependencies,
			typename ToTypeList<Dependencies_>::ValueT> >::ValueT							Dependencies;

		DerivedService() { }

		template < typename T > DerivedService(const T& p) : ServiceBase_(p) { }
		template < typename T1, typename T2 > DerivedService(const T1& p1, const T2& p2) : ServiceBase_(p1, p2) { }
	};

	template < typename Service >
	struct GetServiceInterfaces
	{ typedef typename Service::ServiceInterfaces ValueT; };

	template < typename Service >
	struct GetServiceDependencies
	{ typedef typename Service::Dependencies ValueT; };

	/*! \endcond */

{'fraction_non_alphanumeric': 0.08086021505376344, 'fraction_numerical': 0.004301075268817204, 'mean_word_length': 5.8011695906432745, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 25, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '754640', 'n_tokens_mistral': 782, 'n_tokens_neox': 657, 'n_words': 155}