[Libreoffice-commits] .: 3 commits - codemaker/source cppuhelper/inc idlc/inc idlc/source solenv/bin solenv/gbuild

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Fri Nov 23 05:05:13 PST 2012


 codemaker/source/cppumaker/cpputype.cxx |   35 +++++++++++++++++++++++++++++---
 codemaker/source/cppumaker/cpputype.hxx |    1 
 cppuhelper/inc/cppuhelper/weakagg.hxx   |    1 
 idlc/inc/idlc/idlc.hxx                  |    2 -
 idlc/source/astdeclaration.cxx          |    3 --
 idlc/source/idlc.cxx                    |   16 ++++++++++----
 solenv/bin/concat-deps.c                |    4 ---
 solenv/gbuild/UnoApiTarget.mk           |    2 -
 8 files changed, 48 insertions(+), 16 deletions(-)

New commits:
commit 44ea5d14140cccdc77a5fd8e2473804e879880df
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Nov 23 13:41:15 2012 +0100

    Adding SAL_DEPRECATED_INTERNAL to an implementation function is pointless
    
    ...as there are typically no direct calls to it anyway.  What is apparently
    needed is to decorate the cppumaker-generated headers instead:
    
    * cppumaker obtains deprecation-information from the documentation strings in
      .rdb files.  As these are normally generated by idlc without documentation
      included (no -C), idlc got changed to nevertheless contain documentation
      consisting of just "@deprecated" in this case, to allow to easily tunnel this
      information to cppumaker always.
    
    * The mechanism of parsing for "@deprecated" in documentation strings is
      somewhat crude, of course.
    
    * For now, cppumaker only decorates C++ functions that correspond to UNOIDL
      interface attributes and methods.  More should be possible (but, e.g., being
      able to decorate a complete C++ class corresponding to a deprecated UNOIDL
      interface type depends on whether all platforms would accept
      SAL_DEPRECATED_INTERNAL at the same position in a C++ class declaration.
    
    * This could also be extended to other languages than C++/cppumaker.
    
    * Always using SAL_DEPRECATED_INERNAL instead of SAL_DEPRECATED for decoration
      is to keep things simple and our codebase working.  Improvements are possible
      here, too, of course.
    
    Change-Id: Ia2917892f780d477652e4cd9f286588a6898c3f5

diff --git a/codemaker/source/cppumaker/cpputype.cxx b/codemaker/source/cppumaker/cpputype.cxx
index eca0143..149653f 100644
--- a/codemaker/source/cppumaker/cpputype.cxx
+++ b/codemaker/source/cppumaker/cpputype.cxx
@@ -1354,6 +1354,22 @@ OString CppuType::indent() const
 //*************************************************************************
 // InterfaceType
 //*************************************************************************
+
+namespace {
+
+bool isDocumentedDeprecated(OUString const & documentation) {
+    return documentation.indexOf("@deprecated") != -1;
+        //TODO: this check is somewhat crude
+}
+
+void dumpDeprecation(FileStream & o, bool deprecated) {
+    if (deprecated) {
+        o << "SAL_DEPRECATED_INTERNAL(\"marked @deprecated in UNOIDL\") ";
+    }
+}
+
+}
+
 InterfaceType::InterfaceType(typereg::Reader& typeReader,
                               const OString& typeName,
                              const TypeManager& typeMgr)
@@ -1362,6 +1378,7 @@ InterfaceType::InterfaceType(typereg::Reader& typeReader,
     m_inheritedMemberCount = 0;
     m_hasAttributes = false;
     m_hasMethods = false;
+    m_isDeprecated = isDocumentedDeprecated(m_reader.getDocumentation());
 }
 
 InterfaceType::~InterfaceType()
@@ -1465,13 +1482,18 @@ void InterfaceType::dumpAttributes(FileStream& o)
         fieldType = rtl::OUStringToOString(
             m_reader.getFieldTypeName(i), RTL_TEXTENCODING_UTF8);
 
+        bool depr = m_isDeprecated
+            || isDocumentedDeprecated(m_reader.getFieldDocumentation(i));
+
         if (first)
         {
             first = sal_False;
             o << "\n" << indent() << "// Attributes\n";
         }
 
-        o << indent() << "virtual ";
+        o << indent();
+        dumpDeprecation(o, depr);
+        o << "virtual ";
         dumpType(o, fieldType);
         o << " SAL_CALL get" << fieldName << "()";
         dumpAttributeExceptionSpecification(o, name, RT_MODE_ATTRIBUTE_GET);
@@ -1480,7 +1502,9 @@ void InterfaceType::dumpAttributes(FileStream& o)
         if ((access & RT_ACCESS_READONLY) == 0)
         {
             bool byRef = passByReference(fieldType);
-            o << indent() << "virtual void SAL_CALL set" << fieldName << "( ";
+            o << indent();
+            dumpDeprecation(o, depr);
+            o << "virtual void SAL_CALL set" << fieldName << "( ";
             dumpType(o, fieldType, byRef, byRef);
             o << " _" << fieldName.toAsciiLowerCase() << " )";
             dumpAttributeExceptionSpecification(o, name, RT_MODE_ATTRIBUTE_SET);
@@ -1529,7 +1553,12 @@ void InterfaceType::dumpMethods(FileStream& o)
             o << "\n" << indent() << "// Methods\n";
         }
 
-        o << indent() << "virtual ";
+        o << indent();
+        dumpDeprecation(
+            o,
+            (m_isDeprecated
+             || isDocumentedDeprecated(m_reader.getMethodDocumentation(i))));
+        o << "virtual ";
         dumpType(o, returnType);
         o << " SAL_CALL " << methodName << "( ";
         for (sal_uInt16 j=0; j < paramCount; j++)
diff --git a/codemaker/source/cppumaker/cpputype.hxx b/codemaker/source/cppumaker/cpputype.hxx
index a2781cb..12abd54 100644
--- a/codemaker/source/cppumaker/cpputype.hxx
+++ b/codemaker/source/cppumaker/cpputype.hxx
@@ -191,6 +191,7 @@ protected:
     sal_uInt32  m_inheritedMemberCount;
     bool        m_hasAttributes;
     bool        m_hasMethods;
+    bool        m_isDeprecated;
 
 private:
     void dumpExceptionSpecification(
diff --git a/cppuhelper/inc/cppuhelper/weakagg.hxx b/cppuhelper/inc/cppuhelper/weakagg.hxx
index f4ae380..094e178 100644
--- a/cppuhelper/inc/cppuhelper/weakagg.hxx
+++ b/cppuhelper/inc/cppuhelper/weakagg.hxx
@@ -79,7 +79,6 @@ public:
 
         @param Delegator the object that delegate its queryInterface to this aggregate.
     */
-    SAL_DEPRECATED_INTERNAL("do not use XAggregation")
     virtual void SAL_CALL setDelegator( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & Delegator )
         throw(::com::sun::star::uno::RuntimeException);
     /** Called by the delegator or queryInterface. Re-implement this method instead of
diff --git a/idlc/inc/idlc/idlc.hxx b/idlc/inc/idlc/idlc.hxx
index df11060..30f5436 100644
--- a/idlc/inc/idlc/idlc.hxx
+++ b/idlc/inc/idlc/idlc.hxx
@@ -78,7 +78,7 @@ public:
             m_documentation = documentation;
             m_bIsDocValid = sal_True;
         }
-    sal_Bool isDocValid();
+    OUString processDocumentation();
     sal_Bool isInMainFile()
         { return m_bIsInMainfile; }
     void setInMainfile(sal_Bool bInMainfile)
diff --git a/idlc/source/astdeclaration.cxx b/idlc/source/astdeclaration.cxx
index 7a1bf31..ef09963 100644
--- a/idlc/source/astdeclaration.cxx
+++ b/idlc/source/astdeclaration.cxx
@@ -76,8 +76,7 @@ AstDeclaration::AstDeclaration(NodeType type, const OString& name, AstScope* pSc
         m_bImported = sal_True;
     }
 
-    if ( idlc()->isDocValid() )
-        m_documentation = OStringToOUString(idlc()->getDocumentation(), RTL_TEXTENCODING_UTF8);
+    m_documentation = idlc()->processDocumentation();
 
     m_bPublished = idlc()->isPublished();
 }
diff --git a/idlc/source/idlc.cxx b/idlc/source/idlc.cxx
index a064e7b..895a545 100644
--- a/idlc/source/idlc.cxx
+++ b/idlc/source/idlc.cxx
@@ -274,11 +274,19 @@ void Idlc::reset()
     m_includes.clear();
 }
 
-sal_Bool Idlc::isDocValid()
+OUString Idlc::processDocumentation()
 {
-    if ( m_bGenerateDoc )
-        return m_bIsDocValid;
-    return sal_False;;
+    OUString doc;
+    if (m_bIsDocValid) {
+        OString raw(getDocumentation());
+        if (m_bGenerateDoc) {
+            doc = OStringToOUString(raw, RTL_TEXTENCODING_UTF8);
+        } else if (raw.indexOf("@deprecated") != -1) {
+            //TODO: this check is somewhat crude
+            doc = "@deprecated";
+        }
+    }
+    return doc;
 }
 
 static void lcl_writeString(::osl::File & rFile, ::osl::FileBase::RC & o_rRC,
commit ae41f950425f8f832e4a41e47c788b45fdbf243b
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Nov 23 13:39:54 2012 +0100

    Ignoring dependencies on .hdl files is unsound when cppumaker changes
    
    ...as it will do in one of the following commits.
    
    Change-Id: Ic13c0d398943d34dffbc1a87efcac213d6699ca9

diff --git a/solenv/bin/concat-deps.c b/solenv/bin/concat-deps.c
index 813c39d..19e4c9a 100644
--- a/solenv/bin/concat-deps.c
+++ b/solenv/bin/concat-deps.c
@@ -731,10 +731,6 @@ elide_dependency(const char* key, int key_len,
     }
 #endif
 
-    /* .hdl files are always matched by .hpp */
-    if (key_len > 4 && !PATHNCMP(key + key_len - 4, ".hdl", 4))
-        return 1;
-
     /* boost brings a plague of header files */
     int i;
     int boost = 0;
commit 800f388206b15db545d8b96d5546b766a4fc7b32
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Nov 23 13:37:40 2012 +0100

    Only rebuilding .urd for newer .idl is unsound when idlc changes
    
    ...as it will do in one of the following commits.
    
    Change-Id: Ie243504db965e3a4803c593b9c09f12d2cb0fcfc

diff --git a/solenv/gbuild/UnoApiTarget.mk b/solenv/gbuild/UnoApiTarget.mk
index d5da154..9bd5d1e 100644
--- a/solenv/gbuild/UnoApiTarget.mk
+++ b/solenv/gbuild/UnoApiTarget.mk
@@ -70,7 +70,7 @@ endef
 $(call gb_UnoApiPartTarget_get_target,%.done) : \
 		$(gb_UnoApiPartTarget_IDLCTARGET) \
 		| $(gb_UCPPTARGET)
-	$(call gb_UnoApiPartTarget__command,$@,$*,$(filter-out $(gb_UnoApiPartTarget_IDLCTARGET),$?))
+	$(call gb_UnoApiPartTarget__command,$@,$*,$(filter-out $(gb_UnoApiPartTarget_IDLCTARGET),$^))
 
 ifeq ($(gb_FULLDEPS),$(true))
 


More information about the Libreoffice-commits mailing list