diff --git a/Makefile.linux b/Makefile.linux index 5ae9ebee9..6e0d4e491 100644 --- a/Makefile.linux +++ b/Makefile.linux @@ -28,7 +28,7 @@ CFLAGS += $(INCLUDES) RELEASEOBJ ?= releaseobj DEBUGOBJ ?= debugobj -CPPSRCS = $(wildcard $(addsuffix *.cpp,$(SRCDIRS))) +CPPSRCS = $(wildcard $(addsuffix *.cpp,$(SRCDIRS))) src/xlat/parse_xlat.cpp CSRCS = $(wildcard $(addsuffix *.c,$(SRCDIRS))) ifdef NOASM CFLAGS += -DNOASM @@ -88,6 +88,13 @@ $(OBJDIR)/nodebuild_classify_sse2.o: nodebuild_classify_sse2.cpp $(OBJDIR)/fmopl.o: src/oplsynth/fmopl.cpp $(CCDV) $(CXX) $(CXXFLAGS) -fno-tree-dominator-opts -fno-tree-fre -c -o $@ $< +src/xlat/xlat_parser.c: src/xlat/xlat_parser.y + $(CCDV) $(LEMON) -s src/xlat/xlat_parser.y + +# Dunno why make isn't picking this stuff up automatically for this file. +$(OBJDIR)/parse_xlat.o: src/xlat/parse_xlat.cpp src/xlat/xlat.h src/xlat/xlat_parser.c src/xlat/xlat_parser.h + $(CCDV) $(CXX) $(CXXFLAGS) -o $@ -c $< + $(OBJDIR): mkdir $(OBJDIR) diff --git a/Makefile.mingw b/Makefile.mingw index 0eb02e052..72210c8ba 100644 --- a/Makefile.mingw +++ b/Makefile.mingw @@ -27,6 +27,7 @@ RELEASEOBJDIR ?= releaseobj CCDV ?= @ccdv RE2C = tools/re2c/re2c +LEMON = tools/lemon/lemon CPPFLAGS = -DWIN32 -D_WIN32 -D_WINDOWS -DHAVE_STRUPR -DHAVE_FILELENGTH -DI_DO_NOT_LIKE_BIG_DOWNLOADS -D__forceinline=inline -MMD -Izlib -IFLAC -Ijpeg-6b -Isrc -Isrc/win32 -Isrc/g_doom -Isrc/g_heretic -Isrc/g_hexen -Isrc/g_raven -Isrc/g_strife -Isrc/g_shared -Isrc/oplsynth -Isrc/sound -Isrc/textures -Isrc/thingdef -Isnes_spc/snes_spc LDFLAGS += zlib/libz.a jpeg-6b/libjpeg.a snes_spc/libsnes_spc.a -lfmodex -lwsock32 -lwinmm -lddraw -ldsound -ldxguid -ldinput8 -lole32 -luser32 -lgdi32 -lcomctl32 -lcomdlg32 -lsetupapi -lws2_32 -Wl,--subsystem,windows @@ -58,7 +59,7 @@ endif SRCDIRS = src/ $(addprefix src/,g_doom/ g_heretic/ g_hexen/ g_raven/ g_shared/ g_strife/ oplsynth/ sound/ win32/ textures/ thingdef/) VPATH = $(SRCDIRS) -CPPSRCS = $(wildcard $(addsuffix *.cpp,$(SRCDIRS))) +CPPSRCS = $(wildcard $(addsuffix *.cpp,$(SRCDIRS))) src/xlat/parse_xlat.cpp CSRCS = $(wildcard $(addsuffix *.c,$(SRCDIRS))) RCSRCS = $(wildcard $(addsuffix *.rc,$(SRCDIRS))) ifdef NOASM @@ -93,6 +94,13 @@ $(OBJDIR)/fmopl.o: src/oplsynth/fmopl.cpp src/sc_man_scanner.h: src/sc_man_scanner.re $(CCDV) $(RE2C) -s -o $@ $< +src/xlat/xlat_parser.c: src/xlat/xlat_parser.y + $(CCDV) $(LEMON) -s src/xlat/xlat_parser.y + +# Dunno why make isn't picking this stuff up automatically for this file. +$(OBJDIR)/parse_xlat.o: src/xlat/parse_xlat.cpp src/xlat/xlat.h src/xlat/xlat_parser.c src/xlat/xlat_parser.h + $(CCDV) $(CXX) $(CXXFLAGS) -o $@ -c $< + $(OBJDIR)/%.o : %.cpp $(CCDV) $(CXX) $(CXXFLAGS) -o $@ -c $< diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 37c6ea511..037f5d4f1 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,3 +1,6 @@ +March 19, 2008 +- Fixed: The source no longer built with GCC. + March 19, 2008 (Changes by Graf Zahl) - Added a new parameter to all crushing action specials that selects which crushing mode is used: 0 uses the game's default for compatibility, @@ -19,21 +22,26 @@ March 19, 2008 (Changes by Graf Zahl) errors for some very old version of dobject.cpp. - Fixed: A_JumpIfCloser was missing a z-check. - Added Blzut3's SBARINFO update #13: -- Split sbarinfo.cpp into two files sbarinfo_display.cpp and sbarinfo_parser.cpp -- Rewrote the mug shot system for SBarInfo to allow for scripting and custom - states for different means of death. -- SBarInfo now loads all SBarInfo lumps instead of just the last one. Clashing - status bar definitions will now be cleared before the bar is read. -- Fixed: When using transparency with bars the new drawing method (bg over fg) - didn't work. In the case that the border value is set to 0 it will revert to - the old method (fg over bg). -- Fixed: drawbar lost any high res information it was given. -- Added: ACS command SetMugShotState(str state) which sets the mug shot state - for the activating player. -- Added: keepoffsets flag to drawbar. When set the offsets in the fg image will - also be applied when displaying the bar. + - Split sbarinfo.cpp into two files sbarinfo_display.cpp and sbarinfo_parser.cpp + - Rewrote the mug shot system for SBarInfo to allow for scripting and custom + states for different means of death. + - SBarInfo now loads all SBarInfo lumps instead of just the last one. Clashing + status bar definitions will now be cleared before the bar is read. + - Fixed: When using transparency with bars the new drawing method (bg over fg) + didn't work. In the case that the border value is set to 0 it will revert to + the old method (fg over bg). + - Fixed: drawbar lost any high res information it was given. + - Added: ACS command SetMugShotState(str state) which sets the mug shot state + for the activating player. + - Added: keepoffsets flag to drawbar. When set the offsets in the fg image will + also be applied when displaying the bar. March 18, 2008 +- Added a cheap pitch shifting for underwater environments that should be fairly + close to Duke's. It sounds okay for some sounds, but others like the BFG, where + the timing of the sound actually matters, don't sound good. I shall have to + replace it with a real pitch shifter DSP unit. +- Removed hardware 3D sound support, since software is cooler. - Fixed the TArray serializer declaration. (Thank you for your warnings, GCC! ;-) - Changed root sector marking so that it can happen incrementally. diff --git a/src/g_shared/sbarinfo.h b/src/g_shared/sbarinfo.h index 86a43e13b..9f0d49528 100644 --- a/src/g_shared/sbarinfo.h +++ b/src/g_shared/sbarinfo.h @@ -71,8 +71,6 @@ struct SBarInfo extern SBarInfo *SBarInfoScript; -void FreeSBarInfoScript(); - //Mug Shot scripting structs. All functions are defined in sbarinfo_parser.cpp struct MugShotState; diff --git a/src/s_sound.h b/src/s_sound.h index 5f75eee01..23e5aa68f 100644 --- a/src/s_sound.h +++ b/src/s_sound.h @@ -38,14 +38,9 @@ struct sfxinfo_t BYTE PitchMask; BYTE MaxChannels; - // Next five fields are for use by i_sound.cpp. A non-null data means the - // sound has been loaded. The other fields are dependant on whether MIDAS - // or FMOD is used for sound. + // Next field is for use by the system sound interface. + // A non-null data means the sound has been loaded. void* data; - void* altdata; - long normal; - long looping; - WORD bHaveLoop:1; WORD bRandomHeader:1; WORD bPlayerReserve:1; diff --git a/src/sound/fmodsound.cpp b/src/sound/fmodsound.cpp index 31e51617a..6718c3e5d 100644 --- a/src/sound/fmodsound.cpp +++ b/src/sound/fmodsound.cpp @@ -105,7 +105,6 @@ ReverbContainer *ForcedEnvironment; CVAR (Int, snd_driver, 0, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) CVAR (Bool, snd_3d, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) -CVAR (Bool, snd_hw3d, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) CVAR (Bool, snd_waterreverb, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) CVAR (String, snd_resampler, "Linear", CVAR_ARCHIVE|CVAR_GLOBALCONFIG) CVAR (String, snd_speakermode, "Auto", CVAR_ARCHIVE|CVAR_GLOBALCONFIG) @@ -582,12 +581,10 @@ bool FMODSoundRenderer::Init() rolloff_factor = 0.96f; } Sys->set3DSettings(1.f, 100.f, rolloff_factor); - Hardware3D = snd_hw3d; } else { Sound3D = false; - Hardware3D = false; } snd_sfxvolume.Callback (); return true; @@ -629,12 +626,6 @@ void FMODSoundRenderer::Shutdown() ((FMOD::Sound *)S_sfx[i].data)->release(); S_sfx[i].data = NULL; } - if (S_sfx[i].altdata != NULL) - { - ((FMOD::Sound *)S_sfx[i].altdata)->release(); - S_sfx[i].altdata = NULL; - } - S_sfx[i].bHaveLoop = false; } Sys->close(); @@ -685,10 +676,6 @@ void FMODSoundRenderer::PrintStatus() Printf (TEXTCOLOR_LIGHTBLUE "Software mixer resampler: "TEXTCOLOR_GREEN"%s\n", Enum_NameForNum(ResamplerNames, resampler)); } Printf("Using 3D sound: "TEXTCOLOR_GREEN"%s\n", Sound3D ? "yes" : "no"); - if (Sound3D) - { - Printf("Using hardware 3D sound: "TEXTCOLOR_GREEN"%s\n", Hardware3D ? "yes" : "no"); - } } void FMODSoundRenderer::DumpDriverCaps(FMOD_CAPS caps, int minfrequency, int maxfrequency) @@ -782,15 +769,10 @@ int FMODSoundRenderer::GetNumChannels() { int chancount; - if (!Hardware3D) + if (FMOD_OK == Sys->getSoftwareChannels(&chancount)) { - if (FMOD_OK == Sys->getSoftwareChannels(&chancount)) - { - chancount = MIN(snd_channels, chancount - NUM_EXTRA_SOFTWARE_CHANNELS); - } + chancount = MIN(snd_channels, chancount - NUM_EXTRA_SOFTWARE_CHANNELS); } - // If hardware, let FMOD deal with the maximum actually supported by the hardware. - chancount = snd_channels; ChannelMap = new ChanMap[chancount]; for (int i = 0; i < chancount; i++) @@ -891,30 +873,37 @@ long FMODSoundRenderer::StartSound(sfxinfo_t *sfx, float vol, float sep, int pit int id = int(sfx - &S_sfx[0]); FMOD_RESULT result; + FMOD_MODE mode; FMOD::Channel *chan; float freq; freq = PITCH(sfx->frequency, pitch); - result = Sys->playSound(FMOD_CHANNEL_FREE, CheckLooping(sfx, looping), true, &chan); + result = Sys->playSound(FMOD_CHANNEL_FREE, (FMOD::Sound *)sfx->data, true, &chan); if (FMOD_OK == result) { + result = chan->getMode(&mode); + + if (Sound3D) + { // Make 2D sounds head relative. + FMOD_VECTOR zero = { 0, 0, 0 }; + mode = (mode & ~FMOD_3D_WORLDRELATIVE) | (FMOD_3D_HEADRELATIVE); + chan->set3DAttributes(&zero, &zero); + } + if (looping) + { + mode |= FMOD_LOOP_NORMAL; + } + if (result == FMOD_OK) + { + chan->setMode(mode); + } + chan->setChannelGroup((pausable && !SFXPaused) ? PausableSfx : SfxGroup); chan->setFrequency(freq); chan->setVolume(vol); chan->setPan(sep); - if (Sound3D) - { // Make 2D sounds head relative. - FMOD_MODE mode; - if (FMOD_OK == chan->getMode(&mode)) - { - mode = (mode & ~FMOD_3D_WORLDRELATIVE) | (FMOD_3D_HEADRELATIVE); - chan->setMode(mode); - } - FMOD_VECTOR zero = { 0, 0, 0 }; - chan->set3DAttributes(&zero, &zero); - } chan->setPaused(false); ChannelMap[channel].channelID = chan; ChannelMap[channel].soundID = id; @@ -934,14 +923,24 @@ long FMODSoundRenderer::StartSound3D(sfxinfo_t *sfx, float vol, int pitch, int c int id = int(sfx - &S_sfx[0]); FMOD_RESULT result; + FMOD_MODE mode; FMOD::Channel *chan; float freq; freq = PITCH(sfx->frequency, pitch); - result = Sys->playSound(FMOD_CHANNEL_FREE, CheckLooping(sfx, looping), true, &chan); + result = Sys->playSound(FMOD_CHANNEL_FREE, (FMOD::Sound *)sfx->data, true, &chan); if (FMOD_OK == result) { + if (looping) + { + result = chan->getMode(&mode); + if (result == FMOD_OK) + { + mode |= FMOD_LOOP_NORMAL; + chan->setMode(mode); + } + } chan->setChannelGroup((pausable && !SFXPaused) ? PausableSfx : SfxGroup); chan->setFrequency(freq); chan->setVolume(vol); @@ -966,7 +965,6 @@ void FMODSoundRenderer::StopSound(long handle) if (ChannelMap[handle].soundID != -1) { ChannelMap[handle].channelID->stop(); - UncheckSound(&S_sfx[ChannelMap[handle].soundID], ChannelMap[handle].bIsLooping); ChannelMap[handle].soundID = -1; } } @@ -1069,7 +1067,7 @@ void FMODSoundRenderer::UpdateListener(AActor *listener) Sys->set3DListenerAttributes(0, &pos, &vel, &forward, &up); - bool underwater; + bool underwater = false; const ReverbContainer *env; if (ForcedEnvironment) @@ -1095,6 +1093,7 @@ void FMODSoundRenderer::UpdateListener(AActor *listener) DPrintf ("Reverb Environment %s\n", env->Name); const_cast(env)->Modified = false; Sys->setReverbProperties((FMOD_REVERB_PROPERTIES *)(&env->Properties)); + PausableSfx->setPitch(underwater ? 0.64171f : 1); PrevEnvironment = env; } } @@ -1103,7 +1102,7 @@ void FMODSoundRenderer::UpdateListener(AActor *listener) void FMODSoundRenderer::LoadSound(sfxinfo_t *sfx) { - if (!sfx->data) + if (sfx->data == NULL) { DPrintf("loading sound \"%s\" (%d) ", sfx->name.GetChars(), sfx - &S_sfx[0]); getsfx(sfx); @@ -1112,99 +1111,13 @@ void FMODSoundRenderer::LoadSound(sfxinfo_t *sfx) void FMODSoundRenderer::UnloadSound(sfxinfo_t *sfx) { - if (sfx->data == NULL) - return; - - sfx->bHaveLoop = false; - sfx->normal = 0; - sfx->looping = 0; - if (sfx->altdata != NULL) - { - ((FMOD::Sound *)sfx->altdata)->release(); - sfx->altdata = NULL; - } if (sfx->data != NULL) { ((FMOD::Sound *)sfx->data)->release(); sfx->data = NULL; - } - - DPrintf("Unloaded sound \"%s\" (%d)\n", sfx->name.GetChars(), sfx - &S_sfx[0]); -} - -// FSOUND_Sample_Upload seems to mess up the signedness of sound data when -// uploading to hardware buffers. The pattern is not particularly predictable, -// so this is a replacement for it that loads the data manually. Source data -// is mono, unsigned, 8-bit. Output is mono, signed, 8- or 16-bit. -#if 0 -int FMODSoundRenderer::PutSampleData (FSOUND_SAMPLE *sample, const BYTE *data, int len, unsigned int mode) -{ - /*if (mode & FSOUND_2D) - { - return FSOUND_Sample_Upload (sample, const_cast(data), - FSOUND_8BITS|FSOUND_MONO|FSOUND_UNSIGNED); - } - else*/ if (FSOUND_Sample_GetMode (sample) & FSOUND_8BITS) - { - void *ptr1, *ptr2; - unsigned int len1, len2; - - if (FSOUND_Sample_Lock (sample, 0, len, &ptr1, &ptr2, &len1, &len2)) - { - int i; - BYTE *ptr; - int len; - - for (i = 0, ptr = (BYTE *)ptr1, len = len1; - i < 2 && ptr && len; - i++, ptr = (BYTE *)ptr2, len = len2) - { - int j; - for (j = 0; j < len; j++) - { - ptr[j] = *data++ - 128; - } - } - FSOUND_Sample_Unlock (sample, ptr1, ptr2, len1, len2); - return TRUE; - } - else - { - return FALSE; - } - } - else - { - void *ptr1, *ptr2; - unsigned int len1, len2; - - if (FSOUND_Sample_Lock (sample, 0, len*2, &ptr1, &ptr2, &len1, &len2)) - { - int i; - SWORD *ptr; - int len; - - for (i = 0, ptr = (SWORD *)ptr1, len = len1/2; - i < 2 && ptr && len; - i++, ptr = (SWORD *)ptr2, len = len2/2) - { - int j; - for (j = 0; j < len; j++) - { - ptr[j] = ((*data<<8)|(*data)) - 32768; - data++; - } - } - FSOUND_Sample_Unlock (sample, ptr1, ptr2, len1, len2); - return TRUE; - } - else - { - return FALSE; - } + DPrintf("Unloaded sound \"%s\" (%d)\n", sfx->name.GetChars(), sfx - &S_sfx[0]); } } -#endif void FMODSoundRenderer::DoLoad(void **slot, sfxinfo_t *sfx) { @@ -1217,8 +1130,7 @@ void FMODSoundRenderer::DoLoad(void **slot, sfxinfo_t *sfx) FMOD_CREATESOUNDEXINFO exinfo = { sizeof(exinfo), }; FMOD::Sound *sample; - samplemode = (Sound3D ? FMOD_3D : FMOD_2D) | FMOD_OPENMEMORY; - samplemode |= Hardware3D ? FMOD_HARDWARE : FMOD_SOFTWARE; + samplemode = (Sound3D ? FMOD_3D : FMOD_2D) | FMOD_OPENMEMORY | FMOD_SOFTWARE; sfxdata = NULL; errcount = 0; @@ -1368,83 +1280,5 @@ void FMODSoundRenderer::getsfx(sfxinfo_t *sfx) return; } } - - sfx->bHaveLoop = false; - sfx->normal = 0; - sfx->looping = 0; - sfx->altdata = NULL; DoLoad (&sfx->data, sfx); } - - -//=========================================================================== -// -// FMODSoundRenderer :: CheckLooping -// -// Hardware sounds do not support arbitrarily changing the loop mode for -// different playing copies of the same sound, so if we need to play both -// a looping and an unlooping version of the same sound, then we need two -// copies of the sound. -// -// Fortunately, most sounds will be played as one or the other and not both. -// This function juggles the sample between looping and non-looping, creating -// a copy if necessary, and increasing the appropriate use counter. -// -// Note that software sounds do not have this restriction, but since there's -// no way for the engine to designate that a sound should always be software, -// this function is used for them too, just to keep things simpler for me. -// -//=========================================================================== - -FMOD::Sound *FMODSoundRenderer::CheckLooping(sfxinfo_t *sfx, bool looped) -{ - if (looped) - { - sfx->looping++; - if (sfx->bHaveLoop) - { - return (FMOD::Sound *)(sfx->altdata ? sfx->altdata : sfx->data); - } - else if (sfx->normal == 0) - { - sfx->bHaveLoop = true; - ((FMOD::Sound *)sfx->data)->setLoopCount(-1); - return (FMOD::Sound *)sfx->data; - } - } - else - { - sfx->normal++; - if (sfx->altdata || !sfx->bHaveLoop) - { - return (FMOD::Sound *)sfx->data; - } - else if (sfx->looping == 0) - { - sfx->bHaveLoop = false; - ((FMOD::Sound *)sfx->data)->setLoopCount(0); - return (FMOD::Sound *)sfx->data; - } - } - - // If we get here, we need to create an alternate version of the sample. - ((FMOD::Sound *)sfx->data)->setLoopCount(0); - DoLoad(&sfx->altdata, sfx); - ((FMOD::Sound *)sfx->altdata)->setLoopCount(-1); - sfx->bHaveLoop = true; - return (FMOD::Sound *)(looped ? sfx->altdata : sfx->data); -} - -void FMODSoundRenderer::UncheckSound(sfxinfo_t *sfx, bool looped) -{ - if (looped) - { - if (sfx->looping > 0) - sfx->looping--; - } - else - { - if (sfx->normal > 0) - sfx->normal--; - } -} diff --git a/src/sound/fmodsound.h b/src/sound/fmodsound.h index 3e3046dcc..613983547 100644 --- a/src/sound/fmodsound.h +++ b/src/sound/fmodsound.h @@ -66,14 +66,10 @@ private: int NumChannels; unsigned int DriverCaps; int OutputType; - bool Hardware3D; bool SFXPaused; -// int PutSampleData (FSOUND_SAMPLE *sample, const BYTE *data, int len, unsigned int mode); void DoLoad (void **slot, sfxinfo_t *sfx); void getsfx (sfxinfo_t *sfx); - FMOD::Sound *CheckLooping (sfxinfo_t *sfx, bool looped); - void UncheckSound (sfxinfo_t *sfx, bool looped); bool Init (); void Shutdown (); diff --git a/src/xlat/parse_xlat.cpp b/src/xlat/parse_xlat.cpp index 748a41f30..5a5dc1cde 100644 --- a/src/xlat/parse_xlat.cpp +++ b/src/xlat/parse_xlat.cpp @@ -352,7 +352,7 @@ struct XlatParseContext } } - int PrintError (char *s) + int PrintError (const char *s) { if (SourceFile != NULL) Printf ("%s, line %d: %s\n", SourceFile, SourceLine, s); @@ -397,7 +397,7 @@ void ParseXlatLump(const char *lumpname, void *pParser, XlatParseContext *contex context->SourceFile = lumpname; char *sourcep = lumpdata; - while (tokentype = context->GetToken(sourcep, &token)) + while ( (tokentype = context->GetToken(sourcep, &token)) ) { // It is much easier to handle include statements outside the main parser. if (tokentype == INCLUDE) diff --git a/src/xlat/xlat.h b/src/xlat/xlat.h index 29c80a183..22cba6c73 100644 --- a/src/xlat/xlat.h +++ b/src/xlat/xlat.h @@ -64,4 +64,4 @@ extern TAutoGrowArray SimpleLineTranslations; extern FBoomTranslator Boomish[MAX_BOOMISH]; extern int NumBoomish; -#endif \ No newline at end of file +#endif diff --git a/src/xlat/xlat_parser.c b/src/xlat/xlat_parser.c index 1efb872a9..fd1e14804 100644 --- a/src/xlat/xlat_parser.c +++ b/src/xlat/xlat_parser.c @@ -520,9 +520,9 @@ static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){ case 28: /* ARG5 */ case 29: /* OR_EQUAL */ case 30: /* COLON */ -#line 3 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 3 "src/xlat/xlat_parser.y" {} -#line 526 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 526 "src/xlat/xlat_parser.c" break; default: break; /* If no destructor action specified: do nothing */ } @@ -860,133 +860,133 @@ static void yy_reduce( case 6: /*external_declaration ::= boom_declaration */ case 22: /*enum_list ::= */ case 23: /*enum_list ::= single_enum */ -#line 9 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 9 "src/xlat/xlat_parser.y" { } -#line 867 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 867 "src/xlat/xlat_parser.c" break; case 7: /* external_declaration ::= NOP */ -#line 18 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 18 "src/xlat/xlat_parser.y" { yy_destructor(1,&yymsp[0].minor); } -#line 874 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 874 "src/xlat/xlat_parser.c" break; case 8: /* exp ::= NUM */ -#line 29 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 29 "src/xlat/xlat_parser.y" { yygotominor.yy94 = yymsp[0].minor.yy0.val; } -#line 879 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 879 "src/xlat/xlat_parser.c" break; case 9: /* exp ::= SYMNUM */ -#line 30 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 30 "src/xlat/xlat_parser.y" { yygotominor.yy94 = yymsp[0].minor.yy0.symval->Value; } -#line 884 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 884 "src/xlat/xlat_parser.c" break; case 10: /* exp ::= exp PLUS exp */ -#line 31 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 31 "src/xlat/xlat_parser.y" { yygotominor.yy94 = yymsp[-2].minor.yy94 + yymsp[0].minor.yy94; yy_destructor(6,&yymsp[-1].minor); } -#line 890 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 890 "src/xlat/xlat_parser.c" break; case 11: /* exp ::= exp MINUS exp */ -#line 32 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 32 "src/xlat/xlat_parser.y" { yygotominor.yy94 = yymsp[-2].minor.yy94 - yymsp[0].minor.yy94; yy_destructor(5,&yymsp[-1].minor); } -#line 896 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 896 "src/xlat/xlat_parser.c" break; case 12: /* exp ::= exp MULTIPLY exp */ -#line 33 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 33 "src/xlat/xlat_parser.y" { yygotominor.yy94 = yymsp[-2].minor.yy94 * yymsp[0].minor.yy94; yy_destructor(7,&yymsp[-1].minor); } -#line 902 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 902 "src/xlat/xlat_parser.c" break; case 13: /* exp ::= exp DIVIDE exp */ -#line 34 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 34 "src/xlat/xlat_parser.y" { yygotominor.yy94 = yymsp[-2].minor.yy94 / yymsp[0].minor.yy94; yy_destructor(8,&yymsp[-1].minor); } -#line 908 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 908 "src/xlat/xlat_parser.c" break; case 14: /* exp ::= exp OR exp */ -#line 35 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 35 "src/xlat/xlat_parser.y" { yygotominor.yy94 = yymsp[-2].minor.yy94 | yymsp[0].minor.yy94; yy_destructor(2,&yymsp[-1].minor); } -#line 914 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 914 "src/xlat/xlat_parser.c" break; case 15: /* exp ::= exp AND exp */ -#line 36 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 36 "src/xlat/xlat_parser.y" { yygotominor.yy94 = yymsp[-2].minor.yy94 & yymsp[0].minor.yy94; yy_destructor(4,&yymsp[-1].minor); } -#line 920 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 920 "src/xlat/xlat_parser.c" break; case 16: /* exp ::= exp XOR exp */ -#line 37 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 37 "src/xlat/xlat_parser.y" { yygotominor.yy94 = yymsp[-2].minor.yy94 ^ yymsp[0].minor.yy94; yy_destructor(3,&yymsp[-1].minor); } -#line 926 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 926 "src/xlat/xlat_parser.c" break; case 17: /* exp ::= MINUS exp */ -#line 38 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 38 "src/xlat/xlat_parser.y" { yygotominor.yy94 = -yymsp[0].minor.yy94; yy_destructor(5,&yymsp[-1].minor); } -#line 932 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 932 "src/xlat/xlat_parser.c" break; case 18: /* exp ::= LPAREN exp RPAREN */ -#line 39 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 39 "src/xlat/xlat_parser.y" { yygotominor.yy94 = yymsp[-1].minor.yy94; yy_destructor(12,&yymsp[-2].minor); yy_destructor(13,&yymsp[0].minor); } -#line 939 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 939 "src/xlat/xlat_parser.c" break; case 19: /* define_statement ::= DEFINE SYM LPAREN exp RPAREN */ -#line 49 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 49 "src/xlat/xlat_parser.y" { context->AddSym (yymsp[-3].minor.yy0.sym, yymsp[-1].minor.yy94); yy_destructor(14,&yymsp[-4].minor); yy_destructor(12,&yymsp[-2].minor); yy_destructor(13,&yymsp[0].minor); } -#line 949 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 949 "src/xlat/xlat_parser.c" break; case 20: /* enum_statement ::= enum_open enum_list RBRACE */ -#line 59 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 59 "src/xlat/xlat_parser.y" { yy_destructor(16,&yymsp[0].minor); } -#line 956 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 956 "src/xlat/xlat_parser.c" break; case 21: /* enum_open ::= ENUM LBRACE */ -#line 62 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 62 "src/xlat/xlat_parser.y" { context->EnumVal = 0; yy_destructor(17,&yymsp[-1].minor); yy_destructor(18,&yymsp[0].minor); } -#line 965 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 965 "src/xlat/xlat_parser.c" break; case 24: /* enum_list ::= single_enum COMMA enum_list */ -#line 68 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 68 "src/xlat/xlat_parser.y" { yy_destructor(19,&yymsp[-1].minor); } -#line 972 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 972 "src/xlat/xlat_parser.c" break; case 25: /* single_enum ::= SYM */ -#line 71 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 71 "src/xlat/xlat_parser.y" { context->AddSym (yymsp[0].minor.yy0.sym, context->EnumVal++); } -#line 979 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 979 "src/xlat/xlat_parser.c" break; case 26: /* single_enum ::= SYM EQUALS exp */ -#line 76 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 76 "src/xlat/xlat_parser.y" { context->AddSym (yymsp[-2].minor.yy0.sym, context->EnumVal = yymsp[0].minor.yy94); yy_destructor(20,&yymsp[-1].minor); } -#line 987 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 987 "src/xlat/xlat_parser.c" break; case 27: /* linetype_declaration ::= exp EQUALS exp COMMA exp LPAREN special_args RPAREN */ -#line 87 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 87 "src/xlat/xlat_parser.y" { SimpleLineTranslations.SetVal(yymsp[-7].minor.yy94, FLineTrans(yymsp[-3].minor.yy94&0xffff, yymsp[-5].minor.yy94+yymsp[-1].minor.yy15.addflags, yymsp[-1].minor.yy15.args[0], yymsp[-1].minor.yy15.args[1], yymsp[-1].minor.yy15.args[2], yymsp[-1].minor.yy15.args[3], yymsp[-1].minor.yy15.args[4])); @@ -995,10 +995,10 @@ static void yy_reduce( yy_destructor(12,&yymsp[-2].minor); yy_destructor(13,&yymsp[0].minor); } -#line 999 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 999 "src/xlat/xlat_parser.c" break; case 28: /* linetype_declaration ::= exp EQUALS exp COMMA SYM LPAREN special_args RPAREN */ -#line 93 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 93 "src/xlat/xlat_parser.y" { Printf ("%s, line %d: %s is undefined\n", context->SourceFile, context->SourceLine, yymsp[-3].minor.yy0.sym); yy_destructor(20,&yymsp[-6].minor); @@ -1006,10 +1006,10 @@ static void yy_reduce( yy_destructor(12,&yymsp[-2].minor); yy_destructor(13,&yymsp[0].minor); } -#line 1010 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1010 "src/xlat/xlat_parser.c" break; case 29: /* special_args ::= */ -#line 100 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 100 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = 0; yygotominor.yy15.args[0] = 0; @@ -1018,10 +1018,10 @@ static void yy_reduce( yygotominor.yy15.args[3] = 0; yygotominor.yy15.args[4] = 0; } -#line 1022 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1022 "src/xlat/xlat_parser.c" break; case 30: /* special_args ::= TAG */ -#line 109 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 109 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HASTAGAT1; yygotominor.yy15.args[0] = 0; @@ -1031,10 +1031,10 @@ static void yy_reduce( yygotominor.yy15.args[4] = 0; yy_destructor(21,&yymsp[0].minor); } -#line 1035 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1035 "src/xlat/xlat_parser.c" break; case 31: /* special_args ::= TAG COMMA exp */ -#line 118 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 118 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HASTAGAT1; yygotominor.yy15.args[0] = 0; @@ -1045,10 +1045,10 @@ static void yy_reduce( yy_destructor(21,&yymsp[-2].minor); yy_destructor(19,&yymsp[-1].minor); } -#line 1049 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1049 "src/xlat/xlat_parser.c" break; case 32: /* special_args ::= TAG COMMA exp COMMA exp */ -#line 127 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 127 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HASTAGAT1; yygotominor.yy15.args[0] = 0; @@ -1060,10 +1060,10 @@ static void yy_reduce( yy_destructor(19,&yymsp[-3].minor); yy_destructor(19,&yymsp[-1].minor); } -#line 1064 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1064 "src/xlat/xlat_parser.c" break; case 33: /* special_args ::= TAG COMMA exp COMMA exp COMMA exp */ -#line 136 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 136 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HASTAGAT1; yygotominor.yy15.args[0] = 0; @@ -1076,10 +1076,10 @@ static void yy_reduce( yy_destructor(19,&yymsp[-3].minor); yy_destructor(19,&yymsp[-1].minor); } -#line 1080 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1080 "src/xlat/xlat_parser.c" break; case 34: /* special_args ::= TAG COMMA exp COMMA exp COMMA exp COMMA exp */ -#line 145 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 145 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HASTAGAT1; yygotominor.yy15.args[0] = 0; @@ -1093,10 +1093,10 @@ static void yy_reduce( yy_destructor(19,&yymsp[-3].minor); yy_destructor(19,&yymsp[-1].minor); } -#line 1097 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1097 "src/xlat/xlat_parser.c" break; case 35: /* special_args ::= TAG COMMA TAG */ -#line 154 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 154 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HAS2TAGS; yygotominor.yy15.args[0] = yygotominor.yy15.args[1] = 0; @@ -1107,10 +1107,10 @@ static void yy_reduce( yy_destructor(19,&yymsp[-1].minor); yy_destructor(21,&yymsp[0].minor); } -#line 1111 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1111 "src/xlat/xlat_parser.c" break; case 36: /* special_args ::= TAG COMMA TAG COMMA exp */ -#line 162 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 162 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HAS2TAGS; yygotominor.yy15.args[0] = yygotominor.yy15.args[1] = 0; @@ -1122,10 +1122,10 @@ static void yy_reduce( yy_destructor(21,&yymsp[-2].minor); yy_destructor(19,&yymsp[-1].minor); } -#line 1126 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1126 "src/xlat/xlat_parser.c" break; case 37: /* special_args ::= TAG COMMA TAG COMMA exp COMMA exp */ -#line 170 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 170 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HAS2TAGS; yygotominor.yy15.args[0] = yygotominor.yy15.args[1] = 0; @@ -1138,10 +1138,10 @@ static void yy_reduce( yy_destructor(19,&yymsp[-3].minor); yy_destructor(19,&yymsp[-1].minor); } -#line 1142 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1142 "src/xlat/xlat_parser.c" break; case 38: /* special_args ::= TAG COMMA TAG COMMA exp COMMA exp COMMA exp */ -#line 178 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 178 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HAS2TAGS; yygotominor.yy15.args[0] = yygotominor.yy15.args[1] = 0; @@ -1155,10 +1155,10 @@ static void yy_reduce( yy_destructor(19,&yymsp[-3].minor); yy_destructor(19,&yymsp[-1].minor); } -#line 1159 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1159 "src/xlat/xlat_parser.c" break; case 39: /* special_args ::= exp */ -#line 186 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 186 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = 0; yygotominor.yy15.args[0] = yymsp[0].minor.yy94; @@ -1167,10 +1167,10 @@ static void yy_reduce( yygotominor.yy15.args[3] = 0; yygotominor.yy15.args[4] = 0; } -#line 1171 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1171 "src/xlat/xlat_parser.c" break; case 40: /* special_args ::= exp COMMA exp */ -#line 195 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 195 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = 0; yygotominor.yy15.args[0] = yymsp[-2].minor.yy94; @@ -1180,10 +1180,10 @@ static void yy_reduce( yygotominor.yy15.args[4] = 0; yy_destructor(19,&yymsp[-1].minor); } -#line 1184 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1184 "src/xlat/xlat_parser.c" break; case 41: /* special_args ::= exp COMMA exp COMMA exp */ -#line 204 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 204 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = 0; yygotominor.yy15.args[0] = yymsp[-4].minor.yy94; @@ -1194,10 +1194,10 @@ static void yy_reduce( yy_destructor(19,&yymsp[-3].minor); yy_destructor(19,&yymsp[-1].minor); } -#line 1198 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1198 "src/xlat/xlat_parser.c" break; case 42: /* special_args ::= exp COMMA exp COMMA exp COMMA exp */ -#line 213 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 213 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = 0; yygotominor.yy15.args[0] = yymsp[-6].minor.yy94; @@ -1209,10 +1209,10 @@ static void yy_reduce( yy_destructor(19,&yymsp[-3].minor); yy_destructor(19,&yymsp[-1].minor); } -#line 1213 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1213 "src/xlat/xlat_parser.c" break; case 43: /* special_args ::= exp COMMA exp COMMA exp COMMA exp COMMA exp */ -#line 222 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 222 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = 0; yygotominor.yy15.args[0] = yymsp[-8].minor.yy94; @@ -1225,10 +1225,10 @@ static void yy_reduce( yy_destructor(19,&yymsp[-3].minor); yy_destructor(19,&yymsp[-1].minor); } -#line 1229 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1229 "src/xlat/xlat_parser.c" break; case 44: /* special_args ::= exp COMMA TAG */ -#line 231 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 231 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HASTAGAT2; yygotominor.yy15.args[0] = yymsp[-2].minor.yy94; @@ -1239,10 +1239,10 @@ static void yy_reduce( yy_destructor(19,&yymsp[-1].minor); yy_destructor(21,&yymsp[0].minor); } -#line 1243 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1243 "src/xlat/xlat_parser.c" break; case 45: /* special_args ::= exp COMMA TAG COMMA exp */ -#line 240 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 240 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HASTAGAT2; yygotominor.yy15.args[0] = yymsp[-4].minor.yy94; @@ -1254,10 +1254,10 @@ static void yy_reduce( yy_destructor(21,&yymsp[-2].minor); yy_destructor(19,&yymsp[-1].minor); } -#line 1258 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1258 "src/xlat/xlat_parser.c" break; case 46: /* special_args ::= exp COMMA TAG COMMA exp COMMA exp */ -#line 249 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 249 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HASTAGAT2; yygotominor.yy15.args[0] = yymsp[-6].minor.yy94; @@ -1270,10 +1270,10 @@ static void yy_reduce( yy_destructor(19,&yymsp[-3].minor); yy_destructor(19,&yymsp[-1].minor); } -#line 1274 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1274 "src/xlat/xlat_parser.c" break; case 47: /* special_args ::= exp COMMA TAG COMMA exp COMMA exp COMMA exp */ -#line 258 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 258 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HASTAGAT2; yygotominor.yy15.args[0] = yymsp[-8].minor.yy94; @@ -1287,10 +1287,10 @@ static void yy_reduce( yy_destructor(19,&yymsp[-3].minor); yy_destructor(19,&yymsp[-1].minor); } -#line 1291 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1291 "src/xlat/xlat_parser.c" break; case 48: /* special_args ::= exp COMMA exp COMMA TAG */ -#line 267 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 267 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HASTAGAT3; yygotominor.yy15.args[0] = yymsp[-4].minor.yy94; @@ -1302,10 +1302,10 @@ static void yy_reduce( yy_destructor(19,&yymsp[-1].minor); yy_destructor(21,&yymsp[0].minor); } -#line 1306 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1306 "src/xlat/xlat_parser.c" break; case 49: /* special_args ::= exp COMMA exp COMMA TAG COMMA exp */ -#line 276 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 276 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HASTAGAT3; yygotominor.yy15.args[0] = yymsp[-6].minor.yy94; @@ -1318,10 +1318,10 @@ static void yy_reduce( yy_destructor(21,&yymsp[-2].minor); yy_destructor(19,&yymsp[-1].minor); } -#line 1322 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1322 "src/xlat/xlat_parser.c" break; case 50: /* special_args ::= exp COMMA exp COMMA TAG COMMA exp COMMA exp */ -#line 285 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 285 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HASTAGAT3; yygotominor.yy15.args[0] = yymsp[-8].minor.yy94; @@ -1335,10 +1335,10 @@ static void yy_reduce( yy_destructor(19,&yymsp[-3].minor); yy_destructor(19,&yymsp[-1].minor); } -#line 1339 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1339 "src/xlat/xlat_parser.c" break; case 51: /* special_args ::= exp COMMA exp COMMA exp COMMA TAG */ -#line 294 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 294 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HASTAGAT4; yygotominor.yy15.args[0] = yymsp[-6].minor.yy94; @@ -1351,10 +1351,10 @@ static void yy_reduce( yy_destructor(19,&yymsp[-1].minor); yy_destructor(21,&yymsp[0].minor); } -#line 1355 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1355 "src/xlat/xlat_parser.c" break; case 52: /* special_args ::= exp COMMA exp COMMA exp COMMA TAG COMMA exp */ -#line 303 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 303 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HASTAGAT4; yygotominor.yy15.args[0] = yymsp[-8].minor.yy94; @@ -1368,10 +1368,10 @@ static void yy_reduce( yy_destructor(21,&yymsp[-2].minor); yy_destructor(19,&yymsp[-1].minor); } -#line 1372 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1372 "src/xlat/xlat_parser.c" break; case 53: /* special_args ::= exp COMMA exp COMMA exp COMMA exp COMMA TAG */ -#line 312 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 312 "src/xlat/xlat_parser.y" { yygotominor.yy15.addflags = LINETRANS_HASTAGAT5; yygotominor.yy15.args[0] = yymsp[-8].minor.yy94; @@ -1385,10 +1385,10 @@ static void yy_reduce( yy_destructor(19,&yymsp[-1].minor); yy_destructor(21,&yymsp[0].minor); } -#line 1389 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1389 "src/xlat/xlat_parser.c" break; case 54: /* boom_declaration ::= LBRACKET exp RBRACKET LPAREN exp COMMA exp RPAREN LBRACE boom_body RBRACE */ -#line 337 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 337 "src/xlat/xlat_parser.y" { int i; MoreLines *probe; @@ -1428,26 +1428,26 @@ static void yy_reduce( yy_destructor(18,&yymsp[-2].minor); yy_destructor(16,&yymsp[0].minor); } -#line 1432 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1432 "src/xlat/xlat_parser.c" break; case 55: /* boom_body ::= */ -#line 371 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 371 "src/xlat/xlat_parser.y" { yygotominor.yy81 = NULL; } -#line 1439 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1439 "src/xlat/xlat_parser.c" break; case 56: /* boom_body ::= boom_line boom_body */ -#line 375 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 375 "src/xlat/xlat_parser.y" { yygotominor.yy81 = new MoreLines; yygotominor.yy81->next = yymsp[0].minor.yy81; yygotominor.yy81->arg = yymsp[-1].minor.yy20; } -#line 1448 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1448 "src/xlat/xlat_parser.c" break; case 57: /* boom_line ::= boom_selector boom_op boom_args */ -#line 382 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 382 "src/xlat/xlat_parser.y" { yygotominor.yy20.bOrExisting = (yymsp[-1].minor.yy94 == OR_EQUAL); yygotominor.yy20.bUseConstant = (yymsp[0].minor.yy40.filters == NULL); @@ -1478,95 +1478,95 @@ static void yy_reduce( yygotominor.yy20.ListSize = i > 15 ? 15 : i; } } -#line 1482 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1482 "src/xlat/xlat_parser.c" break; case 58: /* boom_selector ::= FLAGS */ -#line 413 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 413 "src/xlat/xlat_parser.y" { yygotominor.yy94 = 4; yy_destructor(24,&yymsp[0].minor); } -#line 1488 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1488 "src/xlat/xlat_parser.c" break; case 59: /* boom_selector ::= ARG2 */ -#line 414 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 414 "src/xlat/xlat_parser.y" { yygotominor.yy94 = 0; yy_destructor(25,&yymsp[0].minor); } -#line 1494 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1494 "src/xlat/xlat_parser.c" break; case 60: /* boom_selector ::= ARG3 */ -#line 415 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 415 "src/xlat/xlat_parser.y" { yygotominor.yy94 = 1; yy_destructor(26,&yymsp[0].minor); } -#line 1500 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1500 "src/xlat/xlat_parser.c" break; case 61: /* boom_selector ::= ARG4 */ -#line 416 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 416 "src/xlat/xlat_parser.y" { yygotominor.yy94 = 2; yy_destructor(27,&yymsp[0].minor); } -#line 1506 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1506 "src/xlat/xlat_parser.c" break; case 62: /* boom_selector ::= ARG5 */ -#line 417 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 417 "src/xlat/xlat_parser.y" { yygotominor.yy94 = 3; yy_destructor(28,&yymsp[0].minor); } -#line 1512 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1512 "src/xlat/xlat_parser.c" break; case 63: /* boom_op ::= EQUALS */ -#line 419 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 419 "src/xlat/xlat_parser.y" { yygotominor.yy94 = '='; yy_destructor(20,&yymsp[0].minor); } -#line 1518 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1518 "src/xlat/xlat_parser.c" break; case 64: /* boom_op ::= OR_EQUAL */ -#line 420 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 420 "src/xlat/xlat_parser.y" { yygotominor.yy94 = OR_EQUAL; yy_destructor(29,&yymsp[0].minor); } -#line 1524 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1524 "src/xlat/xlat_parser.c" break; case 65: /* boom_args ::= exp */ -#line 423 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 423 "src/xlat/xlat_parser.y" { yygotominor.yy40.constant = yymsp[0].minor.yy94; yygotominor.yy40.filters = NULL; } -#line 1532 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1532 "src/xlat/xlat_parser.c" break; case 66: /* boom_args ::= exp LBRACKET arg_list RBRACKET */ -#line 428 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 428 "src/xlat/xlat_parser.y" { yygotominor.yy40.mask = yymsp[-3].minor.yy94; yygotominor.yy40.filters = yymsp[-1].minor.yy39; yy_destructor(22,&yymsp[-2].minor); yy_destructor(23,&yymsp[0].minor); } -#line 1542 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1542 "src/xlat/xlat_parser.c" break; case 67: /* arg_list ::= list_val */ -#line 434 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 434 "src/xlat/xlat_parser.y" { yygotominor.yy39 = new MoreFilters; yygotominor.yy39->next = NULL; yygotominor.yy39->filter = yymsp[0].minor.yy11; } -#line 1551 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1551 "src/xlat/xlat_parser.c" break; case 68: /* arg_list ::= list_val COMMA arg_list */ -#line 440 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 440 "src/xlat/xlat_parser.y" { yygotominor.yy39 = new MoreFilters; yygotominor.yy39->next = yymsp[0].minor.yy39; yygotominor.yy39->filter = yymsp[-2].minor.yy11; yy_destructor(19,&yymsp[-1].minor); } -#line 1561 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1561 "src/xlat/xlat_parser.c" break; case 69: /* list_val ::= exp COLON exp */ -#line 447 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 447 "src/xlat/xlat_parser.y" { yygotominor.yy11.filter = yymsp[-2].minor.yy94; yygotominor.yy11.value = yymsp[0].minor.yy94; yy_destructor(30,&yymsp[-1].minor); } -#line 1570 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1570 "src/xlat/xlat_parser.c" break; }; yygoto = yyRuleInfo[yyruleno].lhs; @@ -1624,9 +1624,9 @@ static void yy_syntax_error( ){ XlatParseARG_FETCH; #define TOKEN (yyminor.yy0) -#line 6 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y" +#line 6 "src/xlat/xlat_parser.y" context->PrintError("syntax error"); -#line 1630 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c" +#line 1630 "src/xlat/xlat_parser.c" XlatParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ }