From 1e6ea332e2cff8e47bbab3937e471f1c8f420508 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 28 Jul 2014 12:02:32 +0300 Subject: Add checks for public:/protected:/private: formatting. --- src/rules/formatting.cpp | 86 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/rules/formatting.cpp (limited to 'src/rules') diff --git a/src/rules/formatting.cpp b/src/rules/formatting.cpp new file mode 100644 index 0000000..1a49848 --- /dev/null +++ b/src/rules/formatting.cpp @@ -0,0 +1,86 @@ +/* + * The ManaPlus Client + * Copyright (C) 2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "template.hpp" + +registerRuleExt(formatting, "011", "(.+)[.](cpp|h)") + +namespace +{ + unsigned int align = 0; + std::stack stack; +} // namespace + +startRule(formatting) +{ + align = 0; +} + +endRule(formatting) +{ +} + +parseLineRule(formatting) +{ + std::string data0 = data; + trim(data0); + if (data0 == "{") + { + stack.push(align); + align = data.size() - data0.size() + 4; +// print("open align=" + toString(align)); + } + else if (findCutFirst(data0, "{ ")) + { + const int sz = data0.size(); + trim(data0); + if (!data0.empty() && data0[0] != '/') + return; + stack.push(align); + align = data.size() - sz - 2 + 4; +// print("open align=" + toString(align)); + } + else if (data0 == "}" || data0 == "};" || findCutFirst(data0, "} ")) + { + if (stack.empty()) + return; + + align = stack.top(); + stack.pop(); +// print("close align=" + toString(align)); + } + else + { + std::string data2 = data; + if (findCutLast(data2, "public:") + || findCutLast(data2, "protected:") + || findCutLast(data2, "private:")) + { +// print("sz=" + toString(int(data2.size()))); +// print("align=" + toString(align)); + if (data2.size() != align) + { + print("Wrong public/protected/private formatting. " + "Must be align " + toString(align) + ", but present align " + + toString(static_cast(data2.size())) + "."); + } + } + } +} -- cgit v1.2.3-70-g09d2