diff options
author | Kyle Edwards <kyle.edwards@kitware.com> | 2019-06-27 20:38:19 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-10-02 13:33:54 (GMT) |
commit | bb4a1410592342a824b1dd755b7ca8897deac65c (patch) | |
tree | 9131b8f3b5e531a9fb5471a0b77e9d0b121f5f00 /Source/CTest/cmCTestProcessesLexerHelper.cxx | |
parent | a1f78a481c8cbda1f0c8503c4d661c3c3ddf00a6 (diff) | |
download | CMake-bb4a1410592342a824b1dd755b7ca8897deac65c.zip CMake-bb4a1410592342a824b1dd755b7ca8897deac65c.tar.gz CMake-bb4a1410592342a824b1dd755b7ca8897deac65c.tar.bz2 |
CTest: Add lexer for PROCESSES property
Diffstat (limited to 'Source/CTest/cmCTestProcessesLexerHelper.cxx')
-rw-r--r-- | Source/CTest/cmCTestProcessesLexerHelper.cxx | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/Source/CTest/cmCTestProcessesLexerHelper.cxx b/Source/CTest/cmCTestProcessesLexerHelper.cxx new file mode 100644 index 0000000..797164b --- /dev/null +++ b/Source/CTest/cmCTestProcessesLexerHelper.cxx @@ -0,0 +1,55 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#include "cmCTestProcessesLexerHelper.h" + +#include "cmCTestProcessesLexer.h" +#include "cmCTestTestHandler.h" + +cmCTestProcessesLexerHelper::cmCTestProcessesLexerHelper( + std::vector<std::vector<cmCTestTestHandler::cmCTestTestResourceRequirement>>& + output) + : Output(output) +{ +} + +bool cmCTestProcessesLexerHelper::ParseString(const std::string& value) +{ + yyscan_t lexer; + cmCTestProcesses_yylex_init_extra(this, &lexer); + + auto state = cmCTestProcesses_yy_scan_string(value.c_str(), lexer); + int retval = cmCTestProcesses_yylex(lexer); + cmCTestProcesses_yy_delete_buffer(state, lexer); + + cmCTestProcesses_yylex_destroy(lexer); + return retval == 0; +} + +void cmCTestProcessesLexerHelper::SetProcessCount(unsigned int count) +{ + this->ProcessCount = count; +} + +void cmCTestProcessesLexerHelper::SetResourceType(const std::string& type) +{ + this->ResourceType = type; +} + +void cmCTestProcessesLexerHelper::SetNeededSlots(int count) +{ + this->NeededSlots = count; +} + +void cmCTestProcessesLexerHelper::WriteRequirement() +{ + this->Process.push_back({ this->ResourceType, this->NeededSlots, 1 }); +} + +void cmCTestProcessesLexerHelper::WriteProcess() +{ + for (unsigned int i = 0; i < this->ProcessCount; ++i) { + this->Output.push_back(this->Process); + } + this->Process.clear(); + this->ProcessCount = 1; +} |