Skip to content

Commit

Permalink
split tranche access to separate vector
Browse files Browse the repository at this point in the history
  • Loading branch information
vinniefalco committed May 14, 2023
1 parent 7c21e67 commit f17057b
Show file tree
Hide file tree
Showing 10 changed files with 183 additions and 132 deletions.
12 changes: 6 additions & 6 deletions include/mrdox/Corpus.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,12 +108,12 @@ class MRDOX_VISIBLE
MRDOX_DECL virtual bool visit(EnumInfo const&);
MRDOX_DECL virtual bool visit(VarInfo const&);

MRDOX_DECL virtual bool visit(DataMember const&);
MRDOX_DECL virtual bool visit(MemberEnum const&);
MRDOX_DECL virtual bool visit(MemberFunction const&);
MRDOX_DECL virtual bool visit(MemberRecord const&);
MRDOX_DECL virtual bool visit(MemberType const&);
MRDOX_DECL virtual bool visit(StaticDataMember const&);
MRDOX_DECL virtual bool visit(DataMember const&, Access);
MRDOX_DECL virtual bool visit(MemberEnum const&, Access);
MRDOX_DECL virtual bool visit(MemberFunction const&, Access);
MRDOX_DECL virtual bool visit(MemberRecord const&, Access);
MRDOX_DECL virtual bool visit(MemberType const&, Access);
MRDOX_DECL virtual bool visit(StaticDataMember const&, Access);
};

/** Traverse the symbol, list, or its children.
Expand Down
41 changes: 20 additions & 21 deletions include/mrdox/Metadata/Function.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,29 +35,28 @@ union FnFlags0
{
BitFieldFullValue raw;

BitFlag<0> isVariadic;
BitFlag<1> isVirtual;
BitFlag<2> isVirtualAsWritten;
BitFlag<3> isPure;
BitFlag<4> isDefaulted;
BitFlag<5> isExplicitlyDefaulted;
BitFlag<6> isDeleted;
BitFlag<7> isDeletedAsWritten;
BitFlag<8> isNoReturn;

BitFlag<9> hasOverrideAttr;
BitFlag<10> hasTrailingReturn;
BitField<11, 2, ConstexprSpecKind> constexprKind;
BitField<13, 4, ExceptionSpecificationType> exceptionSpecType;
BitField<17, 6, OverloadedOperatorKind> overloadedOperator;
BitField<23, 3, StorageClass> storageClass;
BitFlag<26> isConst;
BitFlag<27> isVolatile;
BitField<28, 2, RefQualifierKind> refQualifier;
BitFlag < 0> isVariadic;
BitFlag < 1> isVirtual;
BitFlag < 2> isVirtualAsWritten;
BitFlag < 3> isPure;
BitFlag < 4> isDefaulted;
BitFlag < 5> isExplicitlyDefaulted;
BitFlag < 6> isDeleted;
BitFlag < 7> isDeletedAsWritten;
BitFlag < 8> isNoReturn;
BitFlag < 9> hasOverrideAttr;
BitFlag <10> hasTrailingReturn;
BitFlag <11> isConst;
BitFlag <12> isVolatile;
BitField<13> isFinal;

BitField<14, 2, ConstexprSpecKind> constexprKind;
BitField<16, 4, ExceptionSpecificationType> exceptionSpecType;
BitField<20, 6, OverloadedOperatorKind> overloadedOperator;
BitField<26, 3, StorageClass> storageClass;
BitField<29, 2, RefQualifierKind> refQualifier;
};



/** Bit field used with function specifiers.
*/
union FnFlags1
Expand Down
6 changes: 0 additions & 6 deletions include/mrdox/Metadata/Members.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,42 +28,36 @@ struct DataMember
{
MemberTypeInfo const* I;
RecordInfo const* From;
Access access;
};

struct MemberEnum
{
EnumInfo const* I;
RecordInfo const* From;
Access access;
};

struct MemberFunction
{
FunctionInfo const* I;
RecordInfo const* From;
Access access;
};

struct MemberRecord
{
RecordInfo const* I;
RecordInfo const* From;
Access access;
};

