%include "std_string.i"
%include cpointer.i
%{
#include "src/common_cpp/API/IModule.hh"
#include "src/common_cpp/API/ModuleBase.hh"
#include "src/common_cpp/API/IOutput.hh"
#include "src/common_cpp/API/OutputBase.hh"
using namespace std;
%}
%include "src/common_cpp/API/IModule.hh"
%include "src/common_cpp/API/ModuleBase.hh"
%include "src/common_cpp/API/IOutput.hh"
%include "src/common_cpp/API/OutputBase.hh"
%define OUTPUTBASE_WRAP(INPUT)
%template(IOutput ## INPUT) MAUS::IOutput;
%template(OutputBase ## INPUT) MAUS::OutputBase;
#ifndef INPUT ## p
%pointer_functions(INPUT, INPUT ## p);
#define INPUT ## p
#endif
%enddef
using namespace std;
OUTPUTBASE_WRAP(string)
%module OutputCppRoot
%{
#include "OutputCppRoot.hh"
%}
%include "OutputCppRoot.hh"