diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 93047bd7..31d9c0d6 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -273,8 +273,6 @@ add_files( utility/messaging/MessageQueue.cpp utility/messaging/MessageQueue.h - utility/scheduling/LambdaTask.cpp - utility/scheduling/LambdaTask.h utility/scheduling/Task.cpp utility/scheduling/Task.h utility/scheduling/TaskGroup.cpp @@ -283,6 +281,8 @@ add_files( utility/scheduling/TaskGroupParallel.h utility/scheduling/TaskGroupSequential.cpp utility/scheduling/TaskGroupSequential.h + utility/scheduling/TaskLambda.cpp + utility/scheduling/TaskLambda.h utility/scheduling/TaskScheduler.cpp utility/scheduling/TaskScheduler.h diff --git a/src/lib/data/SqliteStorage.cpp b/src/lib/data/SqliteStorage.cpp index 0a13acb5..ca2b196b 100644 --- a/src/lib/data/SqliteStorage.cpp +++ b/src/lib/data/SqliteStorage.cpp @@ -284,23 +284,7 @@ bool SqliteStorage::isFile(Id elementId) const StorageEdge SqliteStorage::getEdgeById(Id edgeId) const { - CppSQLite3Query q = m_database.execQuery(( - "SELECT type, source_node_id, target_node_id FROM edge WHERE " - "id == " + std::to_string(edgeId) + ";" - ).c_str()); - - if (!q.eof()) - { - const int type = q.getIntField(0, -1); - const Id sourceId = q.getIntField(1, 0); - const Id targetId = q.getIntField(2, 0); - - if (type != -1 && sourceId != 0 && targetId != 0) - { - return StorageEdge(edgeId, type, sourceId, targetId); - } - } - return StorageEdge(0, -1, 0, 0); + return getFirst("WHERE id == " + std::to_string(edgeId)); } StorageEdge SqliteStorage::getEdgeBySourceTargetType(Id sourceId, Id targetId, int type) const @@ -527,26 +511,17 @@ std::shared_ptr SqliteStorage::getTokenLocationsForFile(const return ret; } - CppSQLite3Query q = m_database.execQuery(( - "SELECT id, element_id, start_line, start_column, end_line, end_column, type FROM source_location WHERE file_node_id == " + std::to_string(fileNodeId) + ";" - ).c_str()); - - while (!q.eof()) + for (StorageSourceLocation& location: getAll("WHERE file_node_id == " + std::to_string(fileNodeId))) { - const Id locationId = q.getIntField(0, 0); - const Id elementId = q.getIntField(1, 0); - const int startLineNumber = q.getIntField(2, -1); - const int startColNumber = q.getIntField(3, -1); - const int endLineNumber = q.getIntField(4, -1); - const int endColNumber = q.getIntField(5, -1); - const int type = q.getIntField(6, -1); - - if (locationId != 0 && elementId != 0 && startLineNumber != -1 && startColNumber != -1 && endLineNumber != -1 && endColNumber != -1 && type != -1) - { - TokenLocation* loc = ret->addTokenLocation(locationId, elementId, startLineNumber, startColNumber, endLineNumber, endColNumber); - loc->setType(intToLocationType(type)); - } - q.nextRow(); + TokenLocation* loc = ret->addTokenLocation( + location.id, + location.elementId, + location.startLine, + location.startCol, + location.endLine, + location.endCol + ); + loc->setType(intToLocationType(location.type)); } return ret; @@ -560,33 +535,7 @@ std::vector SqliteStorage::getTokenLocationsForElementId( std::vector SqliteStorage::getTokenLocationsForElementIds(const std::vector elementIds) const { - std::vector locations; - - CppSQLite3Query q = m_database.execQuery(( - "SELECT id, element_id, file_node_id, start_line, start_column, end_line, end_column, type FROM source_location WHERE element_id IN (" + utility::join(utility::toStrings(elementIds), ',') + ");" - ).c_str()); - - while (!q.eof()) - { - const Id id = q.getIntField(0, 0); - const Id elementId = q.getIntField(1, 0); - const Id fileNodeId = q.getIntField(2, 0); - const int startLineNumber = q.getIntField(3, -1); - const int startColNumber = q.getIntField(4, -1); - const int endLineNumber = q.getIntField(5, -1); - const int endColNumber = q.getIntField(6, -1); - const int type = q.getIntField(7, -1); - - if (id != 0 && elementId != 0 && fileNodeId != 0 && startLineNumber != -1 && startColNumber != -1 && endLineNumber != -1 && endColNumber != -1 && type != -1) - { - locations.push_back(StorageSourceLocation( - id, elementId, fileNodeId, startLineNumber, startColNumber, endLineNumber, endColNumber, type - )); - } - q.nextRow(); - } - - return locations; + return getAll("WHERE element_id IN (" + utility::join(utility::toStrings(elementIds), ',') + ")"); } Id SqliteStorage::getElementIdByLocationId(Id locationId) const @@ -603,38 +552,12 @@ Id SqliteStorage::getElementIdByLocationId(Id locationId) const StorageComponentAccess SqliteStorage::getComponentAccessByMemberEdgeId(Id memberEdgeId) const { - CppSQLite3Query q = m_database.execQuery(( - "SELECT id, edge_id, type FROM component_access WHERE edge_id == " + std::to_string(memberEdgeId) + ";" - ).c_str()); - - while (!q.eof()) - { - return StorageComponentAccess( - q.getIntField(1, 0), - q.getIntField(2, 0) - ); - } - - return StorageComponentAccess(0, 0); + return getFirst("WHERE edge_id == " + std::to_string(memberEdgeId)); } std::vector SqliteStorage::getComponentAccessByMemberEdgeIds(const std::vector& memberEdgeIds) const { - CppSQLite3Query q = m_database.execQuery(( - "SELECT id, edge_id, type FROM component_access WHERE edge_id IN (" + utility::join(utility::toStrings(memberEdgeIds), ',') + ");" - ).c_str()); - - std::vector accesses; - while (!q.eof()) - { - accesses.push_back(StorageComponentAccess( - q.getIntField(1, 0), - q.getIntField(2, 0) - )); - - q.nextRow(); - } - return accesses; + return getAll("WHERE edge_id IN (" + utility::join(utility::toStrings(memberEdgeIds), ',') + ")"); } std::vector SqliteStorage::getCommentLocationsInFile(const FilePath& filePath) const @@ -891,13 +814,6 @@ void SqliteStorage::insertOrUpdateMetaValue(const std::string& key, const std::s ).c_str()); } - - - - - - - template <> std::vector SqliteStorage::getAll(const std::string& query) const { diff --git a/src/lib/utility/messaging/MessageQueue.cpp b/src/lib/utility/messaging/MessageQueue.cpp index b8506add..48ad7991 100644 --- a/src/lib/utility/messaging/MessageQueue.cpp +++ b/src/lib/utility/messaging/MessageQueue.cpp @@ -6,8 +6,8 @@ #include "utility/logging/logging.h" #include "utility/messaging/MessageBase.h" #include "utility/messaging/MessageListenerBase.h" -#include "utility/scheduling/LambdaTask.h" #include "utility/scheduling/TaskGroupSequential.h" +#include "utility/scheduling/TaskLambda.h" std::shared_ptr MessageQueue::getInstance() { @@ -273,7 +273,7 @@ void MessageQueue::sendMessageAsTask(std::shared_ptr message, bool if (listener->getType() == message->getType()) { uint listenerId = listener->getId(); - taskGroup->addTask(std::make_shared( + taskGroup->addTask(std::make_shared( [listenerId, message]() { MessageListenerBase* listener = MessageQueue::getInstance()->getListenerById(listenerId); diff --git a/src/lib/utility/scheduling/LambdaTask.cpp b/src/lib/utility/scheduling/LambdaTask.cpp deleted file mode 100644 index b77eff0b..00000000 --- a/src/lib/utility/scheduling/LambdaTask.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "utility/scheduling/LambdaTask.h" - -LambdaTask::LambdaTask(std::function func) - : m_func(func) -{ -} - -LambdaTask::~LambdaTask() -{ -} - -void LambdaTask::enter() -{ -} - -Task::TaskState LambdaTask::update() -{ - m_func(); - - return Task::STATE_FINISHED; -} - -void LambdaTask::exit() -{ -} - -void LambdaTask::interrupt() -{ -} - -void LambdaTask::revert() -{ -} diff --git a/src/lib/utility/scheduling/TaskLambda.cpp b/src/lib/utility/scheduling/TaskLambda.cpp new file mode 100644 index 00000000..7b448f98 --- /dev/null +++ b/src/lib/utility/scheduling/TaskLambda.cpp @@ -0,0 +1,32 @@ +#include "utility/scheduling/TaskLambda.h" + +TaskLambda::TaskLambda(std::function func) + : m_func(func) +{ +} + +TaskLambda::~TaskLambda() +{ +} + +void TaskLambda::enter() +{ +} + +Task::TaskState TaskLambda::update() +{ + m_func(); + return Task::STATE_FINISHED; +} + +void TaskLambda::exit() +{ +} + +void TaskLambda::interrupt() +{ +} + +void TaskLambda::revert() +{ +} diff --git a/src/lib/utility/scheduling/LambdaTask.h b/src/lib/utility/scheduling/TaskLambda.h similarity index 79% rename from src/lib/utility/scheduling/LambdaTask.h rename to src/lib/utility/scheduling/TaskLambda.h index 5eba8e88..ffe7bbe0 100644 --- a/src/lib/utility/scheduling/LambdaTask.h +++ b/src/lib/utility/scheduling/TaskLambda.h @@ -5,12 +5,12 @@ #include "utility/scheduling/Task.h" -class LambdaTask +class TaskLambda : public Task { public: - LambdaTask(std::function func); - virtual ~LambdaTask(); + TaskLambda(std::function func); + virtual ~TaskLambda(); virtual void enter(); virtual TaskState update();