- Fixed: The check arrays for BlockThingsIterators were not properly

freed and each iterator allocated a new one as a result.
- Split the Xlat parser context class into a generic part that can be 
  used for other Lemon-based parsers in the future and a smaller
  Xlat-specific part. 


SVN r892 (trunk)
This commit is contained in:
Christoph Oelckers 2008-04-08 15:07:09 +00:00
parent 17816dcadd
commit 3a14dab2e8
8 changed files with 773 additions and 558 deletions

View file

@ -1,4 +1,17 @@
April 8, 2008 (Changes by Graf Zahl) April 8, 2008 (Changes by Graf Zahl)
- Changed XlatParseContext::FindToken to do a binary search over the
valid token names.
- Fixed: The check arrays for BlockThingsIterators were not properly
freed and each iterator allocated a new one as a result.
- Split the Xlat parser context class into a generic part that can be
used for other Lemon-based parsers in the future and a smaller
Xlat-specific part.
- Changed: P_TeleportMove now always sets BlockingLine to NULL and
P_FindFloorCeiling doesn't set it at all. The way it was set in
PIT_FindFloorCeiling didn't look correct. (Note: It's amazing how
easy it is to break P_TryMove et.al. with DECORATE if you just know
which combinations of code pointers will cause problems. This definitely
needs to be addressed.)
- Changed P_FindFloorCeiling so that it doesn't need global variables - Changed P_FindFloorCeiling so that it doesn't need global variables
anymore. I also moved the code to set the calling actor's information anymore. I also moved the code to set the calling actor's information
into this function because that's all it is used for. This also fixes into this function because that's all it is used for. This also fixes

View file

@ -270,7 +270,7 @@ class FBlockThingsIterator
FBlockNode *block; FBlockNode *block;
static BTChecked *GetCheckArray(); BTChecked *GetCheckArray();
void FreeCheckArray(); void FreeCheckArray();
void StartBlock(int x, int y); void StartBlock(int x, int y);

View file

