diff options
Diffstat (limited to 'debian/uncrustify-trinity/uncrustify-trinity-0.78.1/src/parsing_frame.h')
-rw-r--r-- | debian/uncrustify-trinity/uncrustify-trinity-0.78.1/src/parsing_frame.h | 797 |
1 files changed, 797 insertions, 0 deletions
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.1/src/parsing_frame.h b/debian/uncrustify-trinity/uncrustify-trinity-0.78.1/src/parsing_frame.h new file mode 100644 index 00000000..1431b43d --- /dev/null +++ b/debian/uncrustify-trinity/uncrustify-trinity-0.78.1/src/parsing_frame.h @@ -0,0 +1,797 @@ +/** + * @file parsing_frame.h + * + * Holds data needed for indenting and brace parsing + * + * @author Daniel Chumak + * @license GPL v2+ + */ + +#ifndef PARSING_FRAME_H_INCLUDED +#define PARSING_FRAME_H_INCLUDED + +#include "uncrustify_types.h" + +#include <vector> + + +//! Class describing a parenthesis stack entry and its information +class ParenStackEntry +{ +public: + ParenStackEntry(); + + // --------- Access methods + + /** + * @brief returns the token that opened the entry + */ + E_Token GetOpenToken() const; + + /** + * @brief Sets the token that opened the entry + * @param token the token to set + */ + void SetOpenToken(const E_Token token); + + /** + * @brief returns the chunk that opened the entry + */ + Chunk *GetOpenChunk() const; + + /** + * @brief Sets the chunk that opened the entry + * @param chunk the chunk to set + */ + void SetOpenChunk(Chunk *chunk); + + /** + * @brief returns the level that opened the entry + */ + size_t GetOpenLevel() const; + + /** + * @brief Sets the level that opened the entry + * @param level the level to set + */ + void SetOpenLevel(size_t level); + + /** + * @brief returns the line that opened the entry + */ + size_t GetOpenLine() const; + + /** + * @brief Sets the line that opened the entry + * @param line the line to set + */ + void SetOpenLine(size_t line); + + /** + * @brief returns the column that opened the entry + */ + size_t GetOpenCol() const; + + /** + * @brief Sets the column that opened the entry + * @param column the column to set + */ + void SetOpenCol(size_t column); + + /** + * @brief returns the indent for braces + */ + size_t GetBraceIndent() const; + + /** + * @brief Sets the indent for braces + * @param indent the indent for braces + */ + void SetBraceIndent(size_t indent); + + /** + * @brief returns the indent level + */ + size_t GetIndent() const; + + /** + * @brief Sets the indent level + * @param level the indent level + */ + void SetIndent(size_t level); + + /** + * @brief returns the temporary indent level + */ + size_t GetIndentTmp() const; + + /** + * @brief Sets the temporary indent level + * @param level the temporary indent level + */ + void SetIndentTmp(size_t level); + + /** + * @brief returns the tab indent level + */ + size_t GetIndentTab() const; + + /** + * @brief Sets the tab indent level + * @param level the tab indent level + */ + void SetIndentTab(size_t level); + + /** + * @brief returns the consecutive namespace levels + */ + size_t GetNsCount() const; + + /** + * @brief Sets the consecutive namespace levels + * @param count the consecutive namespace levels + */ + void SetNsCount(size_t count); + + /** + * @brief returns whether indent_continue was applied + */ + bool GetIndentContinue() const; + + /** + * @brief Sets whether indent_continue was applied + * @param cont new value + */ + void SetIndentContinue(bool cont); + + /** + * @brief returns whether this was created in a preprocessor + */ + bool GetInPreproc() const; + + /** + * @brief Sets whether this was created in a preprocessor + * @param preproc new value + */ + void SetInPreproc(bool preproc); + + /** + * @brief returns whether a non-vardef line was hit + */ + bool GetNonVardef() const; + + /** + * @brief Sets whether a non-vardef line was hit + * @param vardef new value + */ + void SetNonVardef(bool vardef); + + /** + * @brief returns the parent token (if, for, function, etc) + */ + E_Token GetParent() const; + + /** + * @brief Sets the parent token (if, for, function, etc) + * @param parent the token to set + */ + void SetParent(const E_Token parent); + + /** + * @brief returns the stage used to check progression of complex statements + */ + E_BraceStage GetStage() const; + + /** + * @brief Sets the stage used to check progression of complex statements + * @param stage the new value + */ + void SetStage(const E_BraceStage stage); + + /** + * @brief Returns the associated indentation data as a const reference + */ + const IndentationData &GetIndentData() const; + + /** + * @brief Returns the associated indentation data as a modifiable reference + */ + IndentationData &IndentData(); + + /** + * @brief returns the pop chunk + */ + Chunk *GetPopChunk() const; + + /** + * @brief Sets the pop chunk + * @param chunk the new chunk + */ + void SetPopChunk(Chunk *chunk); + + +protected: + E_Token m_openToken; // the type that opened the entry + Chunk *m_openChunk; // chunk that opened the level + size_t m_openLevel; // level of opening type + size_t m_openLine; // line that open symbol is on, only for logging purposes + size_t m_openCol; // column that open symbol is on, only for logging purposes + size_t m_braceIndent; // indent for braces - may not relate to indent + size_t m_indent; // indent level (depends on use) + size_t m_indentTmp; // temporary indent level (depends on use) + size_t m_indentTab; // the 'tab' indent (always <= real column) + size_t m_nsCount; // Number of consecutive namespace levels + bool m_indentContinue; // indent_continue was applied + bool m_inPreproc; // whether this was created in a preprocessor + bool m_nonVardef; // Hit a non-vardef line + E_Token m_parent; // if, for, function, etc + E_BraceStage m_stage; // used to check progression of complex statements. + IndentationData m_indentationData; // Indentation data + Chunk *m_popChunk; // Pop chunk +}; + + +//! Class describing a parsing frame and its information +class ParsingFrame +{ +public: + ParsingFrame(); + virtual ~ParsingFrame() = default; + + /** + * @brief Returns whether the frame paren stack is empty or not + */ + bool empty() const; + + /** + * @brief Returns the size of the frame paren stack + */ + size_t size() const; + + /** + * @brief Returns the last popped entry from the frame paren stack + */ + const ParenStackEntry &lastPopped() const; + + /** + * @brief Returns the frame reference number + */ + size_t GetRefNumber() const; + + /** + * @brief Set the frame reference number + * @param the new reference number + */ + void SetRefNumber(const size_t refNo); + + /** + * @brief Returns the frame parenthesis level + */ + size_t GetParenLevel() const; + + /** + * @brief Set the frame parenthesis level + * @param the new parenthesis level + */ + void SetParenLevel(const size_t parenLevel); + + /** + * @brief Returns the frame brace level + */ + size_t GetBraceLevel() const; + + /** + * @brief Set the frame brace level + * @param the new brace level + */ + void SetBraceLevel(const size_t braceLevel); + + /** + * @brief Returns the frame preprocessor level + */ + size_t GetPpLevel() const; + + /** + * @brief Set the frame preprocessor level + * @param the new preprocessor level + */ + void SetPpLevel(const size_t ppLevel); + + /** + * @brief Returns the count of special parenthesis + */ + size_t GetSParenCount() const; + + /** + * @brief Set the count of special parenthesis + * @param the new special parenthesis count value + */ + void SetSParenCount(const size_t sParenCount); + + /** + * @brief Returns the count of parenthesis + */ + size_t GetParenCount() const; + + /** + * @brief Set the count of parenthesis + * @param the new parenthesis count value + */ + void SetParenCount(const size_t parenCount); + + /** + * @brief Returns the count of statements + */ + size_t GetStmtCount() const; + + /** + * @brief Set the count of statements + * @param the new statement count value + */ + void SetStmtCount(const size_t stmtCount); + + /** + * @brief Returns the count of statements + */ + size_t GetExprCount() const; + + /** + * @brief Set the count of statements + * @param the new statement count value + */ + void SetExprCount(const size_t exprCount); + + /** + * @brief Returns the ifdef type + */ + E_Token GetIfdefType() const; + + /** + * @brief Set the ifdef type + * @param the new type + */ + void SetIfdefType(const E_Token inIfdef); + + ParenStackEntry &at(size_t idx); + const ParenStackEntry &at(size_t idx) const; + + ParenStackEntry &prev(size_t idx = 1); + const ParenStackEntry &prev(size_t idx = 1) const; + + ParenStackEntry &top(); + const ParenStackEntry &top() const; + + void push(Chunk *pc, const char *func, int line, E_BraceStage stage = E_BraceStage::NONE); + void pop(const char *func, int line, Chunk *pc); + + using iterator = std::vector<ParenStackEntry>::iterator; + iterator begin(); + iterator end(); + + using const_iterator = std::vector<ParenStackEntry>::const_iterator; + const_iterator begin() const; + const_iterator end() const; + + using reverse_iterator = std::vector<ParenStackEntry>::reverse_iterator; + reverse_iterator rbegin(); + reverse_iterator rend(); + + using const_reverse_iterator = std::vector<ParenStackEntry>::const_reverse_iterator; + const_reverse_iterator rbegin() const; + const_reverse_iterator rend() const; + + +protected: + // Members + std::vector<ParenStackEntry> m_parenStack; //! The parenthesis stack + ParenStackEntry m_lastPopped; //! last popped frame or nullptr + + size_t m_refNumber; //! frame reference number + size_t m_parenLevel; //! level of parens/square/angle/brace + size_t m_braceLevel; //! level of brace/vbrace + size_t m_ppLevel; //! level of preproc #if stuff + size_t m_sParenCount; //! count of special parenthesis + size_t m_parenCount; //! count of parenthesis + size_t m_stmtCount; //! count of statements + size_t m_exprCount; //! count of expressions + E_Token m_ifdefType; //! the ifdef type +}; + + +// ------------------------------ +// ParenStackEntry inline methods +// ------------------------------ +inline E_Token ParenStackEntry::GetOpenToken() const +{ + return(m_openToken); +} + + +inline void ParenStackEntry::SetOpenToken(const E_Token token) +{ + m_openToken = token; +} + + +inline Chunk *ParenStackEntry::GetOpenChunk() const +{ + return(m_openChunk); +} + + +inline void ParenStackEntry::SetOpenChunk(Chunk *chunk) +{ + m_openChunk = chunk; +} + + +inline size_t ParenStackEntry::GetOpenLevel() const +{ + return(m_openLevel); +} + + +inline void ParenStackEntry::SetOpenLevel(size_t level) +{ + m_openLevel = level; +} + + +inline size_t ParenStackEntry::GetOpenLine() const +{ + return(m_openLine); +} + + +inline void ParenStackEntry::SetOpenLine(size_t line) +{ + m_openLine = line; +} + + +inline size_t ParenStackEntry::GetOpenCol() const +{ + return(m_openCol); +} + + +inline void ParenStackEntry::SetOpenCol(size_t column) +{ + m_openCol = column; +} + + +inline size_t ParenStackEntry::GetBraceIndent() const +{ + return(m_braceIndent); +} + + +inline void ParenStackEntry::SetBraceIndent(size_t indent) +{ + m_braceIndent = indent; +} + + +inline size_t ParenStackEntry::GetIndent() const +{ + return(m_indent); +} + + +inline void ParenStackEntry::SetIndent(size_t level) +{ + m_indent = level; +} + + +inline size_t ParenStackEntry::GetIndentTmp() const +{ + return(m_indentTmp); +} + + +inline void ParenStackEntry::SetIndentTmp(size_t level) +{ + m_indentTmp = level; +} + + +inline size_t ParenStackEntry::GetIndentTab() const +{ + return(m_indentTab); +} + + +inline void ParenStackEntry::SetIndentTab(size_t level) +{ + m_indentTab = level; +} + + +inline size_t ParenStackEntry::GetNsCount() const +{ + return(m_nsCount); +} + + +inline void ParenStackEntry::SetNsCount(size_t count) +{ + m_nsCount = count; +} + + +inline bool ParenStackEntry::GetIndentContinue() const +{ + return(m_indentContinue); +} + + +inline void ParenStackEntry::SetIndentContinue(bool cont) +{ + m_indentContinue = cont; +} + + +inline bool ParenStackEntry::GetInPreproc() const +{ + return(m_inPreproc); +} + + +inline void ParenStackEntry::SetInPreproc(bool preproc) +{ + m_inPreproc = preproc; +} + + +inline bool ParenStackEntry::GetNonVardef() const +{ + return(m_nonVardef); +} + + +inline void ParenStackEntry::SetNonVardef(bool vardef) +{ + m_nonVardef = vardef; +} + + +inline E_Token ParenStackEntry::GetParent() const +{ + return(m_parent); +} + + +inline void ParenStackEntry::SetParent(const E_Token parent) +{ + m_parent = parent; +} + + +inline E_BraceStage ParenStackEntry::GetStage() const +{ + return(m_stage); +} + + +inline void ParenStackEntry::SetStage(const E_BraceStage stage) +{ + m_stage = stage; +} + + +inline const IndentationData &ParenStackEntry::GetIndentData() const +{ + return(m_indentationData); +} + + +inline IndentationData &ParenStackEntry::IndentData() +{ + return(m_indentationData); +} + + +inline Chunk *ParenStackEntry::GetPopChunk() const +{ + return(m_popChunk); +} + + +inline void ParenStackEntry::SetPopChunk(Chunk *chunk) +{ + m_popChunk = chunk; +} + + +// ------------------------------ +// ParsingFrame inline methods +// ------------------------------ +inline bool ParsingFrame::empty() const +{ + return(m_parenStack.empty()); +} + + +inline size_t ParsingFrame::size() const +{ + return(m_parenStack.size()); +} + + +inline const ParenStackEntry &ParsingFrame::lastPopped() const +{ + return(m_lastPopped); +} + + +inline size_t ParsingFrame::GetRefNumber() const +{ + return(m_refNumber); +} + + +inline void ParsingFrame::SetRefNumber(const size_t refNo) +{ + m_refNumber = refNo; +} + + +inline size_t ParsingFrame::GetParenLevel() const +{ + return(m_parenLevel); +} + + +inline void ParsingFrame::SetParenLevel(const size_t parenLevel) +{ + m_parenLevel = parenLevel; +} + + +inline size_t ParsingFrame::GetBraceLevel() const +{ + return(m_braceLevel); +} + + +inline void ParsingFrame::SetBraceLevel(const size_t braceLevel) +{ + m_braceLevel = braceLevel; +} + + +inline size_t ParsingFrame::GetPpLevel() const +{ + return(m_ppLevel); +} + + +inline void ParsingFrame::SetPpLevel(const size_t ppLevel) +{ + m_ppLevel = ppLevel; +} + + +inline size_t ParsingFrame::GetSParenCount() const +{ + return(m_sParenCount); +} + + +inline void ParsingFrame::SetSParenCount(const size_t sParenCount) +{ + m_sParenCount = sParenCount; +} + + +inline size_t ParsingFrame::GetParenCount() const +{ + return(m_parenCount); +} + + +inline void ParsingFrame::SetParenCount(const size_t parenCount) +{ + m_parenCount = parenCount; +} + + +inline size_t ParsingFrame::GetStmtCount() const +{ + return(m_stmtCount); +} + + +inline void ParsingFrame::SetStmtCount(const size_t stmtCount) +{ + m_stmtCount = stmtCount; +} + + +inline size_t ParsingFrame::GetExprCount() const +{ + return(m_exprCount); +} + + +inline void ParsingFrame::SetExprCount(const size_t exprCount) +{ + m_exprCount = exprCount; +} + + +inline E_Token ParsingFrame::GetIfdefType() const +{ + return(m_ifdefType); +} + + +inline void ParsingFrame::SetIfdefType(const E_Token inIfdef) +{ + m_ifdefType = inIfdef; +} + + +inline ParenStackEntry &ParsingFrame::at(size_t idx) +{ + return(m_parenStack.at(idx)); +} + + +inline const ParenStackEntry &ParsingFrame::at(size_t idx) const +{ + return(m_parenStack.at(idx)); +} + + +inline ParsingFrame::iterator ParsingFrame::begin() +{ + return(std::begin(m_parenStack)); +} + + +inline ParsingFrame::const_iterator ParsingFrame::begin() const +{ + return(std::begin(m_parenStack)); +} + + +inline ParsingFrame::reverse_iterator ParsingFrame::rbegin() +{ + return(m_parenStack.rbegin()); +} + + +inline ParsingFrame::const_reverse_iterator ParsingFrame::rbegin() const +{ + return(m_parenStack.rbegin()); +} + + +inline ParsingFrame::iterator ParsingFrame::end() +{ + return(std::end(m_parenStack)); +} + + +inline ParsingFrame::const_iterator ParsingFrame::end() const +{ + return(std::end(m_parenStack)); +} + + +inline ParsingFrame::reverse_iterator ParsingFrame::rend() +{ + return(m_parenStack.rend()); +} + + +inline ParsingFrame::const_reverse_iterator ParsingFrame::rend() const +{ + return(m_parenStack.rend()); +} + + +#endif /* PARSING_FRAME_H_INCLUDED */ |