
/**** File 'wrap.cpp' ****/

#include "wrap.h"
#include <stdio.h>
#include "clava_wrappers/clava_weaver_wrappers.h"

void voidFooFileDecl(int *a);

void wrap_voidFooFileDecl(int *a);

int foo(int a) {
	return a + 1;
}

int wrap_fooNoDecl(int a);

int fooNoDecl(int a) {   
   return a + 10;
}

int wrap_fooNoDecl(int a) {
   int result;
   result = fooNoDecl(a);
   return result;
}

void voidFoo(int *a) {
   (*a)++;
}

void voidFooFileDecl(int *a) {
	(*a)++;
}

void wrap_voidFooFileDecl(int *a) {
	voidFooFileDecl(a);
}

int main() {

   wrap_foo(10);
   wrap_fooNoDecl(20);
   
   int a = 100;
   wrap_voidFoo(&a);
   wrap_voidFooFileDecl(&a);
   
   wrap_printf("Hello");
}

/**** End File ****/

/**** File 'wrap.h' ****/

#ifndef _WRAP_H_
#define _WRAP_H_


int foo(int a);

void voidFoo(int *a);
#endif

/**** End File ****/

/**** File 'clava_wrappers/clava_weaver_wrappers.h' ****/

#ifndef _CLAVA_WEAVER_WRAPPERS_H_
#define _CLAVA_WEAVER_WRAPPERS_H_


int wrap_foo(int a);

void wrap_voidFoo(int *a);

int wrap_printf(char const * __restrict A, ...);
#endif

/**** End File ****/

/**** File 'clava_wrappers/clava_weaver_wrappers.cpp' ****/

#include "wrap.h"
#include <stdio.h>
#include "clava_wrappers/clava_weaver_wrappers.h"

int wrap_foo(int a) {
   int result;
   result = foo(a);
   
   return result;
}


void wrap_voidFoo(int *a) {
   voidFoo(a);
}


int wrap_printf(char const * __restrict A, ...) {
   int result;
   // Before call
   result = printf(A);
   
   return result;
}

/**** End File ****/