struct MemberType
{
TypedefInfo const* I;
RecordInfo const* From;
Access access;
};

struct StaticDataMember
{
VarInfo const* I;
RecordInfo const* From;
Access access;
};

} // mrdox
Expand Down
20 changes: 19 additions & 1 deletion source/lib/api/AST/ASTVisitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -796,6 +796,7 @@ constructFunction(
I.specs0.isConst = D->isConst();
I.specs0.isVolatile = D->isVolatile();
I.specs0.refQualifier = D->getRefQualifier();
I.specs0.isFinal = D->template hasAttr<FinalAttr>();
//D->isCopyAssignmentOperator()
//D->isMoveAssignmentOperator()
//D->isOverloadedOperator();
Expand Down Expand Up @@ -947,8 +948,25 @@ buildRecord(
}
}

AccessSpecifier access;
if(auto CT = D->getDescribedClassTemplate())
{
access = CT->getAccess();
}
else if(auto MSI = D->getMemberSpecializationInfo())
{
access = MSI->getInstantiatedFrom()->getAccess();
}
else if(auto* CTSD = dyn_cast<ClassTemplateSpecializationDecl>(D))
{
access = CTSD->getSpecializedTemplate()->getAccess();
}
else
{
access = D->getAccess();
}
insertBitcode(ex_, writeBitcode(I));
insertBitcode(ex_, writeParent(std::move(I), D->getAccess()));
insertBitcode(ex_, writeParent(std::move(I), access));
}

void
Expand Down
39 changes: 17 additions & 22 deletions source/lib/api/Corpus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,39 +112,34 @@ bool Corpus::Visitor::visit(VarInfo const&)

//---

bool Corpus::Visitor::visit(DataMember const&)
bool Corpus::Visitor::visit(DataMember const&, Access)
{
return true;
}

bool Corpus::Visitor::visit(MemberEnum const& I)
bool Corpus::Visitor::visit(MemberEnum const& I, Access)
{
return visit(*I.I);
// return true;
return true;
}

bool Corpus::Visitor::visit(MemberFunction const& I)
bool Corpus::Visitor::visit(MemberFunction const& I, Access)
{
return visit(*I.I);
// return true;
return true;
}

bool Corpus::Visitor::visit(MemberRecord const& I)
bool Corpus::Visitor::visit(MemberRecord const& I, Access)
{
return visit(*I.I);
// return true;
return true;
}

bool Corpus::Visitor::visit(MemberType const& I)
bool Corpus::Visitor::visit(MemberType const& I, Access)
{
return visit(*I.I);
// return true;
return true;
}

bool Corpus::Visitor::visit(StaticDataMember const& I)
bool Corpus::Visitor::visit(StaticDataMember const& I, Access)
{
return visit(*I.I);
// return true;
return true;
}


Expand Down Expand Up @@ -211,30 +206,30 @@ traverse(
for(auto const& t : I.Children_.Records)
if(! f.visit(MemberRecord{
&get<RecordInfo>(t.id),
&I, t.access}))
&I}, t.access))
return false;
for(auto const& t : I.Children_.Functions)
if(! f.visit(MemberFunction{
&get<FunctionInfo>(t.id),
&I, t.access}))
&I}, t.access))
return false;
for(auto const& t : I.Children_.Types)
if(! f.visit(MemberType{
&get<TypedefInfo>(t.id),
&I, t.access}))
&I}, t.access))
return false;
for(auto const& t : I.Children_.Enums)
if(! f.visit(MemberEnum{
&get<EnumInfo>(t.id),
&I, t.access}))
&I}, t.access))
return false;
for(auto const& t : I.Children_.Vars)
if(! f.visit(StaticDataMember{
&get<VarInfo>(t.id),
&I, t.access}))
&I}, t.access))
return false;
for(auto const& t : I.Members)
if(! f.visit(DataMember{&t, &I, t.access}))
if(! f.visit(DataMember{&t, &I}, t.access))
return false;
return true;
}
Expand Down
Loading

0 comments on commit f17057b

Please sign in to comment.