OpenTTCN/Developer corner/Implementing external functions/Modified/CPP/PA impl.h
From OpenTTCN
Home | Developer's corner | Knowledge base | Working documents | Documentation | OpenTTCN IDE | Tutorials | Training | How do I | Frequently asked questions | Technical support |
PA_impl.h
#ifndef __OT_EXT_FUNC_EXAMPLE_CPP_PA_IMPL_H__
#define __OT_EXT_FUNC_EXAMPLE_CPP_PA_IMPL_H__
#include <tri/TriPlatformPA.h>
using namespace ORG_ETSI_TTCN3_TRI;
#include <map>
#include <string>
class PA_impl : public TriPlatformPA
{
typedef TriStatus (*ExtFuncPtr)(
const TriFunctionId*, TriParameterList*, TriParameter*);
// Key is function name, value is function pointer implementing the
// external function with the specified name.
typedef std::map<std::string, ExtFuncPtr> ExtFuncMapType;
// Contains mappings of available external function implementations.
static ExtFuncMapType _extFuncMap;
static bool _extFuncMapInitialized;
public:
PA_impl();
virtual ~PA_impl();
virtual TriStatus triPAReset();
virtual TriStatus triStartTimer(
const TriTimerId *timerId,
const TriTimerDuration *timerDuration);
virtual TriStatus triStopTimer(
const TriTimerId *timerId);
virtual TriStatus triReadTimer(
const TriTimerId *timerId,
TriTimerDuration *elapsedTime);
virtual TriStatus triTimerRunning(
const TriTimerId *timerId,
Tboolean &running);
virtual TriStatus triExternalFunction(
const TriFunctionId *functionId,
TriParameterList *parameterList,
TriParameter *returnValue);
private:
static TriStatus ef_calc_sum(
const TriFunctionId *functionId,
TriParameterList *parameterList,
TriParameter *returnValue);
static TriStatus ef_calc_sub(
const TriFunctionId *functionId,
TriParameterList *parameterList,
TriParameter *returnValue);
static TriStatus ef_calc_mul(
const TriFunctionId *functionId,
TriParameterList *parameterList,
TriParameter *returnValue);
static TriStatus ef_calc_div(
const TriFunctionId *functionId,
TriParameterList *parameterList,
TriParameter *returnValue);
};
#endif
