shithub: choc

Download patch

ref: 22a3794c3848186631d5e5bdd61b9eefcb8563ac
parent: 9bd7fbd74b9e876a461a0100bdc4ae5c08d5a7c9
parent: cfaae7739779fbefc10dd0fd1b73d30e6f6b2c1f
author: Turo Lamminen <[email protected]>
date: Sat Nov 12 11:04:45 EST 2022

Merge pull request #1545 from turol/clang-15-fix

Fix Hexen type correctness on Clang 15

--- a/src/hexen/h2def.h
+++ b/src/hexen/h2def.h
@@ -159,8 +159,12 @@
 ===============================================================================
 */
 
+
+struct thinker_s;
+
+
 // think_t is a function pointer to a routine to handle an actor
-typedef void (*think_t) ();
+typedef void (*think_t)(struct thinker_s *);
 
 typedef struct thinker_s
 {
--- a/src/hexen/p_acs.c
+++ b/src/hexen/p_acs.c
@@ -768,8 +768,9 @@
 //
 //==========================================================================
 
-void T_InterpretACS(acs_t * script)
+void T_InterpretACS(thinker_t *thinker)
 {
+    acs_t *script = (acs_t *) thinker;
     int cmd;
     int action;
 
--- a/src/hexen/p_ceilng.c
+++ b/src/hexen/p_ceilng.c
@@ -33,8 +33,9 @@
 //      T_MoveCeiling
 //
 //==================================================================
-void T_MoveCeiling(ceiling_t * ceiling)
+void T_MoveCeiling(thinker_t *thinker)
 {
+    ceiling_t *ceiling = (ceiling_t *) thinker;
     result_e res;
 
     switch (ceiling->direction)
--- a/src/hexen/p_doors.c
+++ b/src/hexen/p_doors.c
@@ -31,8 +31,9 @@
 //      T_VerticalDoor
 //
 //==================================================================
-void T_VerticalDoor(vldoor_t * door)
+void T_VerticalDoor(thinker_t *thinker)
 {
+    vldoor_t *door = (vldoor_t *) thinker;
     result_e res;
 
     switch (door->direction)
--- a/src/hexen/p_floor.c
+++ b/src/hexen/p_floor.c
@@ -183,8 +183,9 @@
 //      MOVE A FLOOR TO IT'S DESTINATION (UP OR DOWN)
 //
 //==================================================================
-void T_MoveFloor(floormove_t * floor)
+void T_MoveFloor(thinker_t *thinker)
 {
+    floormove_t *floor = (floormove_t *) thinker;
     result_e res;
 
     if (floor->resetDelayCount)
@@ -653,8 +654,9 @@
 //
 //=========================================================================
 
-void T_BuildPillar(pillar_t * pillar)
+void T_BuildPillar(thinker_t *thinker)
 {
+	pillar_t *pillar = (pillar_t *) thinker;
     result_e res1;
     result_e res2;
 
@@ -861,8 +863,9 @@
 #define WGLSTATE_STABLE 2
 #define WGLSTATE_REDUCE 3
 
-void T_FloorWaggle(floorWaggle_t * waggle)
+void T_FloorWaggle(thinker_t *thinker)
 {
+	floorWaggle_t *waggle = (floorWaggle_t *) thinker;
     switch (waggle->state)
     {
         case WGLSTATE_EXPAND:
--- a/src/hexen/p_lights.c
+++ b/src/hexen/p_lights.c
@@ -25,8 +25,9 @@
 //
 //============================================================================
 
-void T_Light(light_t * light)
+void T_Light(thinker_t *thinker)
 {
+    light_t *light = (light_t *) thinker;
     if (light->count)
     {
         light->count--;
@@ -251,8 +252,9 @@
     32, 32, 48, 64, 80, 96, 112, 128
 };
 
-void T_Phase(phase_t * phase)
+void T_Phase(thinker_t *thinker)
 {
+    phase_t *phase = (phase_t *) thinker;
     phase->index = (phase->index + 1) & 63;
     phase->sector->lightlevel = phase->base + PhaseTable[phase->index];
 }
--- a/src/hexen/p_local.h
+++ b/src/hexen/p_local.h
@@ -151,8 +151,8 @@
 void P_ThrustMobj(mobj_t * mo, angle_t angle, fixed_t move);
 int P_FaceMobj(mobj_t * source, mobj_t * target, angle_t * delta);
 boolean P_SeekerMissile(mobj_t * actor, angle_t thresh, angle_t turnMax);
-void P_MobjThinker(mobj_t * mobj);
-void P_BlasterMobjThinker(mobj_t * mobj);
+void P_MobjThinker(thinker_t *thinker);
+void P_BlasterMobjThinker(thinker_t *thinker);
 void P_SpawnPuff(fixed_t x, fixed_t y, fixed_t z);
 void P_SpawnBlood(fixed_t x, fixed_t y, fixed_t z, int damage);
 void P_BloodSplatter(fixed_t x, fixed_t y, fixed_t z, mobj_t * originator);
@@ -408,11 +408,11 @@
 extern polyblock_t **PolyBlockMap;
 
 
-void T_PolyDoor(polydoor_t * pd);
-void T_RotatePoly(polyevent_t * pe);
+void T_PolyDoor(thinker_t *thinker);
+void T_RotatePoly(thinker_t *thinker);
 boolean EV_RotatePoly(line_t * line, byte * args, int direction, boolean
                       overRide);
-void T_MovePoly(polyevent_t * pe);
+void T_MovePoly(thinker_t *thinker);
 boolean EV_MovePoly(line_t * line, byte * args, boolean timesEight, boolean
                     overRide);
 boolean EV_OpenPolyDoor(line_t * line, byte * args, podoortype_t type);
--- a/src/hexen/p_mobj.c
+++ b/src/hexen/p_mobj.c
@@ -922,8 +922,9 @@
 //
 //----------------------------------------------------------------------------
 
-void P_BlasterMobjThinker(mobj_t * mobj)
+void P_BlasterMobjThinker(thinker_t *thinker)
 {
+    mobj_t *mobj = (mobj_t *) thinker;
     int i;
     fixed_t xfrac;
     fixed_t yfrac;
@@ -1051,8 +1052,9 @@
 //
 //----------------------------------------------------------------------------
 
-void P_MobjThinker(mobj_t * mobj)
+void P_MobjThinker(thinker_t *thinker)
 {
+    mobj_t *mobj = (mobj_t *) thinker;
     mobj_t *onmo;
 /*
 	// Reset to not blasted when momentums are gone
--- a/src/hexen/p_plats.c
+++ b/src/hexen/p_plats.c
@@ -27,8 +27,9 @@
 //      Move a plat up and down
 //
 //==================================================================
-void T_PlatRaise(plat_t * plat)
+void T_PlatRaise(thinker_t *thinker)
 {
+    plat_t *plat = (plat_t *) thinker;
     result_e res;
 
     switch (plat->status)
--- a/src/hexen/p_spec.h
+++ b/src/hexen/p_spec.h
@@ -133,8 +133,8 @@
 #define LIGHT_SEQUENCE          3
 #define LIGHT_SEQUENCE_ALT      4
 
-void T_Phase(phase_t * phase);
-void T_Light(light_t * light);
+void T_Phase(thinker_t *thinker);
+void T_Light(thinker_t *thinker);
 void P_SpawnPhasedLight(sector_t * sector, int base, int index);
 void P_SpawnLightSequence(sector_t * sector, int indexStep);
 boolean EV_SpawnLight(line_t * line, byte * arg, lighttype_t type);
@@ -290,7 +290,7 @@
 
 extern plat_t *activeplats[MAXPLATS];
 
-void T_PlatRaise(plat_t * plat);
+void T_PlatRaise(thinker_t *thinker);
 int EV_DoPlat(line_t * line, byte * args, plattype_e type, int amount);
 void P_AddActivePlat(plat_t * plat);
 void P_RemoveActivePlat(plat_t * plat);
@@ -329,7 +329,7 @@
 
 boolean EV_VerticalDoor(line_t * line, mobj_t * thing);
 int EV_DoDoor(line_t * line, byte * args, vldoor_e type);
-void T_VerticalDoor(vldoor_t * door);
+void T_VerticalDoor(thinker_t *thinker);
 //void P_SpawnDoorCloseIn30(sector_t *sec);
 //void P_SpawnDoorRaiseIn5Mins(sector_t *sec, int secnum);
 
@@ -372,7 +372,7 @@
 extern ceiling_t *activeceilings[MAXCEILINGS];
 
 int EV_DoCeiling(line_t * line, byte * args, ceiling_e type);
-void T_MoveCeiling(ceiling_t * ceiling);
+void T_MoveCeiling(thinker_t *thinker);
 void P_AddActiveCeiling(ceiling_t * c);
 void P_RemoveActiveCeiling(ceiling_t * c);
 int EV_CeilingCrushStop(line_t * line, byte * args);
@@ -470,9 +470,9 @@
 
 int EV_BuildStairs(line_t * line, byte * args, int direction, stairs_e type);
 int EV_DoFloor(line_t * line, byte * args, floor_e floortype);
-void T_MoveFloor(floormove_t * floor);
-void T_BuildPillar(pillar_t * pillar);
-void T_FloorWaggle(floorWaggle_t * waggle);
+void T_MoveFloor(thinker_t *thinker);
+void T_BuildPillar(thinker_t *thinker);
+void T_FloorWaggle(thinker_t *thinker);
 int EV_BuildPillar(line_t * line, byte * args, boolean crush);
 int EV_OpenPillar(line_t * line, byte * args);
 int EV_DoFloorAndCeiling(line_t * line, byte * args, boolean raise);
@@ -553,7 +553,7 @@
 boolean P_StartLockedACS(line_t * line, byte * args, mobj_t * mo, int side);
 boolean P_TerminateACS(int number, int map);
 boolean P_SuspendACS(int number, int map);
-void T_InterpretACS(acs_t * script);
+void T_InterpretACS(thinker_t *thinker);
 void P_TagFinished(int tag);
 void P_PolyobjFinished(int po);
 void P_ACSInitNewGame(void);
--- a/src/hexen/po_man.c
+++ b/src/hexen/po_man.c
@@ -72,8 +72,9 @@
 //
 //==========================================================================
 
-void T_RotatePoly(polyevent_t * pe)
+void T_RotatePoly(thinker_t *thinker)
 {
+    polyevent_t *pe = (polyevent_t *) thinker;
     int absSpeed;
     polyobj_t *poly;
 
@@ -206,8 +207,9 @@
 //
 //==========================================================================
 
-void T_MovePoly(polyevent_t * pe)
+void T_MovePoly(thinker_t *thinker)
 {
+    polyevent_t *pe = (polyevent_t *) thinker;
     int absSpeed;
     polyobj_t *poly;
 
@@ -324,8 +326,9 @@
 //
 //==========================================================================
 
-void T_PolyDoor(polydoor_t * pd)
+void T_PolyDoor(thinker_t *thinker)
 {
+    polydoor_t *pd = (polydoor_t *) thinker;
     int absSpeed;
     polyobj_t *poly;
 
--- a/src/hexen/sv_save.c
+++ b/src/hexen/sv_save.c
@@ -72,9 +72,9 @@
 {
     thinkClass_t tClass;
     think_t thinkerFunc;
-    void (*writeFunc)();
-    void (*readFunc)();
-    void (*restoreFunc) ();
+    void (*writeFunc)(thinker_t *thinker);
+    void (*readFunc)(thinker_t *thinker);
+    void (*restoreFunc)(thinker_t *thinker);
     size_t size;
 } thinkInfo_t;
 
@@ -112,9 +112,9 @@
 static void RemoveAllThinkers(void);
 static int GetMobjNum(mobj_t * mobj);
 static void SetMobjPtr(mobj_t **ptr, unsigned int archiveNum);
-static void RestoreSSThinker(ssthinker_t * sst);
-static void RestorePlatRaise(plat_t * plat);
-static void RestoreMoveCeiling(ceiling_t * ceiling);
+static void RestoreSSThinker(thinker_t *sst);
+static void RestorePlatRaise(thinker_t *thinker);
+static void RestoreMoveCeiling(thinker_t *thinker);
 static void AssertSegment(gameArchiveSegment_t segType);
 static void ClearSaveSlot(int slot);
 static void CopySaveSlot(int sourceSlot, int destSlot);
@@ -1109,8 +1109,10 @@
 // floormove_t
 //
 
-static void StreamIn_floormove_t(floormove_t *str)
+static void StreamIn_floormove_t(thinker_t *thinker)
 {
+    floormove_t *str = (floormove_t *) thinker;
+
     int i;
 
     // thinker_t thinker;
@@ -1166,8 +1168,10 @@
     str->textureChange = SV_ReadByte();
 }
 
-static void StreamOut_floormove_t(floormove_t *str)
+static void StreamOut_floormove_t(thinker_t *thinker)
 {
+    floormove_t *str = (floormove_t *) thinker;
+
     // thinker_t thinker;
     StreamOut_thinker_t(&str->thinker);
 
@@ -1225,8 +1229,10 @@
 // plat_t
 //
 
-static void StreamIn_plat_t(plat_t *str)
+static void StreamIn_plat_t(thinker_t *thinker)
 {
+    plat_t *str = (plat_t *) thinker;
+
     int i;
 
     // thinker_t thinker;
@@ -1267,8 +1273,10 @@
     str->type = SV_ReadLong();
 }
 
-static void StreamOut_plat_t(plat_t *str)
+static void StreamOut_plat_t(thinker_t *thinker)
 {
+    plat_t *str = (plat_t *) thinker;
+
     // thinker_t thinker;
     StreamOut_thinker_t(&str->thinker);
 
@@ -1311,8 +1319,10 @@
 // ceiling_t
 //
 
-static void StreamIn_ceiling_t(ceiling_t *str)
+static void StreamIn_ceiling_t(thinker_t *thinker)
 {
+    ceiling_t *str = (ceiling_t *) thinker;
+
     int i;
 
     // thinker_t thinker;
@@ -1345,8 +1355,10 @@
     str->olddirection = SV_ReadLong();
 }
 
-static void StreamOut_ceiling_t(ceiling_t *str)
+static void StreamOut_ceiling_t(thinker_t *thinker)
 {
+    ceiling_t *str = (ceiling_t *) thinker;
+
     // thinker_t thinker;
     StreamOut_thinker_t(&str->thinker);
 
@@ -1381,8 +1393,10 @@
 // light_t
 //
 
-static void StreamIn_light_t(light_t *str)
+static void StreamIn_light_t(thinker_t *thinker)
 {
+    light_t *str = (light_t *) thinker;
+
     int i;
 
     // thinker_t thinker;
@@ -1411,8 +1425,10 @@
     str->count = SV_ReadLong();
 }
 
-static void StreamOut_light_t(light_t *str)
+static void StreamOut_light_t(thinker_t *thinker)
 {
+    light_t *str = (light_t *) thinker;
+
     // thinker_t thinker;
     StreamOut_thinker_t(&str->thinker);
 
@@ -1443,8 +1459,10 @@
 // vldoor_t
 //
 
-static void StreamIn_vldoor_t(vldoor_t *str)
+static void StreamIn_vldoor_t(thinker_t *thinker)
 {
+    vldoor_t *str = (vldoor_t *) thinker;
+
     int i;
 
     // thinker_t thinker;
@@ -1473,8 +1491,10 @@
     str->topcountdown = SV_ReadLong();
 }
 
-static void StreamOut_vldoor_t(vldoor_t *str)
+static void StreamOut_vldoor_t(thinker_t *thinker)
 {
+    vldoor_t *str = (vldoor_t *) thinker;
+
     // thinker_t thinker;
     StreamOut_thinker_t(&str->thinker);
 
@@ -1505,8 +1525,10 @@
 // phase_t
 //
 
-static void StreamIn_phase_t(phase_t *str)
+static void StreamIn_phase_t(thinker_t *thinker)
 {
+    phase_t *str = (phase_t *) thinker;
+
     int i;
 
     // thinker_t thinker;
@@ -1523,8 +1545,10 @@
     str->base = SV_ReadLong();
 }
 
-static void StreamOut_phase_t(phase_t *str)
+static void StreamOut_phase_t(thinker_t *thinker)
 {
+    phase_t *str = (phase_t *) thinker;
+
     // thinker_t thinker;
     StreamOut_thinker_t(&str->thinker);
 
@@ -1543,8 +1567,10 @@
 // acs_t
 //
 
-static void StreamIn_acs_t(acs_t *str)
+static void StreamIn_acs_t(thinker_t *thinker)
 {
+    acs_t *str = (acs_t *) thinker;
+
     int i;
 
     // thinker_t thinker;
@@ -1596,8 +1622,10 @@
     str->ip = SV_ReadLong();
 }
 
-static void StreamOut_acs_t(acs_t *str)
+static void StreamOut_acs_t(thinker_t *thinker)
 {
+    acs_t *str = (acs_t *) thinker;
+
     int i;
 
     // thinker_t thinker;
@@ -1652,8 +1680,10 @@
 // polyevent_t
 //
 
-static void StreamIn_polyevent_t(polyevent_t *str)
+static void StreamIn_polyevent_t(thinker_t *thinker)
 {
+    polyevent_t *str = (polyevent_t *) thinker;
+
     // thinker_t thinker;
     StreamIn_thinker_t(&str->thinker);
 
@@ -1676,8 +1706,10 @@
     str->ySpeed = SV_ReadLong();
 }
 
-static void StreamOut_polyevent_t(polyevent_t *str)
+static void StreamOut_polyevent_t(thinker_t *thinker)
 {
+    polyevent_t *str = (polyevent_t *) thinker;
+
     // thinker_t thinker;
     StreamOut_thinker_t(&str->thinker);
 
@@ -1705,8 +1737,10 @@
 // pillar_t
 //
 
-static void StreamIn_pillar_t(pillar_t *str)
+static void StreamIn_pillar_t(thinker_t *thinker)
 {
+    pillar_t *str = (pillar_t *) thinker;
+
     int i;
 
     // thinker_t thinker;
@@ -1735,8 +1769,10 @@
     str->crush = SV_ReadLong();
 }
 
-static void StreamOut_pillar_t(pillar_t *str)
+static void StreamOut_pillar_t(thinker_t *thinker)
 {
+    pillar_t *str = (pillar_t *) thinker;
+
     // thinker_t thinker;
     StreamOut_thinker_t(&str->thinker);
 
@@ -1767,8 +1803,10 @@
 // polydoor_t
 //
 
-static void StreamIn_polydoor_t(polydoor_t *str)
+static void StreamIn_polydoor_t(thinker_t *thinker)
 {
+    polydoor_t *str = (polydoor_t *) thinker;
+
     // thinker_t thinker;
     StreamIn_thinker_t(&str->thinker);
 
@@ -1804,8 +1842,10 @@
     str->close = SV_ReadLong();
 }
 
-static void StreamOut_polydoor_t(polydoor_t *str)
+static void StreamOut_polydoor_t(thinker_t *thinker)
 {
+    polydoor_t *str = (polydoor_t *) thinker;
+
     // thinker_t thinker;
     StreamOut_thinker_t(&str->thinker);
 
@@ -1846,8 +1886,10 @@
 // floorWaggle_t
 //
 
-static void StreamIn_floorWaggle_t(floorWaggle_t *str)
+static void StreamIn_floorWaggle_t(thinker_t *thinker)
 {
+    floorWaggle_t *str = (floorWaggle_t *) thinker;
+
     int i;
 
     // thinker_t thinker;
@@ -1882,8 +1924,10 @@
     str->state = SV_ReadLong();
 }
 
-static void StreamOut_floorWaggle_t(floorWaggle_t *str)
+static void StreamOut_floorWaggle_t(thinker_t *thinker)
 {
+    floorWaggle_t *str = (floorWaggle_t *) thinker;
+
     // thinker_t thinker;
     StreamOut_thinker_t(&str->thinker);
 
@@ -2883,8 +2927,9 @@
 //
 //==========================================================================
 
-static void RestoreSSThinker(ssthinker_t *sst)
+static void RestoreSSThinker(thinker_t *thinker)
 {
+    ssthinker_t *sst = (ssthinker_t *) thinker;
     sst->sector->specialdata = sst->thinker.function;
 }
 
@@ -2894,8 +2939,9 @@
 //
 //==========================================================================
 
-static void RestorePlatRaise(plat_t *plat)
+static void RestorePlatRaise(thinker_t *thinker)
 {
+    plat_t *plat = (plat_t *) thinker;
     plat->sector->specialdata = T_PlatRaise;
     P_AddActivePlat(plat);
 }
@@ -2906,8 +2952,9 @@
 //
 //==========================================================================
 
-static void RestoreMoveCeiling(ceiling_t *ceiling)
+static void RestoreMoveCeiling(thinker_t *thinker)
 {
+    ceiling_t *ceiling = (ceiling_t *) thinker;
     ceiling->sector->specialdata = T_MoveCeiling;
     P_AddActiveCeiling(ceiling);
 }