Replaced MetaStyle project with codegen_style/numbers in MSVC.

This commit is contained in:
John Preston 2016-04-19 01:00:54 +03:00
parent 4fe70c3a12
commit 6859109503
12 changed files with 184 additions and 74 deletions

View File

@ -5,15 +5,12 @@ VisualStudioVersion = 14.0.24720.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Telegram", "Telegram\Telegram.vcxproj", "{B12702AD-ABFB-343A-A199-8E24837244A3}"
ProjectSection(ProjectDependencies) = postProject
{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0} = {6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}
{E4DF8176-4DEF-4859-962F-B497E3E7A323} = {E4DF8176-4DEF-4859-962F-B497E3E7A323}
{E417CAA4-259B-4C99-88E3-805F1300E8EB} = {E417CAA4-259B-4C99-88E3-805F1300E8EB}
{EB7D16AC-EACF-4577-B05A-F28E5F356794} = {EB7D16AC-EACF-4577-B05A-F28E5F356794}
{7C25BFBD-7930-4DE2-AF33-27CE1CC521E6} = {7C25BFBD-7930-4DE2-AF33-27CE1CC521E6}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MetaStyle", "Telegram\MetaStyle.vcxproj", "{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MetaEmoji", "Telegram\MetaEmoji.vcxproj", "{EB7D16AC-EACF-4577-B05A-F28E5F356794}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Updater", "Telegram\Updater.vcxproj", "{6B4BA3BE-7B15-4B4C-B200-81ABFDEF2C76}"
@ -48,15 +45,6 @@ Global
{B12702AD-ABFB-343A-A199-8E24837244A3}.Release|Win32.ActiveCfg = Release|Win32
{B12702AD-ABFB-343A-A199-8E24837244A3}.Release|Win32.Build.0 = Release|Win32
{B12702AD-ABFB-343A-A199-8E24837244A3}.Release|x64.ActiveCfg = Release|Win32
{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Debug|Win32.ActiveCfg = Debug|Win32
{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Debug|Win32.Build.0 = Debug|Win32
{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Debug|x64.ActiveCfg = Debug|Win32
{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Deploy|Win32.ActiveCfg = Deploy|Win32
{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Deploy|Win32.Build.0 = Deploy|Win32
{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Deploy|x64.ActiveCfg = Release|Win32
{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Release|Win32.ActiveCfg = Release|Win32
{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Release|Win32.Build.0 = Release|Win32
{6F483617-7C84-4E7E-91D8-1FF28A4CE3A0}.Release|x64.ActiveCfg = Release|Win32
{EB7D16AC-EACF-4577-B05A-F28E5F356794}.Debug|Win32.ActiveCfg = Debug|Win32
{EB7D16AC-EACF-4577-B05A-F28E5F356794}.Debug|x64.ActiveCfg = Debug|Win32
{EB7D16AC-EACF-4577-B05A-F28E5F356794}.Deploy|Win32.ActiveCfg = Deploy|Win32

View File

@ -57,6 +57,9 @@ Token invalidToken() {
BasicTokenizedFile::BasicTokenizedFile(const QString &filepath) : reader_(filepath) {
}
BasicTokenizedFile::BasicTokenizedFile(const QByteArray &content, const QString &filepath) : reader_(content, filepath) {
}
bool BasicTokenizedFile::putBack() {
if (currentToken_ > 0) {
--currentToken_;

View File

@ -37,6 +37,7 @@ class LogStream;
class BasicTokenizedFile {
public:
explicit BasicTokenizedFile(const QString &filepath);
explicit BasicTokenizedFile(const QByteArray &content, const QString &filepath = QString());
BasicTokenizedFile(const BasicTokenizedFile &other) = delete;
BasicTokenizedFile &operator=(const BasicTokenizedFile &other) = delete;

View File

@ -55,13 +55,22 @@ bool readFile(const QString &filepath, QByteArray *outResult) {
} // namespace
CleanFile::CleanFile(const QString &filepath) : filepath_(filepath) {
CleanFile::CleanFile(const QString &filepath)
: filepath_(filepath)
, read_(true) {
}
CleanFile::CleanFile(const QByteArray &content, const QString &filepath)
: filepath_(filepath)
, content_(content)
, read_(false) {
}
bool CleanFile::read() {
QByteArray content;
if (!readFile(filepath_, &content)) {
return false;
if (read_) {
if (!readFile(filepath_, &content_)) {
return false;
}
}
filepath_ = QFileInfo(filepath_).absoluteFilePath();
@ -73,19 +82,19 @@ bool CleanFile::read() {
auto insideComment = InsideComment::None;
bool insideString = false;
const char *begin = content.cbegin(), *end = content.cend(), *offset = begin;
const char *begin = content_.cbegin(), *end = content_.cend(), *offset = begin;
auto feedContent = [this, &offset, end](const char *ch) {
if (ch > offset) {
if (content_.isEmpty()) content_.reserve(end - offset - 2);
content_.append(offset, ch - offset);
if (result_.isEmpty()) result_.reserve(end - offset - 2);
result_.append(offset, ch - offset);
offset = ch;
}
};
auto feedComment = [this, &offset, end](const char *ch) {
if (ch > offset) {
// comments_.push_back({ content_.size(), QByteArray(offset, ch - offset) });
if (content_.isEmpty()) content_.reserve(end - offset - 2);
content_.append(' ');
if (result_.isEmpty()) result_.reserve(end - offset - 2);
result_.append(' ');
offset = ch;
}
};
@ -142,10 +151,10 @@ bool CleanFile::read() {
return false;
}
if (insideComment == InsideComment::None && end > offset) {
if (content_.isEmpty()) {
content_ = content;
if (result_.isEmpty()) {
result_ = content_;
} else {
content_.append(offset, end - offset);
result_.append(offset, end - offset);
}
}
return true;

View File

@ -33,16 +33,17 @@ namespace common {
class CleanFile {
public:
explicit CleanFile(const QString &filepath);
explicit CleanFile(const QByteArray &content, const QString &filepath = QString());
CleanFile(const CleanFile &other) = delete;
CleanFile &operator=(const CleanFile &other) = delete;
bool read();
const char *data() const {
return content_.constData();
return result_.constData();
}
const char *end() const {
return content_.constEnd();
return result_.constEnd();
}
static constexpr int MaxSize = 10 * 1024 * 1024;
@ -52,8 +53,8 @@ public:
private:
QString filepath_;
QByteArray content_;
QByteArray content_, result_;
bool read_;
//struct Comment {
// int offset;
// QByteArray content;

View File

@ -30,7 +30,9 @@ namespace common {
// Wrapper allows you to read forward the CleanFile without overflow checks.
class CleanFileReader {
public:
CleanFileReader(const QString &filepath) : file_(filepath) {
explicit CleanFileReader(const QString &filepath) : file_(filepath) {
}
explicit CleanFileReader(const QByteArray &content, const QString &filepath = QString()) : file_(content, filepath) {
}
bool read() {
@ -57,6 +59,9 @@ public:
const char *currentPtr() const {
return pos_;
}
int charsLeft() const {
return (end_ - pos_);
}
// Log error to std::cerr with 'code' at line number 'line' in data().
LogStream logError(int code, int line) const {

View File

@ -47,6 +47,62 @@ bool Generator::writeHeader() {
bool Generator::writeSource() {
source_ = std::make_unique<common::CppFile>(basePath_ + ".cpp", project_);
source_->stream() << "\
QVector<int> phoneNumberParse(const QString &number) {\n\
QVector<int> result;\n\
\n\
int32 len = number.size();\n\
if (len > 0) switch (number.at(0).unicode()) {\n";
QString already;
for (auto i = rules_.data.cend(), e = rules_.data.cbegin(); i != e;) {
--i;
QString k = i.key();
bool onlyLastChanged = true;
while (!already.isEmpty() && (already.size() > k.size() || !already.endsWith(k.at(already.size() - 1)))) {
if (!onlyLastChanged) {
source_->stream() << QString("\t").repeated(1 + already.size()) << "}\n";
source_->stream() << QString("\t").repeated(already.size()) << "break;\n";
}
already = already.mid(0, already.size() - 1);
onlyLastChanged = false;
}
if (already == k) {
source_->stream() << QString("\t").repeated(1 + already.size()) << "}\n";
} else {
bool onlyFirstCheck = true;
while (already.size() < k.size()) {
if (!onlyFirstCheck) source_->stream() << QString("\t").repeated(1 + already.size()) << "if (len > " << already.size() << ") switch (number.at(" << already.size() << ").unicode()) {\n";
source_->stream() << QString("\t").repeated(1 + already.size()) << "case '" << k.at(already.size()).toLatin1() << "':\n";
already.push_back(k.at(already.size()));
onlyFirstCheck = false;
}
}
if (i.value().isEmpty()) {
source_->stream() << QString("\t").repeated(1 + already.size()) << "return QVector<int>(1, " << k.size() << ");\n";
} else {
source_->stream() << QString("\t").repeated(1 + already.size()) << "result.reserve(" << (i.value().size() + 1) << ");\n";
source_->stream() << QString("\t").repeated(1 + already.size()) << "result.push_back(" << k.size() << ");\n";
for (int j = 0, l = i.value().size(); j < l; ++j) {
source_->stream() << QString("\t").repeated(1 + already.size()) << "result.push_back(" << i.value().at(j) << ");\n";
}
source_->stream() << QString("\t").repeated(1 + already.size()) << "return result;\n";
}
}
bool onlyLastChanged = true;
while (!already.isEmpty()) {
if (!onlyLastChanged) {
source_->stream() << QString("\t").repeated(1 + already.size()) << "}\n";
}
already = already.mid(0, already.size() - 1);
onlyLastChanged = false;
}
source_->stream() << "\
}\n\
\n\
return result;\n\
}\n";
return source_->finalize();
}

View File

@ -26,6 +26,8 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
#include <QtCore/QRegularExpression>
#include "codegen/common/basic_tokenized_file.h"
#include "codegen/common/logging.h"
#include "codegen/common/clean_file_reader.h"
#include "codegen/common/checked_utf8_string.h"
using BasicToken = codegen::common::BasicTokenizedFile::Token;
using BasicType = BasicToken::Type;
@ -34,21 +36,98 @@ namespace codegen {
namespace numbers {
namespace {
QByteArray replaceStrings(const QString &filepath) {
common::CleanFileReader reader(filepath);
if (!reader.read()) {
return QByteArray();
}
common::CheckedUtf8String string(reader.currentPtr(), reader.charsLeft());
if (!string.isValid()) {
return QByteArray();
}
QStringList lines = string.toString().split('\n');
for (auto &line : lines) {
auto match = QRegularExpression("^(\\d+;[A-Z]+;)([^;]+)(;.+)?$").match(line);
if (match.hasMatch()) {
line = match.captured(1) + '"' + match.captured(2) + '"' + match.captured(3);
}
}
return lines.join('\n').toUtf8();
}
} // namespace
ParsedFile::ParsedFile(const Options &options)
: file_(options.inputPath)
: content_(replaceStrings(options.inputPath))
, file_(content_, options.inputPath)
, options_(options) {
}
bool ParsedFile::read() {
if (!file_.read()) {
if (content_.isEmpty() || !file_.read()) {
return false;
}
auto filepath = QFileInfo(options_.inputPath).absoluteFilePath();
do {
if (auto startToken = file_.getToken(BasicType::Name)) {
if (auto code = file_.getToken(BasicType::Int)) {
if (!file_.getToken(BasicType::Semicolon)) {
logErrorUnexpectedToken() << "';'";
return false;
}
if (!file_.getToken(BasicType::Name)) {
logErrorUnexpectedToken() << "country code";
return false;
}
if (!file_.getToken(BasicType::Semicolon)) {
logErrorUnexpectedToken() << "';'";
return false;
}
if (!file_.getToken(BasicType::String)) {
logErrorUnexpectedToken() << "country name";
return false;
}
if (file_.getToken(BasicType::Semicolon)) {
if (auto firstPart = file_.getToken(BasicType::Int)) {
if (firstPart.original.toByteArray() != code.original.toByteArray()) {
file_.putBack();
result_.data.insert(code.original.toStringUnchecked(), Rule());
continue;
}
Rule rule;
while (auto part = file_.getToken(BasicType::Name)) {
rule.push_back(part.original.size());
}
result_.data.insert(code.original.toStringUnchecked(), rule);
if (rule.isEmpty()) {
logErrorUnexpectedToken() << "bad phone pattern";
return false;
}
if (!file_.getToken(BasicType::Semicolon)) {
logErrorUnexpectedToken() << "';'";
return false;
}
if (!file_.getToken(BasicType::Int)) {
logErrorUnexpectedToken() << "country phone len";
return false;
}
file_.getToken(BasicType::Semicolon);
continue;
} else {
logErrorUnexpectedToken() << "country phone pattern";
return false;
}
} else if (file_.getToken(BasicType::Int)) {
file_.putBack();
result_.data.insert(code.original.toStringUnchecked(), Rule());
continue;
} else {
logErrorUnexpectedToken() << "country phone pattern";
return false;
}
}
if (file_.atEnd()) {
break;

View File

@ -28,10 +28,9 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
namespace codegen {
namespace numbers {
struct Rule {
};
using Rule = QVector<int>;
struct Rules {
QVector<Rule> data;
QMap<QString, Rule> data;
};
// Parses an input file to the internal struct.
@ -63,6 +62,7 @@ private:
return file_.logErrorUnexpectedToken();
}
QByteArray content_;
common::BasicTokenizedFile file_;
Options options_;
bool failed_ = false;

View File

@ -1053,11 +1053,6 @@
</ClCompile>
<ClCompile Include="GeneratedFiles\styles\style_basic.cpp" />
<ClCompile Include="GeneratedFiles\styles\style_basic_types.cpp" />
<ClCompile Include="GeneratedFiles\style_auto.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="SourceFiles\apiwrap.cpp" />
<ClCompile Include="SourceFiles\app.cpp" />
<ClCompile Include="SourceFiles\application.cpp" />
@ -1251,6 +1246,7 @@
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/core/basic_types.h" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui"</Command>
</CustomBuild>
<ClInclude Include="GeneratedFiles\numbers.h" />
<ClInclude Include="GeneratedFiles\styles\style_basic.h" />
<ClInclude Include="GeneratedFiles\styles\style_basic_types.h" />
<ClInclude Include="SourceFiles\core\click_handler.h" />
@ -1583,18 +1579,10 @@
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
</CustomBuild>
<CustomBuild Include="Resources\style_classes.txt">
<Outputs>.\GeneratedFiles\style_classes.h</Outputs>
<Command>"$(SolutionDir)$(Platform)\$(Configuration)Style\MetaStyle.exe" -classes_in ".\Resources\style_classes.txt" -classes_out ".\GeneratedFiles\style_classes.h" -styles_in ".\Resources\style.txt" -styles_out ".\GeneratedFiles\style_auto.h" -path_to_sprites ".\Resources\art\\"</Command>
</CustomBuild>
<CustomBuild Include="Resources\style.txt">
<Outputs>.\GeneratedFiles\style_auto.h</Outputs>
<Outputs>.\GeneratedFiles\style_auto.cpp</Outputs>
<Command>"$(SolutionDir)$(Platform)\$(Configuration)Style\MetaStyle.exe" -classes_in ".\Resources\style_classes.txt" -classes_out ".\GeneratedFiles\style_classes.h" -styles_in ".\Resources\style.txt" -styles_out ".\GeneratedFiles\style_auto.h" -path_to_sprites ".\Resources\art\\"</Command>
</CustomBuild>
<CustomBuild Include="Resources\numbers.txt">
<Outputs>.\GeneratedFiles\numbers.h</Outputs>
<Outputs>.\GeneratedFiles\numbers.cpp</Outputs>
<Command>"$(SolutionDir)$(Platform)\$(Configuration)Style\MetaStyle.exe" -classes_in ".\Resources\style_classes.txt" -classes_out ".\GeneratedFiles\style_classes.h" -styles_in ".\Resources\style.txt" -styles_out ".\GeneratedFiles\style_auto.h" -path_to_sprites ".\Resources\art\\"</Command>
<Command>"$(SolutionDir)$(Platform)\codegen\$(Configuration)\codegen_numbers.exe" "-o.\GeneratedFiles" ".\Resources\numbers.txt"</Command>
</CustomBuild>
<CustomBuild Include="Resources\lang.strings">
<Outputs>.\GeneratedFiles\lang_auto.h</Outputs>
@ -1616,16 +1604,6 @@
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
</CustomBuild>
<ClInclude Include="GeneratedFiles\lang_auto.h" />
<ClInclude Include="GeneratedFiles\style_auto.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClInclude>
<ClInclude Include="GeneratedFiles\style_classes.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClInclude>
<ClInclude Include="resource.h" />
<CustomBuild Include="SourceFiles\apiwrap.h">
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
@ -2229,7 +2207,6 @@
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\openssl\Release\include" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\..\..\Libraries\breakpad\src" "-I.\ThirdParty\minizip" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\..\..\Libraries\QtStatic\qtbase\include\QtCore\5.5.1\QtCore" "-I.\..\..\Libraries\QtStatic\qtbase\include\QtGui\5.5.1\QtGui" "-fstdafx.h" "-f../../SourceFiles/playerwidget.h"</Command>
</CustomBuild>
<ClInclude Include="SourceFiles\numbers.h" />
<ClInclude Include="SourceFiles\pspecific.h" />
<CustomBuild Include="SourceFiles\pspecific_linux.h">
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Deploy|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>

View File

@ -111,9 +111,6 @@
<ClCompile Include="SourceFiles\mainwidget.cpp">
<Filter>SourceFiles</Filter>
</ClCompile>
<ClCompile Include="GeneratedFiles\style_auto.cpp">
<Filter>GeneratedFiles</Filter>
</ClCompile>
<ClCompile Include="SourceFiles\app.cpp">
<Filter>SourceFiles</Filter>
</ClCompile>
@ -1094,12 +1091,6 @@
<ClInclude Include="SourceFiles\logs.h">
<Filter>SourceFiles</Filter>
</ClInclude>
<ClInclude Include="GeneratedFiles\style_auto.h">
<Filter>GeneratedFiles</Filter>
</ClInclude>
<ClInclude Include="GeneratedFiles\style_classes.h">
<Filter>GeneratedFiles</Filter>
</ClInclude>
<ClInclude Include="SourceFiles\countries.h">
<Filter>SourceFiles</Filter>
</ClInclude>
@ -1127,9 +1118,6 @@
<ClInclude Include="SourceFiles\pspecific_mac_p.h">
<Filter>SourceFiles</Filter>
</ClInclude>
<ClInclude Include="SourceFiles\numbers.h">
<Filter>SourceFiles</Filter>
</ClInclude>
<ClInclude Include="SourceFiles\config.h">
<Filter>Version</Filter>
</ClInclude>
@ -1250,6 +1238,9 @@
<ClInclude Include="GeneratedFiles\styles\style_basic_types.h">
<Filter>GeneratedFiles\styles</Filter>
</ClInclude>
<ClInclude Include="GeneratedFiles\numbers.h">
<Filter>GeneratedFiles</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="SourceFiles\application.h">

View File

@ -100,7 +100,7 @@
<ClCompile>
<PreprocessorDefinitions>UNICODE;WIN32;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat />
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);.\..\..\..\SourceFiles;$(QTDIR)\include\QtCore;.\..\%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<WarningLevel>Level4</WarningLevel>