summaryrefslogtreecommitdiff
path: root/src/parsers
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-07-21 18:22:35 +0300
committerAndrei Karas <akaras@inbox.ru>2015-07-21 18:22:35 +0300
commitbb3d13f93d26d281b6c78dc47dc94e8507f26b6f (patch)
treecf9dc23ee1edef953abc4e2e355071858f849d44 /src/parsers
parentcfdf4361c7d0d8983d407c3a791207f16901683e (diff)
downloadparanucker-bb3d13f93d26d281b6c78dc47dc94e8507f26b6f.tar.gz
paranucker-bb3d13f93d26d281b6c78dc47dc94e8507f26b6f.tar.bz2
paranucker-bb3d13f93d26d281b6c78dc47dc94e8507f26b6f.tar.xz
paranucker-bb3d13f93d26d281b6c78dc47dc94e8507f26b6f.zip
Add to parsers to get fields type. Limit type pointers to parse only one child nodes level.
Diffstat (limited to 'src/parsers')
-rw-r--r--src/parsers/decl/field_decl.cpp6
-rw-r--r--src/parsers/type/pointer_type.cpp3
-rw-r--r--src/parsers/type/record_type.cpp3
-rw-r--r--src/parsers/type/reference_type.cpp3
-rw-r--r--src/parsers/type/typename_type.cpp4
-rw-r--r--src/parsers/type/union_type.cpp4
-rw-r--r--src/parsers/type/vector_type.cpp4
-rw-r--r--src/parsers/type/void_type.cpp3
8 files changed, 20 insertions, 10 deletions
diff --git a/src/parsers/decl/field_decl.cpp b/src/parsers/decl/field_decl.cpp
index 1d425b9..e7521fd 100644
--- a/src/parsers/decl/field_decl.cpp
+++ b/src/parsers/decl/field_decl.cpp
@@ -70,6 +70,12 @@ void parseFieldDeclNode(FieldDeclNode *node)
node,
DECL_QUALIFIER(node->gccNode),
"qualifier");
+
+ node->fieldType = static_cast<TypeNode*>(createParseNode(
+ node,
+ TREE_TYPE(node->gccNode),
+ "field type",
+ node->parseChilds));
}
}
diff --git a/src/parsers/type/pointer_type.cpp b/src/parsers/type/pointer_type.cpp
index 42cafd3..d15bc52 100644
--- a/src/parsers/type/pointer_type.cpp
+++ b/src/parsers/type/pointer_type.cpp
@@ -41,7 +41,8 @@ void parsePointerTypeNode(PointerTypeNode *node)
node->nestedType = static_cast<TypeNode*>(createParseNode(
node,
TREE_TYPE(node->gccNode),
- "nested type"));
+ "nested type",
+ false));
}
}
diff --git a/src/parsers/type/record_type.cpp b/src/parsers/type/record_type.cpp
index 2db2d12..f7ba01a 100644
--- a/src/parsers/type/record_type.cpp
+++ b/src/parsers/type/record_type.cpp
@@ -33,12 +33,13 @@ void parseRecordTypeNode(RecordTypeNode *node)
fillType(node);
Log::dump(node);
- fillTypeName(node);
fillTypeAttributes(node);
if (!node->parseChilds)
return;
+ fillTypeName(node);
+
FOR_CHAIN(node->gccNode, it, TYPE_FIELDS, DECL_CHAIN)
{
node->fields.push_back(static_cast<DeclNode*>(
diff --git a/src/parsers/type/reference_type.cpp b/src/parsers/type/reference_type.cpp
index a225f5f..6642431 100644
--- a/src/parsers/type/reference_type.cpp
+++ b/src/parsers/type/reference_type.cpp
@@ -33,11 +33,12 @@ void parseReferenceTypeNode(ReferenceTypeNode *node)
fillType(node);
Log::dump(node);
+ fillTypeAttributes(node);
+
if (!node->parseChilds)
return;
fillTypeName(node);
- fillTypeAttributes(node);
node->nestedType = static_cast<TypeNode*>(createParseNode(
node,
TREE_TYPE(node->gccNode),
diff --git a/src/parsers/type/typename_type.cpp b/src/parsers/type/typename_type.cpp
index c295b79..053d87f 100644
--- a/src/parsers/type/typename_type.cpp
+++ b/src/parsers/type/typename_type.cpp
@@ -39,12 +39,12 @@ void parseTypeNameTypeNode(TypeNameTypeNode *node)
setPrintField(node, TYPENAME_IS_RESOLVING_P, isResolving);
#endif
+ fillTypeAttributes(node);
+
if (!node->parseChilds)
return;
fillTypeName(node);
- fillTypeAttributes(node);
-
#ifdef ENABLE_CXXLANG
node->fullName = createParseNode(
node,
diff --git a/src/parsers/type/union_type.cpp b/src/parsers/type/union_type.cpp
index 392dd63..5788397 100644
--- a/src/parsers/type/union_type.cpp
+++ b/src/parsers/type/union_type.cpp
@@ -33,12 +33,12 @@ void parseUnionTypeNode(UnionTypeNode *node)
fillType(node);
Log::dump(node);
+ fillTypeAttributes(node);
+
if (!node->parseChilds)
return;
fillTypeName(node);
- fillTypeAttributes(node);
-
FOR_CHAIN(node->gccNode, it, TYPE_FIELDS, DECL_CHAIN)
{
node->fields.push_back(static_cast<DeclNode*>(
diff --git a/src/parsers/type/vector_type.cpp b/src/parsers/type/vector_type.cpp
index 82dfac8..adcb003 100644
--- a/src/parsers/type/vector_type.cpp
+++ b/src/parsers/type/vector_type.cpp
@@ -35,12 +35,12 @@ void parseVectorTypeNode(VectorTypeNode *node)
setPrintField(node, TYPE_VECTOR_SUBPARTS, vectorSize);
+ fillTypeAttributes(node);
+
if (!node->parseChilds)
return;
fillTypeName(node);
- fillTypeAttributes(node);
-
// TREE_TYPE - element type
node->elementType = static_cast<TypeNode*>(createParseNode(
diff --git a/src/parsers/type/void_type.cpp b/src/parsers/type/void_type.cpp
index b7881e0..a76deb2 100644
--- a/src/parsers/type/void_type.cpp
+++ b/src/parsers/type/void_type.cpp
@@ -33,11 +33,12 @@ void parseVoidTypeNode(VoidTypeNode *node)
fillType(node);
Log::dump(node);
+ fillTypeAttributes(node);
+
if (!node->parseChilds)
return;
fillTypeName(node);
- fillTypeAttributes(node);
}
}