summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-21 00:10:18 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-21 00:10:18 +0300
commit2085598b08564d5e17e58ff0763812f5f871a807 (patch)
treed35c163a7c281ffa8986aa0e39212b6a5d8190e8
parentc628beb5cc01ef06de825f1106ab36b3af4ea125 (diff)
downloadparanucker-2085598b08564d5e17e58ff0763812f5f871a807.tar.gz
paranucker-2085598b08564d5e17e58ff0763812f5f871a807.tar.bz2
paranucker-2085598b08564d5e17e58ff0763812f5f871a807.tar.xz
paranucker-2085598b08564d5e17e58ff0763812f5f871a807.zip
Add support for build separate plugin for C and C++.
-rw-r--r--src/Makefile.am9
-rw-r--r--src/includes.h4
-rw-r--r--src/parsers/block/try_block.cpp2
-rw-r--r--src/parsers/cst/ptrmem_cst.cpp4
-rw-r--r--src/parsers/decl/template_decl.cpp2
-rw-r--r--src/parsers/decl/var_decl.cpp2
-rw-r--r--src/parsers/expr/aggrinit_expr.cpp2
-rw-r--r--src/parsers/expr/vecinit_expr.cpp2
-rw-r--r--src/parsers/handler.cpp2
-rw-r--r--src/parsers/stmt/cleanup_stmt.cpp2
-rw-r--r--src/parsers/stmt/do_stmt.cpp2
-rw-r--r--src/parsers/stmt/expr_stmt.cpp2
-rw-r--r--src/parsers/stmt/for_stmt.cpp2
-rw-r--r--src/parsers/stmt/if_stmt.cpp2
-rw-r--r--src/parsers/stmt/switch_stmt.cpp2
-rw-r--r--src/parsers/stmt/while_stmt.cpp2
-rw-r--r--src/parsers/templateparmindex.cpp2
-rw-r--r--src/parsers/templatetypeparm.cpp2
-rw-r--r--src/parsers/type/typename_type.cpp4
19 files changed, 48 insertions, 3 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index d6a091c..e884c5f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -35,11 +35,16 @@ if ENABLE_GPROF
SHARED_CXXFLAGS += "-pg"
endif
-lib_LTLIBRARIES = libastdumper.la
+lib_LTLIBRARIES = libastdumper.la libcppastdumper.la
libastdumper_la_SOURCES = ${SRC}
libastdumper_la_LDFLAGS = ${SHARED_LDFLAGS}
libastdumper_la_CXXFLAGS = ${SHARED_CXXFLAGS}
-all-local: libastdumper.la
+libcppastdumper_la_SOURCES = ${SRC}
+libcppastdumper_la_LDFLAGS = ${SHARED_LDFLAGS}
+libcppastdumper_la_CXXFLAGS = ${SHARED_CXXFLAGS} -DENABLE_CPPLANG
+
+all-local: libastdumper.la libcppastdumper.la
cp .libs/libastdumper.so .libs/astdumper.so
+ cp .libs/libcppastdumper.so .libs/cppastdumper.so
echo done
diff --git a/src/includes.h b/src/includes.h
index ba436bc..7a1ef5e 100644
--- a/src/includes.h
+++ b/src/includes.h
@@ -41,7 +41,11 @@
#include "tree.h"
#include "print-tree.h"
+#ifdef ENABLE_CPPLANG
#include "cp/cp-tree.h"
+#else
+#include "c-family/c-common.h"
+#endif
#include "diagnostic.h"
diff --git a/src/parsers/block/try_block.cpp b/src/parsers/block/try_block.cpp
index a46d232..bf320f2 100644
--- a/src/parsers/block/try_block.cpp
+++ b/src/parsers/block/try_block.cpp
@@ -34,6 +34,7 @@ void parseTryBlockNode(TryBlockNode *node)
fillExprLocation(node);
Log::dump(node);
+#ifdef ENABLE_CPPLANG
setPrintField(node, CLEANUP_P, isClean);
node->body = createParseNode(
@@ -45,6 +46,7 @@ void parseTryBlockNode(TryBlockNode *node)
node,
TRY_HANDLERS(node->gccNode),
"handler");
+#endif
}
}
diff --git a/src/parsers/cst/ptrmem_cst.cpp b/src/parsers/cst/ptrmem_cst.cpp
index 0af2bc6..7934769 100644
--- a/src/parsers/cst/ptrmem_cst.cpp
+++ b/src/parsers/cst/ptrmem_cst.cpp
@@ -33,14 +33,16 @@ void parsePtrMemCstNode(PtrMemCstNode *node)
fillType(node);
Log::dump(node);
+#ifdef ENABLE_CPPLANG
node->record = createParseNode(
node,
PTRMEM_CST_CLASS(node->gccNode),
"record");
node->memberDecl = static_cast<DeclNode*>(createParseNode(
node,
- PTRMEM_CST_CLASS(node->gccNode),
+ PTRMEM_CST_MEMBER(node->gccNode),
"member decl"));
+#endif
}
}
diff --git a/src/parsers/decl/template_decl.cpp b/src/parsers/decl/template_decl.cpp
index 46a71ac..394f427 100644
--- a/src/parsers/decl/template_decl.cpp
+++ b/src/parsers/decl/template_decl.cpp
@@ -38,6 +38,7 @@ void parseTemplateDeclNode(TemplateDeclNode *node)
fillDeclAutoGenerated(node);
fillDeclAttributes(node);
+#ifdef ENABLE_CPPLANG
node->specializations = static_cast<TreeListNode*>(createParseNode(
node,
DECL_TEMPLATE_SPECIALIZATIONS(node->gccNode),
@@ -49,6 +50,7 @@ void parseTemplateDeclNode(TemplateDeclNode *node)
DECL_TEMPLATE_INSTANTIATIONS(node->gccNode),
TREE_LIST,
"instantiations"));
+#endif
}
}
diff --git a/src/parsers/decl/var_decl.cpp b/src/parsers/decl/var_decl.cpp
index 09afed1..88fef9b 100644
--- a/src/parsers/decl/var_decl.cpp
+++ b/src/parsers/decl/var_decl.cpp
@@ -38,7 +38,9 @@ void parseVarDeclNode(VarDeclNode *node)
Log::dump(node);
+#ifdef ENABLE_CPPLANG
setPrintField(node, DECL_THIS_STATIC, isStatic);
+#endif
setPrintField(node, DECL_REGISTER, isRegister);
setPrintField(node, TREE_USED, isUsed);
setPrintField(node, DECL_VIRTUAL_P, isVirtual);
diff --git a/src/parsers/expr/aggrinit_expr.cpp b/src/parsers/expr/aggrinit_expr.cpp
index b6291f2..b5c17ae 100644
--- a/src/parsers/expr/aggrinit_expr.cpp
+++ b/src/parsers/expr/aggrinit_expr.cpp
@@ -36,6 +36,7 @@ void parseAggrInitExprNode(AggrInitExprNode *node)
//fillExprOperands(node);
+#ifdef ENABLE_CPPLANG
node->function = createParseNode(
node,
AGGR_INIT_EXPR_FN(node->gccNode),
@@ -52,6 +53,7 @@ void parseAggrInitExprNode(AggrInitExprNode *node)
AGGR_INIT_EXPR_ARG(node->gccNode, f),
"arg"));
}
+#endif
}
}
diff --git a/src/parsers/expr/vecinit_expr.cpp b/src/parsers/expr/vecinit_expr.cpp
index 867d419..178b414 100644
--- a/src/parsers/expr/vecinit_expr.cpp
+++ b/src/parsers/expr/vecinit_expr.cpp
@@ -34,7 +34,9 @@ void parseVecInitExprNode(VecInitExprNode *node)
fillExprLocation(node);
Log::dump(node);
+#ifdef ENABLE_CPPLANG
setPrintField(node, VEC_INIT_EXPR_IS_CONSTEXPR, isConstExpr);
+#endif
fillExprOperands(node);
diff --git a/src/parsers/handler.cpp b/src/parsers/handler.cpp
index f1c62a6..da727c0 100644
--- a/src/parsers/handler.cpp
+++ b/src/parsers/handler.cpp
@@ -31,6 +31,7 @@ void parseHandlerNode(HandlerNode *node)
fillType(node);
Log::dump(node);
+#ifdef ENABLE_CPPLANG
node->type = createParseNode(
node,
HANDLER_TYPE(node->gccNode),
@@ -43,6 +44,7 @@ void parseHandlerNode(HandlerNode *node)
node,
HANDLER_BODY(node->gccNode),
"body");
+#endif
}
}
diff --git a/src/parsers/stmt/cleanup_stmt.cpp b/src/parsers/stmt/cleanup_stmt.cpp
index 06f9b4e..dae9b4f 100644
--- a/src/parsers/stmt/cleanup_stmt.cpp
+++ b/src/parsers/stmt/cleanup_stmt.cpp
@@ -35,6 +35,7 @@ void parseCleanupStmtNode(CleanupStmtNode *node)
fillExprLocation(node);
Log::dump(node);
+#ifdef ENABLE_CPPLANG
node->body = createParseNode(
node,
CLEANUP_BODY(node->gccNode),
@@ -47,6 +48,7 @@ void parseCleanupStmtNode(CleanupStmtNode *node)
node,
CLEANUP_DECL(node->gccNode),
"decl"));
+#endif
}
}
diff --git a/src/parsers/stmt/do_stmt.cpp b/src/parsers/stmt/do_stmt.cpp
index 1b485bc..64491f6 100644
--- a/src/parsers/stmt/do_stmt.cpp
+++ b/src/parsers/stmt/do_stmt.cpp
@@ -38,6 +38,7 @@ void parseDoStmtNode(DoStmtNode *node)
fillExprLocation(node);
Log::dump(node);
+#ifdef ENABLE_CPPLANG
node->condition = static_cast<ExprNode*>(createParseNode(
node,
DO_COND(node->gccNode),
@@ -47,6 +48,7 @@ void parseDoStmtNode(DoStmtNode *node)
node,
DO_BODY(node->gccNode),
"body");
+#endif
}
}
diff --git a/src/parsers/stmt/expr_stmt.cpp b/src/parsers/stmt/expr_stmt.cpp
index a17a2dc..b4bd954 100644
--- a/src/parsers/stmt/expr_stmt.cpp
+++ b/src/parsers/stmt/expr_stmt.cpp
@@ -40,10 +40,12 @@ void parseExprStmtNode(ExprStmtNode *node)
if (!node->parseChilds)
return;
+#ifdef ENABLE_CPPLANG
node->expression = static_cast<ExprNode*>(createParseNode(
node,
EXPR_STMT_EXPR(node->gccNode),
"expresssion"));
+#endif
}
}
diff --git a/src/parsers/stmt/for_stmt.cpp b/src/parsers/stmt/for_stmt.cpp
index d06be43..3b67782 100644
--- a/src/parsers/stmt/for_stmt.cpp
+++ b/src/parsers/stmt/for_stmt.cpp
@@ -35,6 +35,7 @@ void parseForStmtNode(ForStmtNode *node)
fillExprLocation(node);
Log::dump(node);
+#ifdef ENABLE_CPPLANG
node->init = static_cast<StmtNode*>(createParseNode(
node,
FOR_INIT_STMT(node->gccNode),
@@ -54,6 +55,7 @@ void parseForStmtNode(ForStmtNode *node)
node,
FOR_BODY(node->gccNode),
"body"));
+#endif
}
}
diff --git a/src/parsers/stmt/if_stmt.cpp b/src/parsers/stmt/if_stmt.cpp
index 92eaff7..6b59202 100644
--- a/src/parsers/stmt/if_stmt.cpp
+++ b/src/parsers/stmt/if_stmt.cpp
@@ -38,6 +38,7 @@ void parseIfStmtNode(IfStmtNode *node)
if (!node->parseChilds)
return;
+#ifdef ENABLE_CPPLANG
node->condition = createParseNode(
node,
IF_COND(node->gccNode),
@@ -55,6 +56,7 @@ void parseIfStmtNode(IfStmtNode *node)
node,
IF_SCOPE(node->gccNode),
"score");
+#endif
}
}
diff --git a/src/parsers/stmt/switch_stmt.cpp b/src/parsers/stmt/switch_stmt.cpp
index 5fc1464..c48b567 100644
--- a/src/parsers/stmt/switch_stmt.cpp
+++ b/src/parsers/stmt/switch_stmt.cpp
@@ -35,6 +35,7 @@ void parseSwitchStmtNode(SwitchStmtNode *node)
fillExprLocation(node);
Log::dump(node);
+#ifdef ENABLE_CPPLANG
node->condition = createParseNode(
node,
SWITCH_STMT_COND(node->gccNode),
@@ -54,6 +55,7 @@ void parseSwitchStmtNode(SwitchStmtNode *node)
node,
SWITCH_STMT_SCOPE(node->gccNode),
"scope");
+#endif
}
}
diff --git a/src/parsers/stmt/while_stmt.cpp b/src/parsers/stmt/while_stmt.cpp
index bb580f1..54fc2d9 100644
--- a/src/parsers/stmt/while_stmt.cpp
+++ b/src/parsers/stmt/while_stmt.cpp
@@ -38,6 +38,7 @@ void parseWhileStmtNode(WhileStmtNode *node)
if (!node->parseChilds)
return;
+#ifdef ENABLE_CPPLANG
node->condition = createParseNode(
node,
WHILE_COND(node->gccNode),
@@ -47,6 +48,7 @@ void parseWhileStmtNode(WhileStmtNode *node)
node,
WHILE_BODY(node->gccNode),
"body");
+#endif
}
}
diff --git a/src/parsers/templateparmindex.cpp b/src/parsers/templateparmindex.cpp
index 493aefe..a5f6b62 100644
--- a/src/parsers/templateparmindex.cpp
+++ b/src/parsers/templateparmindex.cpp
@@ -32,6 +32,7 @@ void parseTemplateParmIndexNode(TemplateParmIndexNode *node)
fillType(node);
Log::dump(node);
+#ifdef ENABLE_CPPLANG
setPrintField(node, TEMPLATE_PARM_IDX, parmIdx);
setPrintField(node, TEMPLATE_PARM_LEVEL, parmLevel);
setPrintField(node, TEMPLATE_PARM_ORIG_LEVEL, parmOrigLevel);
@@ -45,6 +46,7 @@ void parseTemplateParmIndexNode(TemplateParmIndexNode *node)
node,
TEMPLATE_PARM_DECL(node->gccNode),
"parm decl");
+#endif
}
}
diff --git a/src/parsers/templatetypeparm.cpp b/src/parsers/templatetypeparm.cpp
index d824bc6..46dc18b 100644
--- a/src/parsers/templatetypeparm.cpp
+++ b/src/parsers/templatetypeparm.cpp
@@ -32,10 +32,12 @@ void parseTemplateTypeParmNode(TemplateTypeParmNode *node)
fillType(node);
Log::dump(node);
+#ifdef ENABLE_CPPLANG
node->index = createParseNode(
node,
TEMPLATE_TYPE_PARM_INDEX(node->gccNode),
"index");
+#endif
}
}
diff --git a/src/parsers/type/typename_type.cpp b/src/parsers/type/typename_type.cpp
index 8d183d3..2acb957 100644
--- a/src/parsers/type/typename_type.cpp
+++ b/src/parsers/type/typename_type.cpp
@@ -33,17 +33,21 @@ void parseTypeNameTypeNode(TypeNameTypeNode *node)
fillType(node);
Log::dump(node);
+#ifdef ENABLE_CPPLANG
setPrintField(node, TYPENAME_IS_ENUM_P, isEnum);
setPrintField(node, TYPENAME_IS_CLASS_P, isClass);
setPrintField(node, TYPENAME_IS_RESOLVING_P, isResolving);
+#endif
fillTypeName(node);
fillTypeAttributes(node);
+#ifdef ENABLE_CPPLANG
node->fullName = createParseNode(
node,
TYPENAME_TYPE_FULLNAME(node->gccNode),
"full name");
+#endif
}
}