Many fixes to DFHack::API
Wrapper generation still manual, but makes a lot more sensedevelop
parent
21a74c0bfa
commit
7a85682ea0
@ -1,29 +0,0 @@
|
||||
%module dfhack
|
||||
%include "std_string.i"
|
||||
%include "std_vector.i"
|
||||
%include "stdint.i"
|
||||
|
||||
/* This goes to the header of the wrapper code */
|
||||
%{
|
||||
#define LINUX_BUILD
|
||||
#define SWIG_WRAPPER
|
||||
#include "DFTypes.h"
|
||||
#include "DFHackAPI.h"
|
||||
using namespace std;
|
||||
using namespace DFHack;
|
||||
%}
|
||||
|
||||
/* templates have to be instantiated for swig */
|
||||
using namespace std;
|
||||
namespace std
|
||||
{
|
||||
%template(MatglossVector) vector<DFHack::t_matgloss>;
|
||||
%template(PlantMatglossVector) vector<DFHack::t_matglossPlant>;
|
||||
%template(VeinVector) std::vector <DFHack::t_vein>;
|
||||
%template(IceVeinVector) std::vector <DFHack::t_frozenliquidvein>;
|
||||
}
|
||||
%define DFHACK_EXPORT
|
||||
/* Parse the header file to generate wrappers */
|
||||
%include "DFTypes.h"
|
||||
%include "DFHackAPI.h"
|
||||
%enddef DFHACK_EXPORT
|
@ -0,0 +1,219 @@
|
||||
%module pydfhack
|
||||
%include "std_string.i"
|
||||
%include "std_vector.i"
|
||||
%include "std_map.i"
|
||||
%include "stdint.i"
|
||||
%include "typemaps.i"
|
||||
|
||||
/* This goes to the header of the wrapper code */
|
||||
%{
|
||||
#define LINUX_BUILD
|
||||
#define SWIG_WRAPPER
|
||||
#include "DFTypes.h"
|
||||
#include "DFHackAPI.h"
|
||||
using namespace std;
|
||||
using namespace DFHack;
|
||||
%}
|
||||
|
||||
/* make swig not react to the macro */
|
||||
%define DFHACK_EXPORT
|
||||
|
||||
/* Parse the header file to generate wrappers */
|
||||
%include "DFTypes.h"
|
||||
|
||||
/* templates have to be instantiated for swig */
|
||||
%template(MatglossVector) std::vector<DFHack::t_matgloss>;
|
||||
%template(PlantMatglossVector) std::vector<DFHack::t_matglossPlant>;
|
||||
%template(VeinVector) std::vector <DFHack::t_vein>;
|
||||
%template(IceVeinVector) std::vector <DFHack::t_frozenliquidvein>;
|
||||
|
||||
/*
|
||||
This causes swig to generate BS uncompilable code
|
||||
%template(GeologyAssign) std::vector < std::vector <uint16_t> >;
|
||||
*/
|
||||
|
||||
/*
|
||||
SWIG typemaps recipe
|
||||
%apply double *OUTPUT { double *result }; // 'double *result' is to be treated as OUTPUT
|
||||
%clear double *result; // Remove all typemaps for double *result
|
||||
|
||||
INPUT
|
||||
int *INPUT
|
||||
short *INPUT
|
||||
long *INPUT
|
||||
unsigned int *INPUT
|
||||
unsigned short *INPUT
|
||||
unsigned long *INPUT
|
||||
double *INPUT
|
||||
float *INPUT
|
||||
|
||||
OUTPUT
|
||||
int *OUTPUT
|
||||
short *OUTPUT
|
||||
long *OUTPUT
|
||||
unsigned int *OUTPUT
|
||||
unsigned short *OUTPUT
|
||||
unsigned long *OUTPUT
|
||||
double *OUTPUT
|
||||
float *OUTPUT
|
||||
|
||||
INOUT
|
||||
int *INOUT
|
||||
short *INOUT
|
||||
long *INOUT
|
||||
unsigned int *INOUT
|
||||
unsigned short *INOUT
|
||||
unsigned long *INOUT
|
||||
double *INOUT
|
||||
float *INOUT
|
||||
*/
|
||||
|
||||
namespace DFHack
|
||||
{
|
||||
class memory_info;
|
||||
class Process;
|
||||
class API
|
||||
{
|
||||
|
||||
class Private;
|
||||
|
||||
Private * const d;
|
||||
public:
|
||||
API(const std::string path_to_xml);
|
||||
~API();
|
||||
bool Attach();
|
||||
bool Detach();
|
||||
bool isAttached();
|
||||
|
||||
bool ReadPauseState();
|
||||
|
||||
bool ReadViewScreen(t_viewscreen &);
|
||||
|
||||
uint32_t ReadMenuState();
|
||||
|
||||
bool Suspend();
|
||||
bool AsyncSuspend();
|
||||
bool Resume();
|
||||
bool ForceResume();
|
||||
bool isSuspended();
|
||||
bool ReadStoneMatgloss(std::vector<t_matgloss> & OUTPUT);
|
||||
bool ReadWoodMatgloss (std::vector<t_matgloss> & OUTPUT);
|
||||
bool ReadMetalMatgloss(std::vector<t_matgloss> & OUTPUT);
|
||||
bool ReadPlantMatgloss(std::vector<t_matgloss> & OUTPUT);
|
||||
/*
|
||||
* SWIG reports that it can't wrap the second method here
|
||||
*/
|
||||
bool ReadPlantMatgloss (std::vector<t_matglossPlant> & OUTPUT);
|
||||
bool ReadCreatureMatgloss(std::vector<t_matgloss> & OUTPUT);
|
||||
|
||||
bool ReadGeology( std::vector < std::vector <uint16_t> >& OUTPUT );
|
||||
|
||||
bool InitMap();
|
||||
bool DestroyMap();
|
||||
|
||||
%apply uint32_t& OUTPUT { uint32_t& x };
|
||||
%apply uint32_t& OUTPUT { uint32_t& y };
|
||||
%apply uint32_t& OUTPUT { uint32_t& z };
|
||||
void getSize(uint32_t& x, uint32_t& y, uint32_t& z);
|
||||
|
||||
bool isValidBlock(uint32_t blockx, uint32_t blocky, uint32_t blockz);
|
||||
uint32_t getBlockPtr (uint32_t blockx, uint32_t blocky, uint32_t blockz);
|
||||
|
||||
bool ReadTileTypes(uint32_t blockx, uint32_t blocky, uint32_t blockz, uint16_t *buffer);
|
||||
bool WriteTileTypes(uint32_t blockx, uint32_t blocky, uint32_t blockz, uint16_t *buffer);
|
||||
|
||||
bool ReadDesignations(uint32_t blockx, uint32_t blocky, uint32_t blockz, uint32_t *buffer);
|
||||
bool WriteDesignations (uint32_t blockx, uint32_t blocky, uint32_t blockz, uint32_t *buffer);
|
||||
|
||||
bool ReadOccupancy(uint32_t blockx, uint32_t blocky, uint32_t blockz, uint32_t *buffer);
|
||||
bool WriteOccupancy(uint32_t blockx, uint32_t blocky, uint32_t blockz, uint32_t *buffer);
|
||||
|
||||
bool ReadDirtyBit(uint32_t blockx, uint32_t blocky, uint32_t blockz, bool &OUTPUT);
|
||||
bool WriteDirtyBit(uint32_t blockx, uint32_t blocky, uint32_t blockz, bool dirtybit);
|
||||
|
||||
bool ReadRegionOffsets(uint32_t blockx, uint32_t blocky, uint32_t blockz, uint8_t *buffer);
|
||||
|
||||
bool ReadVeins(uint32_t blockx, uint32_t blocky, uint32_t blockz, std::vector <t_vein> & veins, std::vector <t_frozenliquidvein>& ices);
|
||||
|
||||
%apply uint32_t& OUTPUT { uint32_t & numObjs };
|
||||
|
||||
bool InitReadConstructions( uint32_t & numObjs );
|
||||
bool ReadConstruction(const int32_t index, t_construction & OUTPUT);
|
||||
void FinishReadConstructions();
|
||||
|
||||
bool InitReadBuildings ( uint32_t & numObjs );
|
||||
bool ReadBuilding(const int32_t index, t_building & OUTPUT);
|
||||
void FinishReadBuildings();
|
||||
|
||||
bool InitReadVegetation( uint32_t & numObjs );
|
||||
bool ReadVegetation(const int32_t index, t_tree_desc & OUTPUT);
|
||||
void FinishReadVegetation();
|
||||
|
||||
bool InitReadCreatures( uint32_t & numObjs );
|
||||
int32_t ReadCreatureInBox(int32_t index, t_creature & OUTPUT,
|
||||
const uint16_t x1, const uint16_t y1,const uint16_t z1,
|
||||
const uint16_t x2, const uint16_t y2,const uint16_t z2);
|
||||
|
||||
bool ReadCreature(const int32_t index, t_creature & OUTPUT);
|
||||
void FinishReadCreatures();
|
||||
|
||||
/*
|
||||
A conundrum really.
|
||||
*/
|
||||
void ReadRaw (const uint32_t offset, const uint32_t size, uint8_t *target);
|
||||
void WriteRaw (const uint32_t offset, const uint32_t size, uint8_t *source);
|
||||
|
||||
bool InitViewAndCursor();
|
||||
|
||||
bool InitReadNotes( uint32_t & numnotes );
|
||||
bool ReadNote(const int32_t index, t_note & OUTPUT);
|
||||
void FinishReadNotes();
|
||||
|
||||
bool InitReadSettlements( uint32_t & numObjs );
|
||||
bool ReadSettlement(const int32_t index, t_settlement & OUTPUT);
|
||||
bool ReadCurrentSettlement(t_settlement & settlement);
|
||||
void FinishReadSettlements();
|
||||
|
||||
bool InitReadHotkeys( );
|
||||
bool ReadHotkeys(t_hotkey hotkeys[]);
|
||||
|
||||
%apply int32_t& OUTPUT { int32_t& x };
|
||||
%apply int32_t& OUTPUT { int32_t& y };
|
||||
%apply int32_t& OUTPUT { int32_t& z };
|
||||
bool getViewCoords (int32_t &x, int32_t &y, int32_t &z);
|
||||
bool setViewCoords (const int32_t x, const int32_t y, const int32_t z);
|
||||
|
||||
bool getCursorCoords (int32_t &x, int32_t &y, int32_t &z);
|
||||
bool setCursorCoords (const int32_t x, const int32_t y, const int32_t z);
|
||||
|
||||
bool getCurrentCursorCreatures(std::vector<uint32_t> &OUTPUT);
|
||||
|
||||
bool InitViewSize();
|
||||
|
||||
%apply int32_t& OUTPUT { int32_t& width };
|
||||
%apply int32_t& OUTPUT { int32_t& height };
|
||||
bool getWindowSize(int32_t & width, int32_t & height);
|
||||
bool getItemIndexesInBox(std::vector<uint32_t> &indexes,
|
||||
const uint16_t x1, const uint16_t y1, const uint16_t z1,
|
||||
const uint16_t x2, const uint16_t y2, const uint16_t z2);
|
||||
bool InitReadNameTables (std::map< std::string, std::vector<std::string> > & OUTPUT);
|
||||
void FinishReadNameTables();
|
||||
|
||||
std::string TranslateName(const t_lastname & last, const std::map< std::string, std::vector< std::string > > &nameTable,const std::string & language="GENERIC");
|
||||
std::string TranslateName(const t_squadname & squad, const std::map< std::string, std::vector< std::string > > &nameTable,const std::string & language="GENERIC");
|
||||
std::string TranslateName (const int names[], int size, const std::map<std::string, std::vector<std::string> > &nameTable, const std::string & language="GENERIC");
|
||||
|
||||
void WriteLabors(const uint32_t index, uint8_t labors[NUM_CREATURE_LABORS]);
|
||||
|
||||
bool InitReadItems(uint32_t & numitems);
|
||||
bool ReadItem(const uint32_t index, t_item & OUTPUT);
|
||||
void FinishReadItems();
|
||||
|
||||
memory_info *getMemoryInfo();
|
||||
Process * getProcess();
|
||||
DFWindow * getWindow();
|
||||
bool ReadItemTypes(std::vector< std::vector< t_itemType > > & itemTypes);
|
||||
};
|
||||
};
|
||||
|
||||
%enddef DFHACK_EXPORT
|
Loading…
Reference in New Issue