updated to use typedef'd function pointers

develop
doomchild 2010-05-13 15:42:19 -05:00
parent dc3da1be6a
commit 136211636a
1 changed files with 55 additions and 14 deletions

@ -31,6 +31,7 @@ using namespace std;
#include "DFCommonInternal.h" #include "DFCommonInternal.h"
#include "modules/Materials.h" #include "modules/Materials.h"
#include "DFTypes_C.h"
#include "modules/Materials_C.h" #include "modules/Materials_C.h"
using namespace DFHack; using namespace DFHack;
@ -223,7 +224,7 @@ int Materials_getOtherSize(DFHackObject* mat)
//vector getters //vector getters
int Materials_getInorganic(DFHackObject* mat, t_matgloss* (*t_matgloss_buffer_create)(int)) int Materials_getInorganic(DFHackObject* mat, MatglossBufferFunc callback)
{ {
if(mat != NULL) if(mat != NULL)
{ {
@ -231,7 +232,7 @@ int Materials_getInorganic(DFHackObject* mat, t_matgloss* (*t_matgloss_buffer_cr
if(materials->inorganic.size() > 0) if(materials->inorganic.size() > 0)
{ {
t_matgloss* buf = ((*t_matgloss_buffer_create)(materials->inorganic.size())); t_matgloss* buf = ((*callback)(materials->inorganic.size()));
if(buf != NULL) if(buf != NULL)
{ {
@ -249,7 +250,7 @@ int Materials_getInorganic(DFHackObject* mat, t_matgloss* (*t_matgloss_buffer_cr
return -1; return -1;
} }
int Materials_getOrganic(DFHackObject* mat, t_matgloss* (*t_matgloss_buffer_create)(int)) int Materials_getOrganic(DFHackObject* mat, MatglossBufferFunc callback)
{ {
if(mat != NULL) if(mat != NULL)
{ {
@ -257,7 +258,7 @@ int Materials_getOrganic(DFHackObject* mat, t_matgloss* (*t_matgloss_buffer_crea
if(materials->organic.size() > 0) if(materials->organic.size() > 0)
{ {
t_matgloss* buf = ((*t_matgloss_buffer_create)(materials->organic.size())); t_matgloss* buf = ((*callback)(materials->organic.size()));
if(buf != NULL) if(buf != NULL)
{ {
@ -275,7 +276,7 @@ int Materials_getOrganic(DFHackObject* mat, t_matgloss* (*t_matgloss_buffer_crea
return -1; return -1;
} }
int Materials_getTree(DFHackObject* mat, t_matgloss* (*t_matgloss_buffer_create)(int)) int Materials_getTree(DFHackObject* mat, MatglossBufferFunc callback)
{ {
if(mat != NULL) if(mat != NULL)
{ {
@ -283,7 +284,7 @@ int Materials_getTree(DFHackObject* mat, t_matgloss* (*t_matgloss_buffer_create)
if(materials->tree.size() > 0) if(materials->tree.size() > 0)
{ {
t_matgloss* buf = ((*t_matgloss_buffer_create)(materials->tree.size())); t_matgloss* buf = ((*callback)(materials->tree.size()));
if(buf != NULL) if(buf != NULL)
{ {
@ -301,7 +302,7 @@ int Materials_getTree(DFHackObject* mat, t_matgloss* (*t_matgloss_buffer_create)
return -1; return -1;
} }
int Materials_getPlant(DFHackObject* mat, t_matgloss* (*t_matgloss_buffer_create)(int)) int Materials_getPlant(DFHackObject* mat, MatglossBufferFunc callback)
{ {
if(mat != NULL) if(mat != NULL)
{ {
@ -309,7 +310,7 @@ int Materials_getPlant(DFHackObject* mat, t_matgloss* (*t_matgloss_buffer_create
if(materials->plant.size() > 0) if(materials->plant.size() > 0)
{ {
t_matgloss* buf = ((*t_matgloss_buffer_create)(materials->plant.size())); t_matgloss* buf = ((*callback)(materials->plant.size()));
if(buf != NULL) if(buf != NULL)
{ {
@ -327,7 +328,7 @@ int Materials_getPlant(DFHackObject* mat, t_matgloss* (*t_matgloss_buffer_create
return -1; return -1;
} }
int Materials_getRace(DFHackObject* mat, t_matgloss* (*t_matgloss_buffer_create)(int)) int Materials_getRace(DFHackObject* mat, MatglossBufferFunc callback)
{ {
if(mat != NULL) if(mat != NULL)
{ {
@ -335,7 +336,7 @@ int Materials_getRace(DFHackObject* mat, t_matgloss* (*t_matgloss_buffer_create)
if(materials->race.size() > 0) if(materials->race.size() > 0)
{ {
t_matgloss* buf = ((*t_matgloss_buffer_create)(materials->race.size())); t_matgloss* buf = ((*callback)(materials->race.size()));
if(buf != NULL) if(buf != NULL)
{ {
@ -354,8 +355,48 @@ int Materials_getRace(DFHackObject* mat, t_matgloss* (*t_matgloss_buffer_create)
} }
//race_ex getter goes here... //race_ex getter goes here...
// int Materials_getRaceEx(DFHackObject* mat, c_creaturetype* (*c_creaturetype_buffer_create)(c_creaturetype_descriptor*, int))
// {
// if(mat != NULL)
// {
// DFHack::Materials* materials = (DFHack::Materials*)mat;
// if(materials->raceEx.size() > 0)
// {
// std::vector<t_creaturetype> types = materials->raceEx;
// int typessize = types.size();
// c_creaturetype_descriptor* descriptors = (c_creaturetype_descriptor*)malloc(sizeof(c_creaturetype_descriptor) * typessize);
// for(int i = 0; i < typessize; i++)
// {
// descriptors[i].castesCount = types[i].castes.size();
// descriptors[i].extractCount = types[i].extract.size();
// }
// c_creaturetype* buf = ((*c_creaturetype_buffer_create)(descriptors, typessize));
// for(int i = 0; i < typessize; i++)
// {
// t_creaturetype current = types[i];
// strncpy(buf[i].rawname, current.rawname, 128);
// buf[i].rawname[127] = '\0';
// buf[i].tile_character = current.tile_character;
// buf[i].tilecolor = current.tilecolor;
// current.extract.copy(buf[i].extract, current.extract.size());
// }
// free(descriptors);
// }
// }
// return -1;
// }
int Materials_getColor(DFHackObject* mat, t_descriptor_color* (*t_descriptor_color_buffer_create)(int)) int Materials_getColor(DFHackObject* mat, DescriptorColorBufferFunc callback)
{ {
if(mat != NULL) if(mat != NULL)
{ {
@ -363,7 +404,7 @@ int Materials_getColor(DFHackObject* mat, t_descriptor_color* (*t_descriptor_col
if(materials->color.size() > 0) if(materials->color.size() > 0)
{ {
t_descriptor_color* buf = ((*t_descriptor_color_buffer_create)(materials->color.size())); t_descriptor_color* buf = ((*callback)(materials->color.size()));
if(buf != NULL) if(buf != NULL)
{ {
@ -381,7 +422,7 @@ int Materials_getColor(DFHackObject* mat, t_descriptor_color* (*t_descriptor_col
return -1; return -1;
} }
int Materials_getOther(DFHackObject* mat, t_matglossOther* (*t_matglossOther_buffer_create)(int)) int Materials_getOther(DFHackObject* mat, MatglossOtherBufferFunc callback)
{ {
if(mat != NULL) if(mat != NULL)
{ {
@ -389,7 +430,7 @@ int Materials_getOther(DFHackObject* mat, t_matglossOther* (*t_matglossOther_buf
if(materials->other.size() > 0) if(materials->other.size() > 0)
{ {
t_matglossOther* buf = ((*t_matglossOther_buffer_create)(materials->other.size())); t_matglossOther* buf = ((*callback)(materials->other.size()));
if(buf != NULL) if(buf != NULL)
{ {