Bochs/bochs-testing/plugin-test/test10-modvirtual/module2.cc
Bryce Denney 70350a7985 - experiment: build the module symbol name myself instead of letting
ltdl do it.  On win32 I'm using ltdl even the it considers my DLLs
  to NOT be a libtool archive, and it's making the symbol name
  transformation mess up.  If I do it myself, I can avoid this.
2002-10-17 06:36:45 +00:00

86 lines
1.8 KiB
C++

#include <stdio.h>
#include <string.h>
#include "main.h"
#define _buildsym(sym) module2_LTX_##sym
#include "modules.h"
class GPS_Receiver : public DeviceInterface {
int id;
const char *name;
char features[1024];
const char *vendor;
float resolution_meters;
public:
GPS_Receiver(const char* name, const char* vendor, float res);
void addFeature (const char *f);
virtual const char* getName ();
virtual const char* getFeatures ();
virtual void print(FILE *);
const char* getVendor ();
float getResolutionMeters ();
};
int n_operations = 0;
class DeviceInterface* module_init ()
{
printf ("module2 init for main version %s\n", version_string);
register_module ("module2");
GPS_Receiver *receiver = new GPS_Receiver ("BochsStarGPS 4.0",
"Bochs Project",
9.5);
receiver->addFeature ("High Accuracy");
receiver->addFeature ("Low Power");
receiver->addFeature ("Pentium Emulation");
return receiver;
}
int operate (int a, int b)
{
return a - b;
}
//////// GPS_Receiver class methods
GPS_Receiver::GPS_Receiver(const char* name, const char* vendor, float res)
{
this->name = name;
this->features[0] = 0;
this->vendor = vendor;
this->resolution_meters = res;
}
const char* GPS_Receiver::getName ()
{
return name;
}
const char* GPS_Receiver::getFeatures ()
{
if (strlen (features) == 0) return "none";
else return features;
}
const char* GPS_Receiver::getVendor ()
{
return vendor;
}
float GPS_Receiver::getResolutionMeters ()
{
return resolution_meters;
}
void GPS_Receiver::addFeature (const char *featureName)
{
if (strlen(features) != 0)
strcat (features, ", ");
strcat (features, featureName);
}
void GPS_Receiver::print (FILE *fp)
{
fprintf (fp, "[GPS_Receiver name='%s', vendor='%s', resolution_meters='%.4f', feature_list='%s']", name, vendor, resolution_meters, features);
}