From d5e00f9e89d159e07acfae0e501b2be71622b1f9 Mon Sep 17 00:00:00 2001 From: ac-stef Date: Fri, 2 Jun 2017 14:30:31 +0200 Subject: [PATCH] optionally omit cleaning up vector when closing vector stream allows reusing the vector Makefile updates --- source/src/Makefile | 214 +++++++++++++++++++++--------------------- source/src/stream.cpp | 9 +- source/src/tools.h | 2 +- 3 files changed, 112 insertions(+), 113 deletions(-) diff --git a/source/src/Makefile b/source/src/Makefile index 0d9d0aeb..0835506c 100644 --- a/source/src/Makefile +++ b/source/src/Makefile @@ -27,10 +27,10 @@ endif ifneq (,$(findstring clang,$(CXX))) CXXFLAGS= -O3 -fomit-frame-pointer - override CXXFLAGS+= -Wall -fsigned-char -fno-strict-aliasing + override CXXFLAGS+= -Wall -fsigned-char else CXXFLAGS= -O3 -fomit-frame-pointer - override CXXFLAGS+= -Wall -fsigned-char -ffast-math -rdynamic -Wno-format-zero-length -fno-strict-aliasing + override CXXFLAGS+= -Wall -fsigned-char -ffast-math -rdynamic -Wno-format-zero-length endif INCLUDES= -I. -Ibot -I../enet/include @@ -165,6 +165,9 @@ mrproper: clean ../enet/Makefile $(CXX) $(CXXFLAGS) -x c++-header -o $@.tmp $(subst .h.gch,.h,$@) $(MV) $@.tmp $@ +rendermodel.o: rendermodel.cpp + $(CXX) $(CXXFLAGS) -fno-strict-aliasing -c -o $@ $(subst .o,.cpp,$@) + %-standalone.o: %.cpp $(CXX) $(CXXFLAGS) -c -o $@ $(subst -standalone.o,.cpp,$@) @@ -223,40 +226,39 @@ depend: # DO NOT DELETE crypto.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -crypto.o: weapon.h entity.h world.h command.h varray.h vote.h -crypto.o: console.h protos.h crypto_tools.h ge25519_base.data +crypto.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +crypto.o: protos.h crypto_tools.h ge25519_base.data audiomanager.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -audiomanager.o: weapon.h entity.h world.h command.h varray.h vote.h -audiomanager.o: console.h protos.h +audiomanager.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +audiomanager.o: protos.h autodownload.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h autodownload.o: weapon.h entity.h world.h command.h varray.h vote.h console.h autodownload.o: protos.h client.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -client.o: weapon.h entity.h world.h command.h varray.h vote.h -client.o: console.h protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h -client.o: bot/ac_bot.h +client.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +client.o: protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h bot/ac_bot.h clientgame.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -clientgame.o: weapon.h entity.h world.h command.h varray.h vote.h -clientgame.o: console.h protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h +clientgame.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +clientgame.o: protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h clientgame.o: bot/ac_bot.h clients2c.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -clients2c.o: weapon.h entity.h world.h command.h varray.h vote.h -clients2c.o: console.h protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h +clients2c.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +clients2c.o: protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h clients2c.o: bot/ac_bot.h command.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -command.o: weapon.h entity.h world.h command.h varray.h vote.h -command.o: console.h protos.h +command.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +command.o: protos.h console.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -console.o: weapon.h entity.h world.h command.h varray.h vote.h -console.o: console.h protos.h +console.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +console.o: protos.h docs.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h weapon.h docs.o: entity.h world.h command.h varray.h vote.h console.h protos.h editing.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -editing.o: weapon.h entity.h world.h command.h varray.h vote.h -editing.o: console.h protos.h +editing.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +editing.o: protos.h entities.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -entities.o: weapon.h entity.h world.h command.h varray.h vote.h -entities.o: console.h protos.h +entities.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +entities.o: protos.h http.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h weapon.h http.o: entity.h world.h command.h varray.h vote.h console.h protos.h log.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h weapon.h @@ -267,59 +269,57 @@ main.o: jpegenc.h menus.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h weapon.h menus.o: entity.h world.h command.h varray.h vote.h console.h protos.h oggstream.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -oggstream.o: weapon.h entity.h world.h command.h varray.h vote.h -oggstream.o: console.h protos.h +oggstream.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +oggstream.o: protos.h openal.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -openal.o: weapon.h entity.h world.h command.h varray.h vote.h -openal.o: console.h protos.h +openal.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +openal.o: protos.h packetqueue.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -packetqueue.o: weapon.h entity.h world.h command.h varray.h vote.h -packetqueue.o: console.h protos.h +packetqueue.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +packetqueue.o: protos.h physics.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -physics.o: weapon.h entity.h world.h command.h varray.h vote.h -physics.o: console.h protos.h +physics.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +physics.o: protos.h protocol.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -protocol.o: weapon.h entity.h world.h command.h varray.h vote.h -protocol.o: console.h protos.h +protocol.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +protocol.o: protos.h rendercubes.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -rendercubes.o: weapon.h entity.h world.h command.h varray.h vote.h -rendercubes.o: console.h protos.h +rendercubes.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +rendercubes.o: protos.h rendergl.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -rendergl.o: weapon.h entity.h world.h command.h varray.h vote.h -rendergl.o: console.h protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h -rendergl.o: bot/ac_bot.h +rendergl.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +rendergl.o: protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h bot/ac_bot.h renderhud.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -renderhud.o: weapon.h entity.h world.h command.h varray.h vote.h -renderhud.o: console.h protos.h +renderhud.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +renderhud.o: protos.h rendermodel.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -rendermodel.o: weapon.h entity.h world.h command.h varray.h vote.h -rendermodel.o: console.h protos.h tristrip.h modelcache.h vertmodel.h md2.h -rendermodel.o: md3.h +rendermodel.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +rendermodel.o: protos.h tristrip.h modelcache.h vertmodel.h md2.h md3.h renderparticles.o: cube.h platform.h tools.h geom.h model.h protocol.h -renderparticles.o: sound.h weapon.h entity.h world.h command.h -renderparticles.o: varray.h vote.h console.h protos.h +renderparticles.o: sound.h weapon.h entity.h world.h command.h varray.h +renderparticles.o: vote.h console.h protos.h rendertext.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -rendertext.o: weapon.h entity.h world.h command.h varray.h vote.h -rendertext.o: console.h protos.h +rendertext.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +rendertext.o: protos.h rndmap.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -rndmap.o: weapon.h entity.h world.h command.h varray.h vote.h -rndmap.o: console.h protos.h +rndmap.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +rndmap.o: protos.h scoreboard.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -scoreboard.o: weapon.h entity.h world.h command.h varray.h vote.h -scoreboard.o: console.h protos.h +scoreboard.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +scoreboard.o: protos.h serverms.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -serverms.o: weapon.h entity.h world.h command.h varray.h vote.h -serverms.o: console.h protos.h +serverms.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +serverms.o: protos.h server.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -server.o: weapon.h entity.h world.h command.h varray.h vote.h -server.o: console.h protos.h server.h servercontroller.h serverfiles.h -server.o: serverchecks.h serverevents.h serveractions.h +server.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +server.o: protos.h server.h servercontroller.h serverfiles.h serverchecks.h +server.o: serverevents.h serveractions.h serverbrowser.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h serverbrowser.o: weapon.h entity.h world.h command.h varray.h vote.h serverbrowser.o: console.h protos.h shadow.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -shadow.o: weapon.h entity.h world.h command.h varray.h vote.h -shadow.o: console.h protos.h +shadow.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +shadow.o: protos.h soundlocation.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h soundlocation.o: weapon.h entity.h world.h command.h varray.h vote.h soundlocation.o: console.h protos.h @@ -327,62 +327,61 @@ soundscheduler.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h soundscheduler.o: weapon.h entity.h world.h command.h varray.h vote.h soundscheduler.o: console.h protos.h stream.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -stream.o: weapon.h entity.h world.h command.h varray.h vote.h -stream.o: console.h protos.h +stream.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +stream.o: protos.h texture.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -texture.o: weapon.h entity.h world.h command.h varray.h vote.h -texture.o: console.h protos.h scale.h +texture.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +texture.o: protos.h scale.h tools.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h weapon.h tools.o: entity.h world.h command.h varray.h vote.h console.h protos.h water.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h weapon.h water.o: entity.h world.h command.h varray.h vote.h console.h protos.h weapon.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -weapon.o: weapon.h entity.h world.h command.h varray.h vote.h -weapon.o: console.h protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h -weapon.o: bot/ac_bot.h hudgun.h +weapon.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +weapon.o: protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h bot/ac_bot.h +weapon.o: hudgun.h wizard.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -wizard.o: weapon.h entity.h world.h command.h varray.h vote.h -wizard.o: console.h protos.h +wizard.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +wizard.o: protos.h world.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h weapon.h world.o: entity.h world.h command.h varray.h vote.h console.h protos.h world.o: bot/bot.h bot/bot_util.h bot/bot_waypoint.h bot/ac_bot.h worldio.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -worldio.o: weapon.h entity.h world.h command.h varray.h vote.h -worldio.o: console.h protos.h +worldio.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +worldio.o: protos.h worldlight.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -worldlight.o: weapon.h entity.h world.h command.h varray.h vote.h -worldlight.o: console.h protos.h +worldlight.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +worldlight.o: protos.h worldocull.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -worldocull.o: weapon.h entity.h world.h command.h varray.h vote.h -worldocull.o: console.h protos.h +worldocull.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +worldocull.o: protos.h worldrender.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -worldrender.o: weapon.h entity.h world.h command.h varray.h vote.h -worldrender.o: console.h protos.h +worldrender.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +worldrender.o: protos.h zip.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h weapon.h zip.o: entity.h world.h command.h varray.h vote.h console.h protos.h bot/bot.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -bot/bot.o: weapon.h entity.h world.h command.h varray.h vote.h -bot/bot.o: console.h protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h -bot/bot.o: bot/ac_bot.h +bot/bot.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +bot/bot.o: protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h bot/ac_bot.h bot/botmanager.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h bot/botmanager.o: weapon.h entity.h world.h command.h varray.h vote.h bot/botmanager.o: console.h protos.h bot/bot.h bot/bot_util.h bot/botmanager.o: bot/bot_waypoint.h bot/ac_bot.h bot/bot_ai.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -bot/bot_ai.o: weapon.h entity.h world.h command.h varray.h vote.h -bot/bot_ai.o: console.h protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h +bot/bot_ai.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +bot/bot_ai.o: protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h bot/bot_ai.o: bot/ac_bot.h bot/bot_util.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -bot/bot_util.o: weapon.h entity.h world.h command.h varray.h vote.h -bot/bot_util.o: console.h protos.h bot/bot.h bot/bot_util.h -bot/bot_util.o: bot/bot_waypoint.h bot/ac_bot.h +bot/bot_util.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +bot/bot_util.o: protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h +bot/bot_util.o: bot/ac_bot.h bot/bot_waypoint.o: cube.h platform.h tools.h geom.h model.h protocol.h -bot/bot_waypoint.o: sound.h weapon.h entity.h world.h command.h -bot/bot_waypoint.o: varray.h vote.h console.h protos.h bot/bot.h -bot/bot_waypoint.o: bot/bot_util.h bot/bot_waypoint.h bot/ac_bot.h +bot/bot_waypoint.o: sound.h weapon.h entity.h world.h command.h varray.h +bot/bot_waypoint.o: vote.h console.h protos.h bot/bot.h bot/bot_util.h +bot/bot_waypoint.o: bot/bot_waypoint.h bot/ac_bot.h bot/ac_bot.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h -bot/ac_bot.o: weapon.h entity.h world.h command.h varray.h vote.h -bot/ac_bot.o: console.h protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h +bot/ac_bot.o: weapon.h entity.h world.h command.h varray.h vote.h console.h +bot/ac_bot.o: protos.h bot/bot.h bot/bot_util.h bot/bot_waypoint.h bot/ac_bot.o: bot/ac_bot.h bot/ac_bot_ai.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h bot/ac_bot_ai.o: weapon.h entity.h world.h command.h varray.h vote.h @@ -390,40 +389,39 @@ bot/ac_bot_ai.o: console.h protos.h bot/bot.h bot/bot_util.h bot/ac_bot_ai.o: bot/bot_waypoint.h bot/ac_bot.h cube.h.gch: platform.h tools.h geom.h model.h protocol.h sound.h weapon.h -cube.h.gch: entity.h world.h command.h varray.h vote.h console.h -cube.h.gch: protos.h +cube.h.gch: entity.h world.h command.h varray.h vote.h console.h protos.h crypto-standalone.o: cube.h platform.h tools.h geom.h model.h protocol.h -crypto-standalone.o: sound.h weapon.h entity.h world.h command.h -crypto-standalone.o: varray.h vote.h console.h protos.h crypto_tools.h +crypto-standalone.o: sound.h weapon.h entity.h world.h command.h varray.h +crypto-standalone.o: vote.h console.h protos.h crypto_tools.h crypto-standalone.o: ge25519_base.data log-standalone.o: cube.h platform.h tools.h geom.h model.h protocol.h sound.h log-standalone.o: weapon.h entity.h world.h command.h varray.h vote.h log-standalone.o: console.h protos.h protocol-standalone.o: cube.h platform.h tools.h geom.h model.h protocol.h -protocol-standalone.o: sound.h weapon.h entity.h world.h command.h -protocol-standalone.o: varray.h vote.h console.h protos.h +protocol-standalone.o: sound.h weapon.h entity.h world.h command.h varray.h +protocol-standalone.o: vote.h console.h protos.h serverms-standalone.o: cube.h platform.h tools.h geom.h model.h protocol.h -serverms-standalone.o: sound.h weapon.h entity.h world.h command.h -serverms-standalone.o: varray.h vote.h console.h protos.h +serverms-standalone.o: sound.h weapon.h entity.h world.h command.h varray.h +serverms-standalone.o: vote.h console.h protos.h server-standalone.o: cube.h platform.h tools.h geom.h model.h protocol.h -server-standalone.o: sound.h weapon.h entity.h world.h command.h -server-standalone.o: varray.h vote.h console.h protos.h server.h -server-standalone.o: servercontroller.h serverfiles.h serverchecks.h -server-standalone.o: serverevents.h serveractions.h +server-standalone.o: sound.h weapon.h entity.h world.h command.h varray.h +server-standalone.o: vote.h console.h protos.h server.h servercontroller.h +server-standalone.o: serverfiles.h serverchecks.h serverevents.h +server-standalone.o: serveractions.h stream-standalone.o: cube.h platform.h tools.h geom.h model.h protocol.h -stream-standalone.o: sound.h weapon.h entity.h world.h command.h -stream-standalone.o: varray.h vote.h console.h protos.h +stream-standalone.o: sound.h weapon.h entity.h world.h command.h varray.h +stream-standalone.o: vote.h console.h protos.h tools-standalone.o: cube.h platform.h tools.h geom.h model.h protocol.h -tools-standalone.o: sound.h weapon.h entity.h world.h command.h -tools-standalone.o: varray.h vote.h console.h protos.h +tools-standalone.o: sound.h weapon.h entity.h world.h command.h varray.h +tools-standalone.o: vote.h console.h protos.h wizard-standalone.o: cube.h platform.h tools.h geom.h model.h protocol.h -wizard-standalone.o: sound.h weapon.h entity.h world.h command.h -wizard-standalone.o: varray.h vote.h console.h protos.h +wizard-standalone.o: sound.h weapon.h entity.h world.h command.h varray.h +wizard-standalone.o: vote.h console.h protos.h command-standalone.o: cube.h platform.h tools.h geom.h model.h protocol.h -command-standalone.o: sound.h weapon.h entity.h world.h command.h -command-standalone.o: varray.h vote.h console.h protos.h +command-standalone.o: sound.h weapon.h entity.h world.h command.h varray.h +command-standalone.o: vote.h console.h protos.h master-standalone.o: cube.h platform.h tools.h geom.h model.h protocol.h -master-standalone.o: sound.h weapon.h entity.h world.h command.h -master-standalone.o: varray.h vote.h console.h protos.h +master-standalone.o: sound.h weapon.h entity.h world.h command.h varray.h +master-standalone.o: vote.h console.h protos.h diff --git a/source/src/stream.cpp b/source/src/stream.cpp index a63b650d..0a52c7af 100644 --- a/source/src/stream.cpp +++ b/source/src/stream.cpp @@ -762,9 +762,10 @@ struct vecstream : stream { vector *data; int pointer; + bool autodelete; - vecstream(vector *s) : data(s), pointer(0) {} - ~vecstream() { DELETEP(data); } + vecstream(vector *s, bool autodelete) : data(s), pointer(0), autodelete(autodelete) {} + ~vecstream() { if(autodelete) { DELETEP(data); } } void close() { DELETEP(data); } bool end() { return data ? pointer >= data->length() : true; } @@ -881,9 +882,9 @@ struct memstream : stream } }; -stream *openvecfile(vector *s) +stream *openvecfile(vector *s, bool autodelete) { - return new vecstream(s ? s : new vector); + return new vecstream(s ? s : new vector, autodelete); } stream *openmemfile(const uchar *buf, int size, int *refcnt) diff --git a/source/src/tools.h b/source/src/tools.h index d47a7cc9..32a00bc2 100644 --- a/source/src/tools.h +++ b/source/src/tools.h @@ -943,7 +943,7 @@ extern int findfilelocation; enum { FFL_WORKDIR = -2, FFL_HOME = -1, FFL_ZIP = 0 }; extern const char *findfile(const char *filename, const char *mode); extern int getfilesize(const char *filename); -extern stream *openvecfile(vector *s = NULL); +extern stream *openvecfile(vector *s = NULL, bool autodelete = true); extern stream *openmemfile(const uchar *buf, int size, int *refcnt); extern bool findzipfile(const char *name); extern stream *openzipfile(const char *filename, const char *mode);