ENH: Separate VS flag table type

Move the cmVS7FlagTable type out of the VS generators and rename it to
cmIDEFlagTable.  It will be useful for other generators.
This commit is contained in:
Brad King 2009-07-29 11:28:55 -04:00
parent 819b0742c6
commit e339f3133f
8 changed files with 56 additions and 31 deletions

View File

@ -295,6 +295,7 @@ IF (WIN32)
cmGlobalVisualStudioGenerator.cxx cmGlobalVisualStudioGenerator.cxx
cmGlobalVisualStudioGenerator.h cmGlobalVisualStudioGenerator.h
cmGlobalWatcomWMakeGenerator.cxx cmGlobalWatcomWMakeGenerator.cxx
cmIDEFlagTable.h
cmLocalVisualStudio6Generator.cxx cmLocalVisualStudio6Generator.cxx
cmLocalVisualStudio6Generator.h cmLocalVisualStudio6Generator.h
cmLocalVisualStudio7Generator.cxx cmLocalVisualStudio7Generator.cxx

View File

@ -716,7 +716,7 @@ static cmVS7FlagTable cmVS7ExtraFlagTable[] =
{0,0,0,0,0} {0,0,0,0,0}
}; };
cmVS7FlagTable const* cmGlobalVisualStudio7Generator::GetExtraFlagTableVS7() cmIDEFlagTable const* cmGlobalVisualStudio7Generator::GetExtraFlagTableVS7()
{ {
return cmVS7ExtraFlagTable; return cmVS7ExtraFlagTable;
} }

View File

@ -20,7 +20,7 @@
#include "cmGlobalVisualStudioGenerator.h" #include "cmGlobalVisualStudioGenerator.h"
class cmTarget; class cmTarget;
struct cmVS7FlagTable; struct cmIDEFlagTable;
/** \class cmGlobalVisualStudio7Generator /** \class cmGlobalVisualStudio7Generator
* \brief Write a Unix makefiles. * \brief Write a Unix makefiles.
@ -103,7 +103,7 @@ public:
}; };
protected: protected:
static cmVS7FlagTable const* GetExtraFlagTableVS7(); static cmIDEFlagTable const* GetExtraFlagTableVS7();
virtual void OutputSLNFile(cmLocalGenerator* root, virtual void OutputSLNFile(cmLocalGenerator* root,
std::vector<cmLocalGenerator*>& generators); std::vector<cmLocalGenerator*>& generators);
virtual void WriteSLNFile(std::ostream& fout, cmLocalGenerator* root, virtual void WriteSLNFile(std::ostream& fout, cmLocalGenerator* root,

View File

@ -348,7 +348,7 @@ static cmVS7FlagTable cmVS8ExtraFlagTable[] =
{0,0,0,0,0} {0,0,0,0,0}
}; };
cmVS7FlagTable const* cmGlobalVisualStudio8Generator::GetExtraFlagTableVS8() cmIDEFlagTable const* cmGlobalVisualStudio8Generator::GetExtraFlagTableVS8()
{ {
return cmVS8ExtraFlagTable; return cmVS8ExtraFlagTable;
} }

View File

@ -67,7 +67,7 @@ protected:
virtual bool VSLinksDependencies() const { return false; } virtual bool VSLinksDependencies() const { return false; }
static cmVS7FlagTable const* GetExtraFlagTableVS8(); static cmIDEFlagTable const* GetExtraFlagTableVS8();
virtual void AddPlatformDefinitions(cmMakefile* mf); virtual void AddPlatformDefinitions(cmMakefile* mf);
virtual void WriteSLNFile(std::ostream& fout, cmLocalGenerator* root, virtual void WriteSLNFile(std::ostream& fout, cmLocalGenerator* root,
std::vector<cmLocalGenerator*>& generators); std::vector<cmLocalGenerator*>& generators);

45
Source/cmIDEFlagTable.h Normal file
View File

@ -0,0 +1,45 @@
/*=========================================================================
Program: CMake - Cross-Platform Makefile Generator
Module: $RCSfile$
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef cmIDEFlagTable_h
#define cmIDEFlagTable_h
// This is a table mapping XML tag IDE names to command line options
struct cmIDEFlagTable
{
const char* IDEName; // name used in the IDE xml file
const char* commandFlag; // command line flag
const char* comment; // comment
const char* value; // string value
unsigned int special; // flags for special handling requests
enum
{
UserValue = (1<<0), // flag contains a user-specified value
UserIgnored = (1<<1), // ignore any user value
UserRequired = (1<<2), // match only when user value is non-empty
Continue = (1<<3), // continue looking for matching entries
SemicolonAppendable = (1<<4), // a flag that if specified multiple times
// should have its value appended to the
// old value with semicolons (e.g.
// /NODEFAULTLIB: =>
// IgnoreDefaultLibraryNames)
UserValueIgnored = UserValue | UserIgnored,
UserValueRequired = UserValue | UserRequired
};
};
#endif

View File

@ -18,7 +18,7 @@
#define cmLocalVisualStudio7Generator_h #define cmLocalVisualStudio7Generator_h
#include "cmLocalVisualStudioGenerator.h" #include "cmLocalVisualStudioGenerator.h"
#include "cmVisualStudioGeneratorOptions.h" // to get cmVS7FlagTable #include "cmVisualStudioGeneratorOptions.h"
class cmTarget; class cmTarget;
class cmSourceFile; class cmSourceFile;

View File

@ -18,33 +18,12 @@
#define cmVisualStudioGeneratorOptions_h #define cmVisualStudioGeneratorOptions_h
#include "cmLocalGenerator.h" #include "cmLocalGenerator.h"
#include "cmIDEFlagTable.h"
typedef cmIDEFlagTable cmVS7FlagTable;
class cmVisualStudio10TargetGenerator; class cmVisualStudio10TargetGenerator;
// This is a table mapping XML tag IDE names to command line options
struct cmVS7FlagTable
{
const char* IDEName; // name used in the IDE xml file
const char* commandFlag; // command line flag
const char* comment; // comment
const char* value; // string value
unsigned int special; // flags for special handling requests
enum
{
UserValue = (1<<0), // flag contains a user-specified value
UserIgnored = (1<<1), // ignore any user value
UserRequired = (1<<2), // match only when user value is non-empty
Continue = (1<<3), // continue looking for matching entries
SemicolonAppendable = (1<<4), // a flag that if specified multiple times
// should have its value appended to the
// old value with semicolons (e.g.
// /NODEFAULTLIB: =>
// IgnoreDefaultLibraryNames)
UserValueIgnored = UserValue | UserIgnored,
UserValueRequired = UserValue | UserRequired
};
};
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
class cmVisualStudioGeneratorOptions class cmVisualStudioGeneratorOptions
{ {