blob: 3ad01793306c9012a066cd67dadab955f51c427a [file] [log] [blame]
/*
* Copyright (C) 2018 CESNET, https://photonics.cesnet.cz/
* Copyright (C) 2018 FIT CVUT, https://fit.cvut.cz/
*
* Written by Václav Kubernát <kubervac@fit.cvut.cz>
*
*/
#pragma once
#include "completion.hpp"
#include "data_query.hpp"
#include "schema.hpp"
struct ParserContext {
ParserContext(const Schema& schema, const std::shared_ptr<const DataQuery> dataQuery, const dataPath_& curDir);
schemaPath_ currentSchemaPath();
dataPath_ currentDataPath();
void clearPath();
void pushPathFragment(const dataNode_& node);
void pushPathFragment(const schemaNode_& node);
void resetPath();
const Schema& m_schema;
const dataPath_ m_curPathOrig;
const std::shared_ptr<const DataQuery> m_dataquery;
boost::optional<std::string> m_curModule;
std::string m_errorMsg;
std::string m_tmpListName;
bool m_topLevelModulePresent = false;
struct {
schemaPath_ m_location;
ModuleNodePair m_node;
} m_tmpListKeyLeafPath;
std::map<std::string, leaf_data_> m_tmpListKeys;
bool m_errorHandled = false;
bool m_completing = false;
std::set<Completion> m_suggestions;
// Iterator pointing to where suggestions were created
boost::optional<std::string::const_iterator> m_completionIterator;
private:
boost::variant<dataPath_, schemaPath_> m_curPath;
};