Navigation Menu

Skip to content

Commit

Permalink
Fixed|GCC|All Games: Build and link errors
Browse files Browse the repository at this point in the history
Corrected the definitions of various thinkers to be compatible with g++.
In short, one cannot define member functions into anonymous typedef'd
structs.

Also enabled the full C++ libdeng2 API for libheretic due to need for
de::function_cast<> in p_oldsvg.cpp.
  • Loading branch information
skyjake committed Feb 4, 2014
1 parent b6652fd commit ed87bf4
Show file tree
Hide file tree
Showing 32 changed files with 90 additions and 84 deletions.
1 change: 0 additions & 1 deletion doomsday/plugins/common/common.pri
Expand Up @@ -82,7 +82,6 @@ SOURCES += \
$$common_src/g_eventsequence.cpp \
$$common_src/g_game.c \
$$common_src/g_update.c \
$$common_src/g_update.c \
$$common_src/gamerules.c \
$$common_src/gl_drawpatch.c \
$$common_src/hexlex.cpp \
Expand Down
4 changes: 4 additions & 0 deletions doomsday/plugins/common/include/common.h
Expand Up @@ -25,6 +25,10 @@
#include <de/mathutil.h>
#include <de/timer.h>

#ifdef UNIX
# include <strings.h>
#endif

#define WEAPONBOTTOM (128) // from p_pspr.c

#define IS_NETWORK_SERVER (DD_GetInteger(DD_SERVER) && DD_GetInteger(DD_NETGAME))
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/common/include/p_ceiling.h
Expand Up @@ -55,7 +55,7 @@ typedef enum {
NUMCEILINGTYPES
} ceilingtype_e;

