diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2014-07-13 18:31:32 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2014-07-13 18:31:32 (GMT) |
commit | 8389c41f8dee86a6ee6a71e29011a152b2573a9d (patch) | |
tree | 09cf61c5323010b3ac2c5f38a3cc1ccd6b04e25b | |
parent | 070c35549da108695074239be3ab4268f3722261 (diff) | |
parent | 54ac45bd9f535d13b2bf98e4d71b27b4590c3dc7 (diff) | |
download | Doxygen-8389c41f8dee86a6ee6a71e29011a152b2573a9d.zip Doxygen-8389c41f8dee86a6ee6a71e29011a152b2573a9d.tar.gz Doxygen-8389c41f8dee86a6ee6a71e29011a152b2573a9d.tar.bz2 |
Merge pull request #193 from codemaximus/csprops
Added support for C# property accessors visibility modifiers
-rw-r--r-- | src/context.cpp | 30 | ||||
-rw-r--r-- | src/entry.h | 4 | ||||
-rw-r--r-- | src/memberdef.cpp | 46 | ||||
-rw-r--r-- | src/memberdef.h | 4 | ||||
-rw-r--r-- | src/scanner.l | 4 | ||||
-rw-r--r-- | src/xmlgen.cpp | 16 |
6 files changed, 98 insertions, 6 deletions
diff --git a/src/context.cpp b/src/context.cpp index 05e2a7f..541cb74 100644 --- a/src/context.cpp +++ b/src/context.cpp @@ -2766,7 +2766,11 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private> addProperty("isExplicit", this,&Private::isExplicit); addProperty("isMutable", this,&Private::isMutable); addProperty("isGettable", this,&Private::isGettable); + addProperty("isPrivateGettable", this,&Private::isPrivateGettable); + addProperty("isProtectedGettable", this,&Private::isProtectedGettable); addProperty("isSettable", this,&Private::isSettable); + addProperty("isPrivateSettable", this,&Private::isPrivateSettable); + addProperty("isProtectedSettable", this,&Private::isProtectedSettable); addProperty("isReadable", this,&Private::isReadable); addProperty("isWritable", this,&Private::isWritable); addProperty("isAddable", this,&Private::isAddable); @@ -2855,8 +2859,12 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private> m_cache.propertyAttrs.reset(TemplateList::alloc()); if (md && md->isProperty()) { - if (md->isGettable()) m_cache.propertyAttrs->append("get"); - if (md->isSettable()) m_cache.propertyAttrs->append("set"); + if (md->isGettable()) m_cache.propertyAttrs->append("get"); + if (md->isPrivateGettable()) m_cache.propertyAttrs->append("private get"); + if (md->isProtectedGettable()) m_cache.propertyAttrs->append("protected get"); + if (md->isSettable()) m_cache.propertyAttrs->append("set"); + if (md->isPrivateSettable()) m_cache.propertyAttrs->append("private set"); + if (md->isProtectedSettable()) m_cache.propertyAttrs->append("protected set"); } m_cache.eventAttrs.reset(TemplateList::alloc()); if (md && md->isEvent()) @@ -2948,12 +2956,28 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private> } TemplateVariant isGettable() const { - return m_memberDef->isSettable(); + return m_memberDef->isGettable(); + } + TemplateVariant isPrivateGettable() const + { + return m_memberDef->isPrivateGettable(); + } + TemplateVariant isProtectedGettable() const + { + return m_memberDef->isProtectedGettable(); } TemplateVariant isSettable() const { return m_memberDef->isSettable(); } + TemplateVariant isPrivateSettable() const + { + return m_memberDef->isPrivateSettable(); + } + TemplateVariant isProtectedSettable() const + { + return m_memberDef->isProtectedSettable(); + } TemplateVariant isReadable() const { return m_memberDef->isReadable(); diff --git a/src/entry.h b/src/entry.h index a861906..3e5f3d7 100644 --- a/src/entry.h +++ b/src/entry.h @@ -135,6 +135,10 @@ class Entry static const uint64 Singleton = (1ULL<<14); // UNO IDL // member specifiers (add new items to the beginning) + static const uint64 PrivateGettable = (1ULL<<20); // C# private getter + static const uint64 ProtectedGettable = (1ULL<<21); // C# protected getter + static const uint64 PrivateSettable = (1ULL<<22); // C# private setter + static const uint64 ProtectedSettable = (1ULL<<23); // C# protected setter static const uint64 Inline = (1ULL<<24); static const uint64 Explicit = (1ULL<<25); static const uint64 Mutable = (1ULL<<26); diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 9ef3515..1069b3b 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -1729,15 +1729,27 @@ void MemberDef::writeDeclaration(OutputList &ol, ol.docify(" [implementation]"); ol.endTypewriter(); } + + bool extractPrivate = Config_getBool("EXTRACT_PRIVATE"); - if (isProperty() && (isSettable() || isGettable())) + if (isProperty() && (isSettable() || isGettable() || + isPrivateSettable() || isPrivateGettable() || + isProtectedSettable() || isProtectedGettable())) { ol.writeLatexSpacing(); ol.startTypewriter(); ol.docify(" ["); QStrList sl; - if (isGettable()) sl.append("get"); - if (isSettable()) sl.append("set"); + + if (isGettable()) sl.append("get"); + if (isProtectedGettable()) sl.append("protected get"); + if (isSettable()) sl.append("set"); + if (isProtectedSettable()) sl.append("protected set"); + if (extractPrivate) + { + if (isPrivateGettable()) sl.append("private get"); + if (isPrivateSettable()) sl.append("private set"); + } const char *s=sl.first(); while (s) { @@ -1940,6 +1952,7 @@ void MemberDef::getLabels(QStrList &sl,Definition *container) const //ol.docify(" ["); SrcLangExt lang = getLanguage(); bool optVhdl = lang==SrcLangExt_VHDL; + bool extractPrivate = Config_getBool("EXTRACT_PRIVATE"); if (optVhdl) { sl.append(VhdlDocGen::trTypeString(getMemberSpecifiers())); @@ -1955,7 +1968,14 @@ void MemberDef::getLabels(QStrList &sl,Definition *container) const if (isMutable()) sl.append("mutable"); if (isStatic()) sl.append("static"); if (isGettable()) sl.append("get"); + if (isProtectedGettable()) sl.append("protected get"); if (isSettable()) sl.append("set"); + if (isProtectedSettable()) sl.append("protected set"); + if (extractPrivate) + { + if (isPrivateGettable()) sl.append("private get"); + if (isPrivateSettable()) sl.append("private set"); + } if (isAddable()) sl.append("add"); if (!isUNOProperty() && isRemovable()) sl.append("remove"); if (isRaisable()) sl.append("raise"); @@ -4193,11 +4213,31 @@ bool MemberDef::isGettable() const return (m_impl->memSpec&Entry::Gettable)!=0; } +bool MemberDef::isPrivateGettable() const +{ + return (m_impl->memSpec&Entry::PrivateGettable)!=0; +} + +bool MemberDef::isProtectedGettable() const +{ + return (m_impl->memSpec&Entry::ProtectedGettable)!=0; +} + bool MemberDef::isSettable() const { return (m_impl->memSpec&Entry::Settable)!=0; } +bool MemberDef::isPrivateSettable() const +{ + return (m_impl->memSpec&Entry::PrivateSettable)!=0; +} + +bool MemberDef::isProtectedSettable() const +{ + return (m_impl->memSpec&Entry::ProtectedSettable)!=0; +} + bool MemberDef::isAddable() const { return (m_impl->memSpec&Entry::Addable)!=0; diff --git a/src/memberdef.h b/src/memberdef.h index 3259102..b3c671f 100644 --- a/src/memberdef.h +++ b/src/memberdef.h @@ -123,7 +123,11 @@ class MemberDef : public Definition bool isExplicit() const; bool isMutable() const; bool isGettable() const; + bool isPrivateGettable() const; + bool isProtectedGettable() const; bool isSettable() const; + bool isPrivateSettable() const; + bool isProtectedSettable() const; bool isReadable() const; bool isWritable() const; bool isAddable() const; diff --git a/src/scanner.l b/src/scanner.l index a39d02e..50e3b18 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -6129,6 +6129,10 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) BEGIN(FindMembers); } } +<CSAccessorDecl>"private "{BN}*"set" { if (curlyCount==0) current->spec |= Entry::PrivateSettable; } +<CSAccessorDecl>"protected "{BN}*"set" { if (curlyCount==0) current->spec |= Entry::ProtectedSettable; } +<CSAccessorDecl>"private "{BN}*"get" { if (curlyCount==0) current->spec |= Entry::PrivateGettable; } +<CSAccessorDecl>"protected "{BN}*"get" { if (curlyCount==0) current->spec |= Entry::ProtectedGettable; } <CSAccessorDecl>"set" { if (curlyCount==0) current->spec |= Entry::Settable; } <CSAccessorDecl>"get" { if (curlyCount==0) current->spec |= Entry::Gettable; } <CSAccessorDecl>"add" { if (curlyCount==0) current->spec |= Entry::Addable; } diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp index efddcd4..2bb5734 100644 --- a/src/xmlgen.cpp +++ b/src/xmlgen.cpp @@ -727,10 +727,26 @@ static void generateXMLForMember(MemberDef *md,FTextStream &ti,FTextStream &t,De if (md->isGettable()) t << "yes"; else t << "no"; t << "\""; + t << " privategettable=\""; + if (md->isPrivateGettable()) t << "yes"; else t << "no"; + t << "\""; + + t << " protectedgettable=\""; + if (md->isProtectedGettable()) t << "yes"; else t << "no"; + t << "\""; + t << " settable=\""; if (md->isSettable()) t << "yes"; else t << "no"; t << "\""; + t << " privatesettable=\""; + if (md->isPrivateSettable()) t << "yes"; else t << "no"; + t << "\""; + + t << " protectedsettable=\""; + if (md->isProtectedSettable()) t << "yes"; else t << "no"; + t << "\""; + if (md->isAssign() || md->isCopy() || md->isRetain() || md->isStrong() || md->isWeak()) { t << " accessor=\""; |