#include "StdAfx.h"
#include ".\adaptateur.h"

Adaptateur::Adaptateur(IObjetDistant*adr)
{
	l_objet=adr;	// mémorise l'adresse physique de l'objet distant
}

void* Adaptateur::invoquer_par_numero(
	void* (IObjetDistant::* p_fonction)(int,void*),int nb_params,void*params)
{
	// Le pointeur de membre est utilisé ici.
	// L'appel combine l'adresse phyisique, l_objet,
	// avec l'index de la fonction à appeller, p_fonction.
	return (l_objet->*p_fonction)(nb_params,params);
}

void* Adaptateur::hello_world(int nb_params,void*params)
{
	return invoquer_par_numero(
		&IObjetDistant::hello_world, // index de la fonction
		nb_params,params);
}

void* Adaptateur::somme(int nb_params,void*params)
{	
	return invoquer_par_numero(
		&IObjetDistant::somme,		// index de la fonction
		nb_params,params);
}