@ -816,6 +816,7 @@ TDeletingArray< FBlockThingsIterator::BTChecked* > FBlockThingsIterator::FreeBTC
FBlockThingsIterator::BTChecked *FBlockThingsIterator::GetCheckArray() FBlockThingsIterator::BTChecked *FBlockThingsIterator::GetCheckArray()
{ {
dontfreecheck = false;
if (FreeBTChecked.Size() != 0) if (FreeBTChecked.Size() != 0)
{ {
BTChecked *ret; BTChecked *ret;

349
src/parsecontext.cpp Normal file
View file

@ -0,0 +1,349 @@
/*
** parsecontext.cpp
** Base class for Lemon-based parsers
**
**---------------------------------------------------------------------------
** Copyright 1998-2008 Randy Heit
** Copyright 2008 Christoph Oelckers
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions
** are met:
**
** 1. Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** 2. Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in the
** documentation and/or other materials provided with the distribution.
** 3. The name of the author may not be used to endorse or promote products
** derived from this software without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**---------------------------------------------------------------------------
**
*/
#include <string.h>
#include <ctype.h>
#include "w_wad.h"
#include "parsecontext.h"
#include "p_lnspec.h"
//==========================================================================
//
//
//
//==========================================================================
void FParseContext::AddSym (char *sym, int val)
{
FParseSymbol syme;
syme.Value = val;
strncpy (syme.Sym, sym, 79);
syme.Sym[79]=0;
symbols.Push(syme);
}
//==========================================================================
//
//
//
//==========================================================================
bool FParseContext::FindSym (char *sym, FParseSymbol **val)
{
for(unsigned i=0;i<symbols.Size(); i++)
{
if (strcmp (symbols[i].Sym, sym) == 0)
{
*val = &symbols[i];
return true;
}
}
return false;
}
//==========================================================================
//
//
//
//==========================================================================
int FParseContext::GetToken (char *&sourcep, FParseToken *yylval)
{
char token[80];
int toksize;
int c;
loop:
while (isspace (c = *sourcep++) && c != 0)
{
if (c == '\n')
SourceLine++;
}
if (c == 0)
{
return 0;
}
if (isdigit (c))
{
int buildup = c - '0';
if (c == '0')
{
c = *sourcep++;
if (c == 'x' || c == 'X')
{
for (;;)
{
c = *sourcep++;
if (isdigit (c))
{
buildup = (buildup<<4) + c - '0';
}
else if (c >= 'a' && c <= 'f')
{
buildup = (buildup<<4) + c - 'a' + 10;
}
else if (c >= 'A' && c <= 'F')
{
buildup = (buildup<<4) + c - 'A' + 10;
}
else
{
sourcep--;
yylval->val = buildup;
return TokenTrans[NUM];
}
}
}
else
{
sourcep--;
}
}
while (isdigit (c = *sourcep++))
{
buildup = buildup*10 + c - '0';
}
sourcep--;
yylval->val = buildup;
return TokenTrans[NUM];
}
if (isalpha (c))
{
int buildup = 0;
token[0] = c;
toksize = 1;
while (toksize < 79 && (isalnum (c = *sourcep++) || c == '_'))
{
token[toksize++] = c;
}
token[toksize] = 0;
if (toksize == 79 && isalnum (c))
{
while (isalnum (c = *sourcep++))
;
}
sourcep--;
if (FindToken (token, &buildup))
{
return buildup;
}
if (FindSym (token, &yylval->symval))
{
return TokenTrans[SYMNUM];
}
if ((yylval->val = P_FindLineSpecial(token)) != 0)
{
return TokenTrans[NUM];
}
strcpy (yylval->sym, token);
return TokenTrans[SYM];
}
if (c == '/')
{
c = *sourcep++;;
if (c == '*')
{
for (;;)
{
while ((c = *sourcep++) != '*' && c != 0)
{
if (c == '\n')
SourceLine++;
}
if (c == 0)
return 0;
if ((c = *sourcep++) == '/')
goto loop;
if (c == 0)
return 0;
sourcep--;
}
}
else if (c == '/')
{
while ((c = *sourcep++) != '\n' && c != 0)
;
if (c == '\n')
SourceLine++;
else if (c == EOF)
return 0;
goto loop;
}
else
{
sourcep--;
return TokenTrans[DIVIDE];
}
}
if (c == '"')
{
int tokensize = 0;
while ((c = *sourcep++) != '"' && c != 0)
{
yylval->string[tokensize++] = c;
}
yylval->string[tokensize] = 0;
return TokenTrans[STRING];
}
if (c == '|')
{
c = *sourcep++;
if (c == '=')
return TokenTrans[OR_EQUAL];
sourcep--;
return TokenTrans[OR];
}
if (c == '<')
{
c = *sourcep++;
if (c == '<')
{
c = *sourcep++;
if (c == '=')
{
return TokenTrans[LSHASSIGN];
}
sourcep--;
return 0;
}
c--;
return 0;
}
if (c == '>')
{
c = *sourcep++;
if (c == '>')
{
c = *sourcep++;
if (c == '=')
{
return TokenTrans[RSHASSIGN];
}
sourcep--;
return 0;
}
c--;
return 0;
}
switch (c)
{
case '^': return TokenTrans[XOR];
case '&': return TokenTrans[AND];
case '-': return TokenTrans[MINUS];
case '+': return TokenTrans[PLUS];
case '*': return TokenTrans[MULTIPLY];
case '(': return TokenTrans[LPAREN];
case ')': return TokenTrans[RPAREN];
case ',': return TokenTrans[COMMA];
case '{': return TokenTrans[LBRACE];
case '}': return TokenTrans[RBRACE];
case '=': return TokenTrans[EQUALS];
case ';': return TokenTrans[SEMICOLON];
case ':': return TokenTrans[COLON];
case '[': return TokenTrans[LBRACKET];
case ']': return TokenTrans[RBRACKET];
default: return 0;
}
}
//==========================================================================
//
//
//
//==========================================================================
int FParseContext::PrintError (const char *s)
{
if (SourceFile != NULL)
Printf ("%s, line %d: %s\n", SourceFile, SourceLine, s);
else
Printf ("%s\n", s);
return 0;
}
//==========================================================================
//
//
//
//==========================================================================
void FParseContext::ParseLump(const char *lumpname)
{
int tokentype;
int SavedSourceLine = SourceLine;
const char *SavedSourceFile = SourceFile;
FParseToken token;
int lumpno = Wads.CheckNumForFullName(lumpname, true);
if (lumpno == -1)
{
Printf ("%s, line %d: Lump '%s' not found\n", SourceFile, SourceLine, lumpname);
return;
}
// Read the lump into a buffer and add a 0-terminator
int lumplen = Wads.LumpLength(lumpno);
char *lumpdata = new char[lumplen+1];
Wads.ReadLump(lumpno, lumpdata);
lumpdata[lumplen] = 0;
SourceLine = 0;
SourceFile = lumpname;
char *sourcep = lumpdata;
while ( (tokentype = GetToken(sourcep, &token)) )
{
// It is much easier to handle include statements outside the main parser.
if (tokentype == TokenTrans[INCLUDE])
{
if (GetToken(sourcep, &token) != TokenTrans[STRING])
{
Printf("%s, line %d: Include: String parameter expected\n", SourceFile, SourceLine);
return;
}
ParseLump(token.string);
}
else
{
Parse(pParser, tokentype, token, this);
}
}
delete [] lumpdata;
SourceLine = SavedSourceLine;
SourceFile = SavedSourceFile;
}

150
src/parsecontext.h Normal file
View file

@ -0,0 +1,150 @@
/*
** parsecontext.h
** Base class for Lemon-based parsers
**
**---------------------------------------------------------------------------
** Copyright 2008 Christoph Oelckers
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions
** are met:
**
** 1. Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** 2. Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in the
** documentation and/or other materials provided with the distribution.
** 3. The name of the author may not be used to endorse or promote products
** derived from this software without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**---------------------------------------------------------------------------
**
*/
#ifndef __PARSECONTEST__H_
#define __PARSECONTEST__H_
#include "tarray.h"
// The basic tokens the parser requires the grammar to understand
enum
{
OR =1,
XOR ,
AND ,
MINUS ,
PLUS ,
MULTIPLY ,
DIVIDE ,
NUM ,
SYMNUM ,
LPAREN ,
RPAREN ,
SYM ,
RBRACE ,
LBRACE ,
COMMA ,
EQUALS ,
LBRACKET ,
RBRACKET ,
OR_EQUAL ,
COLON ,
SEMICOLON,
LSHASSIGN,
RSHASSIGN,
STRING ,
INCLUDE ,
};
#define DEFINE_TOKEN_TRANS(prefix) \
static int TokenTrans[] = { \
0, \
prefix##OR, \
prefix##XOR, \
prefix##AND, \
prefix##MINUS, \
prefix##PLUS, \
prefix##MULTIPLY, \
prefix##DIVIDE, \
prefix##NUM, \
prefix##SYMNUM, \
prefix##LPAREN, \
prefix##RPAREN, \
prefix##SYM, \
prefix##RBRACE, \
prefix##LBRACE, \
prefix##COMMA, \
prefix##EQUALS, \
prefix##LBRACKET, \
prefix##RBRACKET, \
prefix##OR_EQUAL, \
prefix##COLON, \
prefix##SEMICOLON, \
prefix##LSHASSIGN, \
prefix##RSHASSIGN, \
prefix##STRING, \
prefix##INCLUDE, \
};
struct FParseSymbol
{
int Value;
char Sym[80];
};
union FParseToken
{
int val;
char sym[80];
char string[80];
FParseSymbol *symval;
};
struct FParseContext;
typedef void (*ParseFunc)(void *pParser, int tokentype, FParseToken token, FParseContext *context);
struct FParseContext
{
TArray<FParseSymbol> symbols;
int SourceLine;
const char *SourceFile;
int EnumVal;
int *TokenTrans;
void *pParser;
ParseFunc Parse;
FParseContext(void *parser, ParseFunc parse, int *tt)
{
SourceLine = 0;
SourceFile = NULL;
pParser = parser;
Parse = parse;
TokenTrans = tt;
}
virtual ~FParseContext() {}
void AddSym (char *sym, int val);
bool FindSym (char *sym, FParseSymbol **val);
virtual bool FindToken (char *tok, int *type) = 0;
int GetToken (char *&sourcep, FParseToken *yylval);
int PrintError (const char *s);
void ParseLump(const char *lumpname);
};
#endif

View file

@ -41,9 +41,21 @@
#include "p_lnspec.h" #include "p_lnspec.h"
#include "info.h" #include "info.h"
#include "gi.h" #include "gi.h"
#include "parsecontext.h"
#include "xlat_parser.h" #include "xlat_parser.h"
#include "xlat.h" #include "xlat.h"
// Token types not used in the grammar
enum
{
XLAT_INCLUDE=128,
XLAT_STRING,
};
DEFINE_TOKEN_TRANS(XLAT_)
static FString LastTranslator; static FString LastTranslator;
TAutoGrowArray<FLineTrans> SimpleLineTranslations; TAutoGrowArray<FLineTrans> SimpleLineTranslations;
FBoomTranslator Boomish[MAX_BOOMISH]; FBoomTranslator Boomish[MAX_BOOMISH];
@ -51,27 +63,6 @@ int NumBoomish;
TAutoGrowArray<FSectorTrans> SectorTranslations; TAutoGrowArray<FSectorTrans> SectorTranslations;
TArray<FSectorMask> SectorMasks; TArray<FSectorMask> SectorMasks;
// Token types not used in the grammar
enum
{
INCLUDE=128,
STRING,
};
struct Symbol
{
int Value;
char Sym[80];
};
union XlatToken
{
int val;
char sym[80];
char string[80];
Symbol *symval;
};
struct SpecialArgs struct SpecialArgs
{ {
@ -105,49 +96,11 @@ struct ParseBoomArg
}; };
struct XlatParseContext struct XlatParseContext : public FParseContext
{ {
TArray<Symbol> symbols; XlatParseContext(void *parser, ParseFunc parse, int *tt)
int SourceLine; : FParseContext(parser, parse, tt)
const char *SourceFile;
int EnumVal;
XlatParseContext()
{ {
SourceLine = 0;
SourceFile = NULL;
}
//==========================================================================
//
//
//
//==========================================================================
void AddSym (char *sym, int val)
{
Symbol syme;
syme.Value = val;
strncpy (syme.Sym, sym, 79);
syme.Sym[79]=0;
symbols.Push(syme);
}
//==========================================================================
//
//
//
//==========================================================================
bool FindSym (char *sym, Symbol **val)
{
for(unsigned i=0;i<symbols.Size(); i++)
{
if (strcmp (symbols[i].Sym, sym) == 0)
{
*val = &symbols[i];
return true;
}
}
return false;
} }
//========================================================================== //==========================================================================
@ -159,303 +112,43 @@ struct XlatParseContext
{ {
static const char tokens[][10] = static const char tokens[][10] =
{ {
"include", "define", "enum", "arg2", "arg3", "arg4", "arg5", "bitmask", "clear",
"arg5", "arg4", "arg3", "arg2", "flags", "lineid", "tag", "define", "enum", "flags", "include", "lineid",
"sector", "bitmask", "nobitmask", "clear" "nobitmask", "sector", "tag"
}; };
static const short types[] = static const short types[] =
{ {
INCLUDE, DEFINE, ENUM, XLAT_ARG2, XLAT_ARG3, XLAT_ARG4, XLAT_ARG5, XLAT_BITMASK, XLAT_CLEAR,
ARG5, ARG4, ARG3, ARG2, FLAGS, TAG, TAG, XLAT_DEFINE, XLAT_ENUM, XLAT_FLAGS, XLAT_INCLUDE, XLAT_TAG,
SECTOR, BITMASK, NOBITMASK, CLEAR XLAT_NOBITMASK, XLAT_SECTOR, XLAT_TAG,
}; };
int i;
for (i = sizeof(tokens)/sizeof(tokens[0])-1; i >= 0; i--) int min = 0, max = sizeof(tokens)/sizeof(tokens[0]) - 1;
{
if (strcmp (tok, tokens[i]) == 0)
{
*type = types[i];
return 1;
}
}
return 0;
}
//========================================================================== while (min <= max)
//
//
//
//==========================================================================
int GetToken (char *&sourcep, XlatToken *yylval)
{ {
char token[80]; int mid = (min + max) / 2;
int toksize; int lexval = stricmp (tok, tokens[mid]);
int c; if (lexval == 0)
loop:
while (isspace (c = *sourcep++) && c != 0)
{ {
if (c == '\n') *type = types[mid];
SourceLine++; return true;
} }
else if (lexval > 0)
if (c == 0)
{ {
return 0; min = mid + 1;
}
if (isdigit (c))
{
int buildup = c - '0';
if (c == '0')
{
c = *sourcep++;
if (c == 'x' || c == 'X')
{
for (;;)
{
c = *sourcep++;
if (isdigit (c))
{
buildup = (buildup<<4) + c - '0';
}
else if (c >= 'a' && c <= 'f')
{
buildup = (buildup<<4) + c - 'a' + 10;
}
else if (c >= 'A' && c <= 'F')
{
buildup = (buildup<<4) + c - 'A' + 10;
} }
else else
{ {
sourcep--; max = mid - 1;
yylval->val = buildup;
return NUM;
} }
} }
return false;
} }
else
{
sourcep--;
}
}
while (isdigit (c = *sourcep++))
{
buildup = buildup*10 + c - '0';
}
sourcep--;
yylval->val = buildup;
return NUM;
}
if (isalpha (c))
{
int buildup = 0;
token[0] = c;
toksize = 1;
while (toksize < 79 && (isalnum (c = *sourcep++) || c == '_'))
{
token[toksize++] = c;
}
token[toksize] = 0;
if (toksize == 79 && isalnum (c))
{
while (isalnum (c = *sourcep++))
;
}
sourcep--;
if (FindToken (token, &buildup))
{
return buildup;
}
if (FindSym (token, &yylval->symval))
{
return SYMNUM;
}
if ((yylval->val = P_FindLineSpecial(token)) != 0)
{
return NUM;
}
strcpy (yylval->sym, token);
return SYM;
}
if (c == '/')
{
c = *sourcep++;;
if (c == '*')
{
for (;;)
{
while ((c = *sourcep++) != '*' && c != 0)
{
if (c == '\n')
SourceLine++;
}
if (c == 0)
return 0;
if ((c = *sourcep++) == '/')
goto loop;
if (c == 0)
return 0;
sourcep--;
}
}
else if (c == '/')
{
while ((c = *sourcep++) != '\n' && c != 0)
;
if (c == '\n')
SourceLine++;
else if (c == EOF)
return 0;
goto loop;
}
else
{
sourcep--;
return DIVIDE;
}
}
if (c == '"')
{
int tokensize = 0;
while ((c = *sourcep++) != '"' && c != 0)
{
yylval->string[tokensize++] = c;
}
yylval->string[tokensize] = 0;
return STRING;
}
if (c == '|')
{
c = *sourcep++;
if (c == '=')
return OR_EQUAL;
sourcep--;
return OR;
}
if (c == '<')
{
c = *sourcep++;
if (c == '<')
{
c = *sourcep++;
if (c == '=')
{
return LSHASSIGN;
}
sourcep--;
return 0;
}
c--;
return 0;
}
if (c == '>')
{
c = *sourcep++;
if (c == '>')
{
c = *sourcep++;
if (c == '=')
{
return RSHASSIGN;
}
sourcep--;
return 0;
}
c--;
return 0;
}
switch (c)
{
case '^': return XOR;
case '&': return AND;
case '-': return MINUS;
case '+': return PLUS;
case '*': return MULTIPLY;
case '(': return LPAREN;
case ')': return RPAREN;
case ',': return COMMA;
case '{': return LBRACE;
case '}': return RBRACE;
case '=': return EQUALS;
case ';': return SEMICOLON;
case ':': return COLON;
case '[': return LBRACKET;
case ']': return RBRACKET;
default: return 0;
}
}
int PrintError (const char *s)
{
if (SourceFile != NULL)
Printf ("%s, line %d: %s\n", SourceFile, SourceLine, s);
else
Printf ("%s\n", s);
return 0;
}
}; };
#include "xlat_parser.c" #include "xlat_parser.c"
//==========================================================================
//
//
//
//==========================================================================
void ParseXlatLump(const char *lumpname, void *pParser, XlatParseContext *context)
{
int tokentype;
int SavedSourceLine = context->SourceLine;
const char *SavedSourceFile = context->SourceFile;
XlatToken token;
int lumpno = Wads.CheckNumForFullName(lumpname, true);
if (lumpno == -1)
{
Printf ("%s, line %d: Lump '%s' not found\n", context->SourceFile, context->SourceLine, lumpname);
return;
}
// Read the lump into a buffer and add a 0-terminator
int lumplen = Wads.LumpLength(lumpno);
char *lumpdata = new char[lumplen+1];
Wads.ReadLump(lumpno, lumpdata);
lumpdata[lumplen] = 0;
context->SourceLine = 0;
context->SourceFile = lumpname;
char *sourcep = lumpdata;
while ( (tokentype = context->GetToken(sourcep, &token)) )
{
// It is much easier to handle include statements outside the main parser.
if (tokentype == INCLUDE)
{
if (context->GetToken(sourcep, &token) != STRING)
{
Printf("%s, line %d: Include: String parameter expected\n", context->SourceFile, context->SourceLine);
return;
}
ParseXlatLump(token.string, pParser, context);
}
else
{
XlatParse(pParser, tokentype, token, context);
}
}
delete [] lumpdata;
context->SourceLine = SavedSourceLine;
context->SourceFile = SavedSourceFile;
}
//========================================================================== //==========================================================================
// //
@ -476,10 +169,10 @@ void P_LoadTranslator(const char *lumpname)
void *pParser = XlatParseAlloc(malloc); void *pParser = XlatParseAlloc(malloc);
XlatParseContext context; XlatParseContext context(pParser, XlatParse, TokenTrans);
ParseXlatLump(lumpname, pParser, &context); context.ParseLump(lumpname);
XlatToken tok; FParseToken tok;
tok.val=0; tok.val=0;
XlatParse(pParser, 0, tok, &context); XlatParse(pParser, 0, tok, &context);
XlatParseFree(pParser, free); XlatParseFree(pParser, free);

View file

@ -1,8 +1,9 @@
%token_type {XlatToken} %token_prefix XLAT_
%token_type {FParseToken}
%token_destructor {} // just to avoid a compiler warning %token_destructor {} // just to avoid a compiler warning
%name XlatParse %name XlatParse
%extra_argument { XlatParseContext *context } %extra_argument { FParseContext *context }
%syntax_error { context->PrintError("syntax error");} %syntax_error { context->PrintError("syntax error");}

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="8.00" Version="8,00"
Name="zdoom" Name="zdoom"
ProjectGUID="{8049475B-5C87-46F9-9358-635218A4EF18}" ProjectGUID="{8049475B-5C87-46F9-9358-635218A4EF18}"
RootNamespace=" zdoom" RootNamespace=" zdoom"
@ -135,6 +135,112 @@
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
Description="Checking svnrevision.h..."
CommandLine="$(OutDir)\updaterevision.exe src src/svnrevision.h"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName=".\Debug/zdoom.tlb"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="src\win32;src\sound;src;zlib;src\g_shared;src\g_doom;src\g_raven;src\g_heretic;src\g_hexen;src\g_strife;jpeg-6b;snes_spc\snes_spc"
PreprocessorDefinitions="WIN32,_DEBUG,_WIN32,_WINDOWS,USEASM,_CRTDBG_MAP_ALLOC,HAVE_STRUPR,HAVE_FILELENGTH"
MinimalRebuild="true"
RuntimeLibrary="1"
EnableFunctionLevelLinking="true"
ForceConformanceInForLoopScope="true"
PrecompiledHeaderFile=""
AssemblerOutput="4"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
CompileAs="0"
DisableSpecificWarnings="4996"
ForcedIncludeFiles=""
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="gdi32.lib user32.lib comctl32.lib shell32.lib advapi32.lib comdlg32.lib ole32.lib dxguid.lib dsound.lib dinput8.lib strmiids.lib wsock32.lib winmm.lib fmodex_vc.lib setupapi.lib ws2_32.lib"
OutputFile="../zdoomd.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
IgnoreDefaultLibraryNames="libcmt;msvcrtd;msvcrt"
GenerateDebugInformation="true"
ProgramDatabaseFile=".\Debug/zdoomd.pdb"
SubSystem="2"
StackReserveSize="0"
TerminalServerAware="2"
SetChecksum="false"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration <Configuration
Name="Release|x64" Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)" OutputDirectory="$(PlatformName)\$(ConfigurationName)"
@ -249,112 +355,6 @@
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
Description="Checking svnrevision.h..."
CommandLine="$(OutDir)\updaterevision.exe src src/svnrevision.h"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="true"
SuppressStartupBanner="true"
TargetEnvironment="1"
TypeLibraryName=".\Debug/zdoom.tlb"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="src\win32;src\sound;src;zlib;src\g_shared;src\g_doom;src\g_raven;src\g_heretic;src\g_hexen;src\g_strife;jpeg-6b;snes_spc\snes_spc"
PreprocessorDefinitions="WIN32,_DEBUG,_WIN32,_WINDOWS,USEASM,_CRTDBG_MAP_ALLOC,HAVE_STRUPR,HAVE_FILELENGTH"
MinimalRebuild="true"
RuntimeLibrary="1"
EnableFunctionLevelLinking="true"
ForceConformanceInForLoopScope="true"
PrecompiledHeaderFile=""
AssemblerOutput="4"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="true"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
CompileAs="0"
DisableSpecificWarnings="4996"
ForcedIncludeFiles=""
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
AdditionalDependencies="gdi32.lib user32.lib comctl32.lib shell32.lib advapi32.lib comdlg32.lib ole32.lib dxguid.lib dsound.lib dinput8.lib strmiids.lib wsock32.lib winmm.lib fmodex_vc.lib setupapi.lib ws2_32.lib"
OutputFile="../zdoomd.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories=""
IgnoreDefaultLibraryNames="libcmt;msvcrtd;msvcrt"
GenerateDebugInformation="true"
ProgramDatabaseFile=".\Debug/zdoomd.pdb"
SubSystem="2"
StackReserveSize="0"
TerminalServerAware="2"
SetChecksum="false"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration <Configuration
Name="Debug|x64" Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)" OutputDirectory="$(PlatformName)\$(ConfigurationName)"
@ -875,6 +875,10 @@
RelativePath=".\src\p_xlat.cpp" RelativePath=".\src\p_xlat.cpp"
> >
</File> </File>
<File
RelativePath=".\src\parsecontext.cpp"
>
</File>
<File <File
RelativePath=".\src\po_man.cpp" RelativePath=".\src\po_man.cpp"
> >
@ -920,16 +924,6 @@
Outputs="&quot;src/$(InputName).h&quot;" Outputs="&quot;src/$(InputName).h&quot;"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Creating $(InputName).h from src/$(InputFileName)"
CommandLine="tools\re2c\re2c -s -o &quot;src/$(InputName).h&quot; &quot;src/$(InputFileName)&quot;&#x0D;&#x0A;"
Outputs="&quot;src/$(InputName).h&quot;"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Debug|Win32"
> >
@ -940,6 +934,16 @@
Outputs="&quot;src/$(InputName).h&quot;" Outputs="&quot;src/$(InputName).h&quot;"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Creating $(InputName).h from src/$(InputFileName)"
CommandLine="tools\re2c\re2c -s -o &quot;src/$(InputName).h&quot; &quot;src/$(InputFileName)&quot;&#x0D;&#x0A;"
Outputs="&quot;src/$(InputName).h&quot;"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Debug|x64"
> >
@ -1404,6 +1408,10 @@
RelativePath=".\src\p_trace.h" RelativePath=".\src\p_trace.h"
> >
</File> </File>
<File
RelativePath=".\src\parsecontext.h"
>
</File>
<File <File
RelativePath=".\src\s_playlist.h" RelativePath=".\src\s_playlist.h"
> >
@ -1530,16 +1538,6 @@
Outputs="$(IntDir)\$(InputName).obj" Outputs="$(IntDir)\$(InputName).obj"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -o $(IntDir)\$(InputName).obj -f win32 $(InputPath)&#x0D;&#x0A;"
Outputs="$(IntDir)/$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Debug|Win32"
> >
@ -1550,6 +1548,16 @@
Outputs="$(IntDir)\$(InputName).obj" Outputs="$(IntDir)\$(InputName).obj"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -o $(IntDir)\$(InputName).obj -f win32 $(InputPath)&#x0D;&#x0A;"
Outputs="$(IntDir)/$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Debug|x64"
> >
@ -1574,16 +1582,6 @@
Outputs="$(IntDir)\$(InputName).obj" Outputs="$(IntDir)\$(InputName).obj"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -o $(IntDir)\$(InputName).obj -f win32 $(InputPath)&#x0D;&#x0A;"
Outputs="$(IntDir)/$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Debug|Win32"
> >
@ -1594,6 +1592,16 @@
Outputs="$(IntDir)\$(InputName).obj" Outputs="$(IntDir)\$(InputName).obj"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -o $(IntDir)\$(InputName).obj -f win32 $(InputPath)&#x0D;&#x0A;"
Outputs="$(IntDir)/$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Debug|x64"
> >
@ -1618,16 +1626,6 @@
Outputs="$(IntDir)\$(InputName).obj" Outputs="$(IntDir)\$(InputName).obj"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -o $(IntDir)\$(InputName).obj -f win32 $(InputPath)&#x0D;&#x0A;"
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Debug|Win32"
> >
@ -1638,6 +1636,16 @@
Outputs="$(IntDir)\$(InputName).obj" Outputs="$(IntDir)\$(InputName).obj"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -o $(IntDir)\$(InputName).obj -f win32 $(InputPath)&#x0D;&#x0A;"
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Debug|x64"
> >
@ -1662,16 +1670,6 @@
Outputs="$(IntDir)\$(InputName).obj" Outputs="$(IntDir)\$(InputName).obj"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -o $(IntDir)\$(InputName).obj -f win32 $(InputPath)&#x0D;&#x0A;"
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Debug|Win32"
> >
@ -1682,6 +1680,16 @@
Outputs="$(IntDir)\$(InputName).obj" Outputs="$(IntDir)\$(InputName).obj"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -o $(IntDir)\$(InputName).obj -f win32 $(InputPath)&#x0D;&#x0A;"
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Debug|x64"
> >
@ -1706,16 +1714,6 @@
Outputs="$(IntDir)\$(InputName).obj" Outputs="$(IntDir)\$(InputName).obj"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -o $(IntDir)\$(InputName).obj -f win32 $(InputPath)&#x0D;&#x0A;"
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Debug|Win32"
> >
@ -1726,6 +1724,16 @@
Outputs="$(IntDir)\$(InputName).obj" Outputs="$(IntDir)\$(InputName).obj"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCustomBuildTool"
Description="Assembling $(InputPath)..."
CommandLine="nasm -o $(IntDir)\$(InputName).obj -f win32 $(InputPath)&#x0D;&#x0A;"
Outputs="$(IntDir)\$(InputName).obj"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Debug|x64"
> >
@ -1886,14 +1894,6 @@
Outputs="$(IntDir)\$(InputName).obj" Outputs="$(IntDir)\$(InputName).obj"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Debug|Win32"
> >
@ -1904,6 +1904,14 @@
Outputs="$(IntDir)\$(InputName).obj" Outputs="$(IntDir)\$(InputName).obj"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Debug|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
@ -2753,14 +2761,6 @@
AdditionalIncludeDirectories="src\win32;$(NoInherit)" AdditionalIncludeDirectories="src\win32;$(NoInherit)"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCResourceCompilerTool"
AdditionalIncludeDirectories="src\win32;$(NoInherit)"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Debug|Win32"
> >
@ -2770,6 +2770,14 @@
AdditionalIncludeDirectories="src\win32;$(NoInherit)" AdditionalIncludeDirectories="src\win32;$(NoInherit)"
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCResourceCompilerTool"
AdditionalIncludeDirectories="src\win32;$(NoInherit)"
/>
</FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Debug|x64"
> >
@ -2928,7 +2936,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|x64" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -2936,7 +2944,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Release|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -2964,7 +2972,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|x64" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -2972,7 +2980,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Release|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3001,7 +3009,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|x64" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3010,7 +3018,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Release|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3040,7 +3048,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|x64" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3048,7 +3056,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Release|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3077,7 +3085,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|x64" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3086,7 +3094,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Release|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3117,7 +3125,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|x64" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3126,7 +3134,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Release|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3156,7 +3164,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|x64" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3164,7 +3172,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Release|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3193,7 +3201,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|x64" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3202,7 +3210,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Release|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3233,7 +3241,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|x64" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3242,7 +3250,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Release|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3273,7 +3281,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|x64" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3282,7 +3290,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Release|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3312,7 +3320,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|x64" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3320,7 +3328,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Release|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3348,7 +3356,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|x64" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3356,7 +3364,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Release|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3384,7 +3392,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|x64" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3392,7 +3400,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Release|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3420,7 +3428,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|x64" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3428,7 +3436,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Release|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3458,7 +3466,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|x64" Name="Debug|Win32"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool
@ -3468,7 +3476,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|Win32" Name="Release|x64"
ExcludedFromBuild="true" ExcludedFromBuild="true"
> >
<Tool <Tool