| LLOOP Index | GSP Language | GSP Library | Framework Classes | Component Classes |
This is the verbatim text of the file "OptionsData.cpp" part of the LLOOP package. The copyright remains with Michel MEHL. All rights reserved.
#include "OptionsData.h"
OptionsData::OptionsData() :
m_bExplicitProjectNameGiven(false),
m_bTemplateFromFile(false),
m_bIgnoreCase(false),
m_bUseOldStream(false),
m_bSilentBuild(false),
m_bGenerateTclOptionsControlPanel(false),
m_sHOutputDir("."),
m_sCPPOutputDir("."),
m_sTCLOutputDir("."),
m_sObjOutputDir("."),
m_sOriginalHOutputDir("."),
m_sOriginalCPPOutputDir("."),
m_sOriginalObjOutputDir("."),
m_sTemplateDir(".")
{
m_bMakeExe = false;
m_bMakeLib = false;
m_saImportPaths.push_back(".");
}
OptionsData::~OptionsData()
{
}
void OptionsData::completeWith(OptionsData& options)
{
int i = 0;
/* GSP OPTIONS */
// NOTE: Specified import path must preceed default ones !
mergeStringList(options.m_saGspFileNames, m_saGspFileNames);
mergeStringList(options.m_saImportPaths, m_saImportPaths);
mergeString(options.m_sAuthor, m_sAuthor);
mergeString(options.m_sLicenseFile, m_sLicenseFile);
m_bIgnoreCase = (m_bIgnoreCase || options.m_bIgnoreCase);
/* C++ OPTION SET */
m_bMakeExe = (m_bMakeExe || options.m_bMakeExe);
m_bMakeLib = (m_bMakeLib || options.m_bMakeLib);
mergeString(options.m_sPlatform, m_sPlatform);
// If no platform defined, take the current one by default
if (m_sPlatform.empty())
{
#ifdef WIN32
m_sPlatform = "windows";
#else
m_sPlatform = "unix";
#endif
}
if (m_sHOutputDir == "." && options.m_sHOutputDir != ".")
m_sHOutputDir = options.m_sHOutputDir;
if (m_sCPPOutputDir == "." && options.m_sCPPOutputDir != ".")
m_sCPPOutputDir = options.m_sCPPOutputDir;
if (m_sObjOutputDir == "." && options.m_sObjOutputDir != ".")
m_sObjOutputDir = options.m_sObjOutputDir;
if (m_sOriginalHOutputDir == "." && options.m_sOriginalHOutputDir != ".")
m_sOriginalHOutputDir = options.m_sOriginalHOutputDir;
if (m_sOriginalCPPOutputDir == "." && options.m_sOriginalCPPOutputDir != ".")
m_sOriginalCPPOutputDir = options.m_sOriginalCPPOutputDir;
if (m_sOriginalObjOutputDir == "." && options.m_sOriginalObjOutputDir != ".")
m_sOriginalObjOutputDir = options.m_sOriginalObjOutputDir;
m_bUseOldStream = (m_bUseOldStream || options.m_bUseOldStream);
if (! m_bExplicitProjectNameGiven)
{
m_bExplicitProjectNameGiven = options.m_bExplicitProjectNameGiven;
m_sProject = options.m_sProject;
}
m_bTemplateFromFile = (m_bTemplateFromFile || options.m_bTemplateFromFile);
if (m_sTemplateDir == "." && options.m_sTemplateDir != ".")
m_sTemplateDir = options.m_sTemplateDir;
/* TCL OPTION SET */
m_bGenerateTclOptionsControlPanel = ( m_bGenerateTclOptionsControlPanel || options.m_bGenerateTclOptionsControlPanel);
if (m_sTCLOutputDir == "." && options.m_sTCLOutputDir != ".")
m_sTCLOutputDir = options.m_sTCLOutputDir;
/* MAKEFILE OPTION SET */
mergeString(options.m_sBuildCfg, m_sBuildCfg);
// If no build config defined, use "debug" by default
if (m_sBuildCfg.empty())
m_sBuildCfg = "debug";
m_bSilentBuild = (m_bSilentBuild || options.m_bSilentBuild);
mergeStringList(options.m_saAddIncPaths, m_saAddIncPaths);
mergeStringList(options.m_saAddLibPaths, m_saAddLibPaths);
mergeStringList(options.m_saAddLibs, m_saAddLibs);
mergeStringList(options.m_saAddDefs, m_saAddDefs);
mergeStringList(options.m_saAddCCFlags, m_saAddCCFlags);
mergeStringList(options.m_saAddSources, m_saAddSources);
mergeString(options.m_sTargetDir, m_sTargetDir);
mergeString(options.m_sTestCmd, m_sTestCmd);
}
void OptionsData::mergeStringList(const universal::StringList& c_slIn, universal::StringList& slOut)
{
for (unsigned long i = 0; i < c_slIn.size(); i++)
{
const universal::String& c_s = c_slIn[i];
if (!c_s.matchesPattern(slOut)) slOut.push_back(c_s);
}
}
void OptionsData::mergeString(const universal::String& c_sIn, universal::String& sOut)
{
if (sOut.empty())
{
sOut = c_sIn;
}
}
This file is part of the LLOOP Reversible Object-Oriented Parser Generator. Copyright (c) 2005-2006 Michel MEHL, France. All rights reserved. LLOOP is distributed by the company ERSA SaRL.
| Copyright (c) 2005-2006 Michel MEHL, Haguenau, France |
| LLOOP version 1.1 |