typedef struct {
typedef struct ceiling_s {
thinker_t thinker;
ceilingtype_e type;
Sector* sector;
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/common/include/p_door.h
Expand Up @@ -55,7 +55,7 @@ typedef enum {
NUMDOORTYPES
} doortype_e;

typedef struct {
typedef struct door_s {
thinker_t thinker;
doortype_e type;
Sector *sector;
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/common/include/p_floor.h
Expand Up @@ -83,7 +83,7 @@ typedef enum {
NUMFLOORTYPES
} floortype_e;

typedef struct {
typedef struct floor_s {
thinker_t thinker;
floortype_e type;
dd_bool crush;
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/common/include/p_scroll.h
Expand Up @@ -24,7 +24,7 @@

#include "doomsday.h"

typedef struct {
typedef struct scroll_s {
thinker_t thinker;
void *dmuObject; ///< Affected DMU object (either a sector or a side).
int elementBits; ///< Identifies which subelements of the dmuObject are affected.
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/common/include/p_switch.h
Expand Up @@ -28,7 +28,7 @@

#define BUTTONTIME (TICSPERSEC) // 1 second, in ticks.

typedef struct {
typedef struct materialchanger_s {
thinker_t thinker;
int timer;
Side *side;
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/common/include/p_xgsec.h
Expand Up @@ -118,7 +118,7 @@ typedef struct {
int chainTimer[DDLT_MAX_CHAINS];
} xgsector_t;

typedef struct {
typedef struct xgplanemover_s {
thinker_t thinker;

Sector *sector;
Expand Down
4 changes: 2 additions & 2 deletions doomsday/plugins/common/include/polyobjs.h
Expand Up @@ -30,7 +30,7 @@ typedef enum {
PODOOR_SWING
} podoortype_t;

typedef struct {
typedef struct polyevent_s {
thinker_t thinker;
int polyobj; // tag
int intSpeed;
Expand All @@ -44,7 +44,7 @@ typedef struct {
#endif
} polyevent_t;

typedef struct {
typedef struct polydoor_s {
thinker_t thinker;
int polyobj; // tag
int intSpeed;
Expand Down
4 changes: 2 additions & 2 deletions doomsday/plugins/common/src/p_ceiling.cpp
Expand Up @@ -228,7 +228,7 @@ void T_MoveCeiling(void *ceilingThinkerPtr)
}
}

void ceiling_t::write(Writer *writer) const
void ceiling_s::write(Writer *writer) const
{
Writer_WriteByte(writer, 2); // Write a version byte.

Expand All @@ -246,7 +246,7 @@ void ceiling_t::write(Writer *writer) const
Writer_WriteByte(writer, (byte) oldState);
}

int ceiling_t::read(Reader *reader, int mapVersion)
int ceiling_s::read(Reader *reader, int mapVersion)
{
#if __JHEXEN__
if(mapVersion >= 4)
Expand Down
4 changes: 2 additions & 2 deletions doomsday/plugins/common/src/p_door.cpp
Expand Up @@ -285,7 +285,7 @@ void T_Door(void *doorThinkerPtr)
}
}

void door_t::write(Writer *writer) const
void door_s::write(Writer *writer) const
{
Writer_WriteByte(writer, 1); // Write a version byte.

Expand All @@ -304,7 +304,7 @@ void door_t::write(Writer *writer) const
Writer_WriteInt32(writer, topCountDown);
}

int door_t::read(Reader *reader, int mapVersion)
int door_s::read(Reader *reader, int mapVersion)
{
#if __JHEXEN__
if(mapVersion >= 4)
Expand Down
4 changes: 2 additions & 2 deletions doomsday/plugins/common/src/p_floor.cpp
Expand Up @@ -395,7 +395,7 @@ void T_MoveFloor(void *floorThinkerPtr)
}
}

void floor_t::write(Writer *writer) const
void floor_s::write(Writer *writer) const
{
Writer_WriteByte(writer, 3); // Write a version byte.

Expand Down Expand Up @@ -427,7 +427,7 @@ void floor_t::write(Writer *writer) const
#endif
}

int floor_t::read(Reader *reader, int mapVersion)
int floor_s::read(Reader *reader, int mapVersion)
{
#if __JHEXEN__
if(mapVersion >= 4)
Expand Down
12 changes: 6 additions & 6 deletions doomsday/plugins/common/src/p_saveg.cpp
Expand Up @@ -299,9 +299,9 @@ static ThinkerClassInfo thinkerInfo[] = {
TC_FLASH,
(thinkfunc_t) T_LightFlash,
0,
(WriteThinkerFunc)writeThinkerAs<lightflash_t>,
(ReadThinkerFunc)readThinkerAs<lightflash_t>,
sizeof(lightflash_t)
(WriteThinkerFunc)writeThinkerAs<lightflash_s>,
(ReadThinkerFunc)readThinkerAs<lightflash_s>,
sizeof(lightflash_s)
},
{
TC_STROBE,
Expand Down Expand Up @@ -344,9 +344,9 @@ static ThinkerClassInfo thinkerInfo[] = {
TC_MATERIALCHANGER,
T_MaterialChanger,
0,
(WriteThinkerFunc)writeThinkerAs<materialchanger_t>,
(ReadThinkerFunc)readThinkerAs<materialchanger_t>,
sizeof(materialchanger_t)
(WriteThinkerFunc)writeThinkerAs<materialchanger_s>,
(ReadThinkerFunc)readThinkerAs<materialchanger_s>,
sizeof(materialchanger_s)
},
{
TC_SCROLL,
Expand Down
4 changes: 2 additions & 2 deletions doomsday/plugins/common/src/p_scroll.cpp
Expand Up @@ -64,7 +64,7 @@ void T_Scroll(scroll_t *s)
}
}

void scroll_t::write(Writer *writer) const
void scroll_s::write(Writer *writer) const
{
Writer_WriteByte(writer, 1); // Write a version byte.

Expand All @@ -80,7 +80,7 @@ void scroll_t::write(Writer *writer) const
Writer_WriteInt32(writer, FLT2FIX(offset[1]));
}

int scroll_t::read(Reader *reader, int mapVersion)
int scroll_s::read(Reader *reader, int mapVersion)
{
/*int ver =*/ Reader_ReadByte(reader); // version byte.
// Note: the thinker class byte has already been read.
Expand Down
4 changes: 2 additions & 2 deletions doomsday/plugins/common/src/p_switch.cpp
Expand Up @@ -297,7 +297,7 @@ void T_MaterialChanger(void *materialChangerThinker)
}
}

void materialchanger_t::write(Writer *writer) const
void materialchanger_s::write(Writer *writer) const
{
Writer_WriteByte(writer, 1); // Write a version byte.

Expand All @@ -313,7 +313,7 @@ void materialchanger_t::write(Writer *writer) const
Writer_WriteInt16(writer, MaterialArchive_FindUniqueSerialId(SV_MaterialArchive(), material));
}

int materialchanger_t::read(Reader *reader, int mapVersion)
int materialchanger_s::read(Reader *reader, int mapVersion)
{
/*int ver =*/ Reader_ReadByte(reader);
// Note: the thinker class byte has already been read.
Expand Down
4 changes: 2 additions & 2 deletions doomsday/plugins/common/src/p_xgsave.cpp
Expand Up @@ -172,7 +172,7 @@ void SV_ReadXGSector(Sector *sec, Reader *reader, int mapVersion)
SV_ReadXGFunction(xg, &xg->light, reader, mapVersion);
}

void xgplanemover_t::write(Writer *writer) const
void xgplanemover_s::write(Writer *writer) const
{
Writer_WriteByte(writer, 3); // Version.

Expand Down Expand Up @@ -201,7 +201,7 @@ void xgplanemover_t::write(Writer *writer) const
Writer_WriteInt32(writer, timer);
}

int xgplanemover_t::read(Reader *reader, int /*mapVersion*/)
int xgplanemover_s::read(Reader *reader, int /*mapVersion*/)
{
byte ver = Reader_ReadByte(reader); // Version.

Expand Down
8 changes: 4 additions & 4 deletions doomsday/plugins/common/src/polyobjs.cpp
Expand Up @@ -276,7 +276,7 @@ void T_MovePoly(void *polyThinker)
}
}

void polyevent_t::write(Writer *writer) const
void polyevent_s::write(Writer *writer) const
{
Writer_WriteByte(writer, 1); // Write a version byte.

Expand All @@ -291,7 +291,7 @@ void polyevent_t::write(Writer *writer) const
Writer_WriteInt32(writer, FLT2FIX(speed[VY]));
}

int polyevent_t::read(Reader *reader, int mapVersion)
int polyevent_s::read(Reader *reader, int mapVersion)
{
if(mapVersion >= 4)
{
Expand Down Expand Up @@ -525,7 +525,7 @@ void T_PolyDoor(void *polyDoorThinker)
}
}

void polydoor_t::write(Writer *writer) const
void polydoor_s::write(Writer *writer) const
{
Writer_WriteByte(writer, 1); // Write a version byte.

Expand All @@ -546,7 +546,7 @@ void polydoor_t::write(Writer *writer) const
Writer_WriteByte(writer, close);
}

int polydoor_t::read(Reader *reader, int mapVersion)
int polydoor_s::read(Reader *reader, int mapVersion)
{
if(mapVersion >= 4)
{
Expand Down
8 changes: 4 additions & 4 deletions doomsday/plugins/doom/include/p_lights.h
Expand Up @@ -31,7 +31,7 @@
#define FASTDARK (15)
#define SLOWDARK (35)

typedef struct {
typedef struct fireflicker_s {
thinker_t thinker;
Sector *sector;
int count;
Expand All @@ -44,7 +44,7 @@ typedef struct {
#endif
} fireflicker_t;

typedef struct {
typedef struct lightflash_s {
thinker_t thinker;
Sector *sector;
int count;
Expand All @@ -59,7 +59,7 @@ typedef struct {
#endif
} lightflash_t;

typedef struct {
typedef struct strobe_s {
thinker_t thinker;
Sector *sector;
int count;
Expand All @@ -74,7 +74,7 @@ typedef struct {
#endif
} strobe_t;

typedef struct {
typedef struct glow_s {
thinker_t thinker;
Sector *sector;
float minLight;
Expand Down
16 changes: 8 additions & 8 deletions doomsday/plugins/doom/src/p_lights.cpp
Expand Up @@ -48,7 +48,7 @@ void T_FireFlicker(void *flickPtr)
flick->count = 4;
}

void fireflicker_t::write(Writer *writer) const
void fireflicker_s::write(Writer *writer) const
{
Writer_WriteByte(writer, 1); // Write a version byte.

Expand All @@ -65,7 +65,7 @@ void fireflicker_t::write(Writer *writer) const
* T_FireFlicker was added to save games in ver5, therefore we don't have
* an old format to support.
*/
int fireflicker_t::read(Reader *reader, int /*mapVersion*/)
int fireflicker_s::read(Reader *reader, int /*mapVersion*/)
{
/*int ver =*/ Reader_ReadByte(reader); // version byte.

Expand Down Expand Up @@ -129,7 +129,7 @@ void T_LightFlash(lightflash_t *flash)
}
}

void lightflash_t::write(Writer *writer) const
void lightflash_s::write(Writer *writer) const
{
Writer_WriteByte(writer, 1); // Write a version byte.

Expand All @@ -145,7 +145,7 @@ void lightflash_t::write(Writer *writer) const
Writer_WriteInt32(writer, minTime);
}

int lightflash_t::read(Reader *reader, int mapVersion)
int lightflash_s::read(Reader *reader, int mapVersion)
{
if(mapVersion >= 5)
{
Expand Down Expand Up @@ -239,7 +239,7 @@ void T_StrobeFlash(strobe_t *flash)
}
}

void strobe_t::write(Writer *writer) const
void strobe_s::write(Writer *writer) const
{
Writer_WriteByte(writer, 1); // Write a version byte.

Expand All @@ -255,7 +255,7 @@ void strobe_t::write(Writer *writer) const
Writer_WriteInt32(writer, brightTime);
}

int strobe_t::read(Reader *reader, int mapVersion)
int strobe_s::read(Reader *reader, int mapVersion)
{
if(mapVersion >= 5)
{
Expand Down Expand Up @@ -440,7 +440,7 @@ void T_Glow(glow_t *g)
P_SetFloatp(g->sector, DMU_LIGHT_LEVEL, lightLevel);
}

void glow_t::write(Writer *writer) const
void glow_s::write(Writer *writer) const
{
Writer_WriteByte(writer, 1); // Write a version byte.

Expand All @@ -454,7 +454,7 @@ void glow_t::write(Writer *writer) const
Writer_WriteInt32(writer, direction);
}

int glow_t::read(Reader *reader, int mapVersion)
int glow_s::read(Reader *reader, int mapVersion)
{
if(mapVersion >= 5)
{
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/doom/src/p_oldsvg.cpp
Expand Up @@ -83,7 +83,7 @@ static void srd(Reader *r, char *data, int len)
if(!r) return;
if(data)
{
std::memcpy(data, savePtr, len);
memcpy(data, savePtr, len);
}
savePtr += len;
}
Expand Down

0 comments on commit ed87bf4

Please sign in to comment.