OpenTTCN/Developer corner/Implementing external functions/Final/CPP/PA impl.h

From OpenTTCN

Jump to: navigation, search

  OpenTTCN DocZone

  Home | Developer's corner | Knowledge base | Working documents | Documentation | OpenTTCN IDE | Tutorials | Training | How do I | Frequently asked questions | Technical support


PA_impl.h


Back to main article >>

#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);

    static TriStatus ef_find_and_replace(
        const TriFunctionId *functionId,
        TriParameterList *parameterList,
        TriParameter *returnValue);
};

#endif
Views
Personal tools