summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-05-25 11:47:10 +0300
committerAndrei Karas <akaras@inbox.ru>2014-05-25 11:47:10 +0300
commita30e6e97b64d714aabeef90bafc413898ede2412 (patch)
tree533132929a4fbfb01498e6c9e19147584927bc14
parent847aa8f9b3951448e36e9fd353b94e904cdfd84d (diff)
downloadmplint-a30e6e97b64d714aabeef90bafc413898ede2412.tar.gz
mplint-a30e6e97b64d714aabeef90bafc413898ede2412.tar.bz2
mplint-a30e6e97b64d714aabeef90bafc413898ede2412.tar.xz
mplint-a30e6e97b64d714aabeef90bafc413898ede2412.zip
Add basic rule for constructors.
-rw-r--r--src/Makefile.am1
-rw-r--r--src/rules/constructor.cpp37
-rw-r--r--src/rules/debug.cpp1
-rw-r--r--src/stringutils.cpp10
-rw-r--r--src/stringutils.h3
5 files changed, 52 insertions, 0 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 642485d..3805f41 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -17,6 +17,7 @@ mplint_SOURCES = \
stringutils.h \
stringvector.h \
template.hpp \
+ rules/constructor.cpp \
rules/debug.cpp \
rules/dump.cpp \
rules/license.cpp
diff --git a/src/rules/constructor.cpp b/src/rules/constructor.cpp
new file mode 100644
index 0000000..e9acb1b
--- /dev/null
+++ b/src/rules/constructor.cpp
@@ -0,0 +1,37 @@
+/*
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#include "template.hpp"
+
+registerRuleExt(constructor, "006", "(.+)[.](cpp|h)")
+
+startRule(constructor)
+{
+}
+
+endRule(constructor)
+{
+}
+
+parseLineRule(constructor)
+{
+ if (strEndWith(data, "):"))
+ print("Add space between constructor and \":\".");
+}
diff --git a/src/rules/debug.cpp b/src/rules/debug.cpp
index 7c16990..f7154a6 100644
--- a/src/rules/debug.cpp
+++ b/src/rules/debug.cpp
@@ -57,6 +57,7 @@ endRule(debugCpp)
parseLineRule(debugCpp)
{
+ // need check what debug.h will be last include in file
trim(data);
if (data == "#include \"debug.h\"")
terminateRule();
diff --git a/src/stringutils.cpp b/src/stringutils.cpp
index 05e6a01..d750165 100644
--- a/src/stringutils.cpp
+++ b/src/stringutils.cpp
@@ -631,6 +631,16 @@ bool strStartWith(const std::string &restrict str1,
return str1.substr(0, sz2) == str2;
}
+bool strEndWith(const std::string &restrict str1,
+ const std::string &restrict str2)
+{
+ const size_t sz1 = str1.size();
+ const size_t sz2 = str2.size();
+ if (sz1 < sz2)
+ return false;
+ return str1.substr(sz1 - sz2, sz2) == str2;
+}
+
std::string getDateString()
{
char buffer[80];
diff --git a/src/stringutils.h b/src/stringutils.h
index f7218c0..817114e 100644
--- a/src/stringutils.h
+++ b/src/stringutils.h
@@ -222,6 +222,9 @@ std::string &removeProtocol(std::string &url);
bool strStartWith(const std::string &restrict str,
const std::string &restrict start) A_WARN_UNUSED;
+bool strEndWith(const std::string &restrict str,
+ const std::string &restrict end) A_WARN_UNUSED;
+
std::string getDateString() A_WARN_UNUSED;
signed char parseBoolean(const std::string &value);