~ubuntu-branches/ubuntu/karmic/openoffice.org-l10n/karmic

« back to all changes in this revision

Viewing changes to ooo-build/patches/src680/sc-xls-pivot-optimization.diff

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2006-04-27 19:29:22 UTC
  • Revision ID: james.westby@ubuntu.com-20060427192922-2dburxv3b63f8v0u
Tags: 2.0.2-2ubuntu5
* Copy of the openoffice.org source.
  - debian/control.in: Change source name.
  - debian/changelog: Change source name.
  - debian/control: Regenerate control file.
* Add kurdish translations exported from Rosetta (2006-04-18).
* Workaround bad message strings in recently included GSI files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Index: sc/inc/dpsave.hxx
 
2
===================================================================
 
3
RCS file: /cvs/sc/sc/inc/dpsave.hxx,v
 
4
retrieving revision 1.8
 
5
diff -u -w -p -r1.8 dpsave.hxx
 
6
--- sc/inc/dpsave.hxx   8 Sep 2005 17:35:34 -0000       1.8
 
7
+++ sc/inc/dpsave.hxx   27 Mar 2006 16:39:40 -0000
 
8
@@ -51,6 +51,7 @@
 
9
 #ifndef INCLUDED_SCDLLAPI_H
 
10
 #include "scdllapi.h"
 
11
 #endif
 
12
+#include <hash_map>
 
13
 
 
14
 namespace com { namespace sun { namespace star { namespace sheet {
 
15
     struct DataPilotFieldReference;
 
16
@@ -119,8 +120,15 @@ private:
 
17
     ::com::sun::star::sheet::DataPilotFieldSortInfo*  pSortInfo;            // (level)
 
18
     ::com::sun::star::sheet::DataPilotFieldAutoShowInfo* pAutoShowInfo;     // (level)
 
19
     ::com::sun::star::sheet::DataPilotFieldLayoutInfo* pLayoutInfo;         // (level)
 
20
-       List            aMemberList;
 
21
 
 
22
+       struct MemberHashFunc : public std::unary_function< const String &, size_t >
 
23
+       {
 
24
+               size_t operator() (const String &member_name) const;
 
25
+       };
 
26
+public :
 
27
+       typedef std::hash_map <String, ScDPSaveMember *, MemberHashFunc> MemberHash;
 
28
+private :
 
29
+       MemberHash aMembers;
 
30
 public:
 
31
                                                        ScDPSaveDimension(const String& rName, BOOL bDataLayout);
 
32
                                                        ScDPSaveDimension(const ScDPSaveDimension& r);
 
33
@@ -129,8 +137,8 @@ public:
 
34
 
 
35
        BOOL                                    operator== ( const ScDPSaveDimension& r ) const;
 
36
 
 
37
-    const List&             GetMembers() const { return aMemberList; }
 
38
-       void                                    AddMember(ScDPSaveMember* pMember) { aMemberList.Insert(pMember, LIST_APPEND); };
 
39
+    const MemberHash&       GetMembers() const { return aMembers; }
 
40
+       void                                    AddMember(ScDPSaveMember* pMember) { aMembers[pMember->GetName()] = pMember; }
 
41
 
 
42
        void                                    SetDupFlag(BOOL bSet)   { bDupFlag = bSet; }
 
43
        BOOL                                    GetDupFlag() const              { return bDupFlag; }
 
44
Index: sc/source/core/data/dpsave.cxx
 
45
===================================================================
 
46
RCS file: /cvs/sc/sc/source/core/data/dpsave.cxx,v
 
47
retrieving revision 1.8
 
48
diff -u -w -p -r1.8 dpsave.cxx
 
49
--- sc/source/core/data/dpsave.cxx      8 Sep 2005 18:23:28 -0000       1.8
 
50
+++ sc/source/core/data/dpsave.cxx      27 Mar 2006 16:39:41 -0000
 
51
@@ -214,6 +214,11 @@ void ScDPSaveMember::WriteToSource( cons
 
52
 
 
53
 // -----------------------------------------------------------------------
 
54
 
 
55
+size_t ScDPSaveDimension::MemberHashFunc::operator()(const String & member_name) const
 
56
+{
 
57
+    return rtl_ustr_hashCode_WithLength( member_name.GetBuffer(), member_name.Len() );
 
58
+}
 
59
+
 
60
 ScDPSaveDimension::ScDPSaveDimension(const String& rName, BOOL bDataLayout) :
 
61
        aName( rName ),
 
62
        bIsDataLayout( bDataLayout ),
 
63
@@ -253,11 +258,10 @@ ScDPSaveDimension::ScDPSaveDimension(con
 
64
                        pSubTotalFuncs[nSub] = r.pSubTotalFuncs[nSub];
 
65
        }
 
66
 
 
67
-       long nCount = r.aMemberList.Count();
 
68
-       for (long i=0; i<nCount; i++)
 
69
+       for (MemberHash::const_iterator i=r.aMembers.begin(); i != r.aMembers.end() ; i++)
 
70
        {
 
71
-               ScDPSaveMember* pNew = new ScDPSaveMember( *(ScDPSaveMember*)r.aMemberList.GetObject(i) );
 
72
-               aMemberList.Insert( pNew, LIST_APPEND );
 
73
+               ScDPSaveMember* pNew = new ScDPSaveMember( *i->second );
 
74
+               aMembers[pNew->GetName()] = pNew;
 
75
        }
 
76
        if (r.pReferenceValue)
 
77
                pReferenceValue = new sheet::DataPilotFieldReference( *(r.pReferenceValue) );
 
78
@@ -318,7 +322,7 @@ ScDPSaveDimension::ScDPSaveDimension(SvS
 
79
        for (i=0; i<nNewCount; i++)
 
80
        {
 
81
                ScDPSaveMember* pNew = new ScDPSaveMember( rStream );
 
82
-               aMemberList.Insert( pNew, LIST_APPEND );
 
83
+               aMembers[pNew->GetName()] = pNew;
 
84
        }
 
85
        pReferenceValue = NULL;
 
86
     pSortInfo = NULL;
 
87
@@ -352,21 +356,16 @@ void ScDPSaveDimension::Store( SvStream&
 
88
 
 
89
        rStream << (USHORT) 0;  // nExtra
 
90
 
 
91
-       long nCount = aMemberList.Count();
 
92
+       long nCount = aMembers.size();
 
93
        rStream << nCount;
 
94
-       for (i=0; i<nCount; i++)
 
95
-       {
 
96
-               const ScDPSaveMember* pMember = (const ScDPSaveMember*)aMemberList.GetObject(i);
 
97
-               pMember->Store( rStream );
 
98
-       }
 
99
+       for (MemberHash::const_iterator i=aMembers.begin(); i != aMembers.end() ; i++)
 
100
+               i->second->Store( rStream );
 
101
 }
 
102
 
 
103
 ScDPSaveDimension::~ScDPSaveDimension()
 
104
 {
 
105
-       long nCount = aMemberList.Count();
 
106
-       for (long i=0; i<nCount; i++)
 
107
-               delete (ScDPSaveMember*)aMemberList.GetObject(i);
 
108
-       aMemberList.Clear();
 
109
+       for (MemberHash::const_iterator i=aMembers.begin(); i != aMembers.end() ; i++)
 
110
+               delete i->second;
 
111
        delete pReferenceValue;
 
112
     delete pSortInfo;
 
113
     delete pAutoShowInfo;
 
114
@@ -397,13 +396,13 @@ BOOL ScDPSaveDimension::operator== ( con
 
115
                if ( pSubTotalFuncs[i] != r.pSubTotalFuncs[i] )
 
116
                        return FALSE;
 
117
 
 
118
-       long nCount = aMemberList.Count();
 
119
-       if ( nCount != r.aMemberList.Count() )
 
120
+       if (aMembers.size() != r.aMembers.size() )
 
121
                return FALSE;
 
122
 
 
123
-       for (i=0; i<nCount; i++)
 
124
-               if ( !( *(ScDPSaveMember*)aMemberList.GetObject(i) ==
 
125
-                               *(ScDPSaveMember*)r.aMemberList.GetObject(i) ) )
 
126
+       MemberHash::const_iterator a=aMembers.begin();
 
127
+       MemberHash::const_iterator b=r.aMembers.begin();
 
128
+       for (; a != aMembers.end() ; ++a, ++b)
 
129
+               if (!(*(a->second) == *(b->second)))
 
130
                        return FALSE;
 
131
 
 
132
        return TRUE;
 
133
@@ -551,26 +550,21 @@ const String& ScDPSaveDimension::GetCurr
 
134
 
 
135
 ScDPSaveMember* ScDPSaveDimension::GetExistingMemberByName(const String& rName)
 
136
 {
 
137
-       long nCount = aMemberList.Count();
 
138
-       for (long i=0; i<nCount; i++)
 
139
-       {
 
140
-               ScDPSaveMember* pMember = (ScDPSaveMember*)aMemberList.GetObject(i);
 
141
-               if ( pMember->GetName() == rName )
 
142
-                       return pMember;
 
143
-       }
 
144
+       MemberHash::const_iterator res = aMembers.find (rName);
 
145
+    if (res != aMembers.end())
 
146
+               return res->second;
 
147
     return NULL;
 
148
 }
 
149
 
 
150
 
 
151
 ScDPSaveMember* ScDPSaveDimension::GetMemberByName(const String& rName)
 
152
 {
 
153
-       long nCount = aMemberList.Count();
 
154
     ScDPSaveMember* pMember = GetExistingMemberByName(rName);
 
155
     if (pMember)
 
156
         return pMember;
 
157
 
 
158
        ScDPSaveMember* pNew = new ScDPSaveMember( rName );
 
159
-       aMemberList.Insert( pNew, LIST_APPEND );
 
160
+       aMembers[rName] = pNew;
 
161
        return pNew;
 
162
 }
 
163
 
 
164
@@ -624,10 +618,10 @@ void ScDPSaveDimension::WriteToSource( c
 
165
                }
 
166
        }
 
167
 
 
168
-       //      Level loop outside of aMemberList loop
 
169
+       //      Level loop outside of aMembers loop
 
170
        //      because SubTotals have to be set independently of known members
 
171
 
 
172
-       long nCount = aMemberList.Count();
 
173
+       long nCount = aMembers.size();
 
174
 
 
175
        long nHierCount = 0;
 
176
        uno::Reference<container::XIndexAccess> xHiers;
 
177
@@ -725,15 +719,14 @@ void ScDPSaveDimension::WriteToSource( c
 
178
                                        uno::Reference<container::XNameAccess> xMembers = xMembSupp->getMembers();
 
179
                                        if ( xMembers.is() )
 
180
                                        {
 
181
-                                               for (long i=0; i<nCount; i++)
 
182
+                                               for (MemberHash::const_iterator i=aMembers.begin(); i != aMembers.end() ; i++)
 
183
                                                {
 
184
-                                                       ScDPSaveMember* pMember = (ScDPSaveMember*)aMemberList.GetObject(i);
 
185
-                                                       rtl::OUString aName = pMember->GetName();
 
186
+                                                       rtl::OUString aName = i->second->GetName();
 
187
                                                        if ( xMembers->hasByName( aName ) )
 
188
                                                        {
 
189
                                                                uno::Reference<uno::XInterface> xMemberInt = ScUnoHelpFunctions::AnyToInterface(
 
190
                                                                        xMembers->getByName( aName ) );
 
191
-                                                               pMember->WriteToSource( xMemberInt );
 
192
+                                                               i->second->WriteToSource( xMemberInt );
 
193
                                                        }
 
194
                                                        // missing member is no error
 
195
                                                }
 
196
Index: sc/source/filter/excel/xepivot.cxx
 
197
===================================================================
 
198
RCS file: /cvs/sc/sc/source/filter/excel/xepivot.cxx,v
 
199
retrieving revision 1.11
 
200
diff -u -w -p -r1.11 xepivot.cxx
 
201
--- sc/source/filter/excel/xepivot.cxx  8 Sep 2005 19:01:27 -0000       1.11
 
202
+++ sc/source/filter/excel/xepivot.cxx  27 Mar 2006 16:39:43 -0000
 
203
@@ -1126,16 +1126,10 @@ void XclExpPTField::SetPropertiesFromDim
 
204
     }
 
205
 
 
206
     // item properties
 
207
-    const List& rMemList = rSaveDim.GetMembers();
 
208
-    for( ULONG nMemIdx = 0, nMemCount = rMemList.Count(); nMemIdx < nMemCount; ++nMemIdx )
 
209
-    {
 
210
-        if( const ScDPSaveMember* pSaveMem = static_cast< const ScDPSaveMember* >( rMemList.GetObject( nMemIdx ) ) )
 
211
-        {
 
212
-
 
213
-            if( XclExpPTItem* pItem = GetItemAcc( pSaveMem->GetName() ) )
 
214
-                pItem->SetPropertiesFromMember( *pSaveMem );
 
215
-        }
 
216
-    }
 
217
+    const ScDPSaveDimension::MemberHash &rMembers = rSaveDim.GetMembers();
 
218
+    for (ScDPSaveDimension::MemberHash::const_iterator i=rMembers.begin(); i != rMembers.end() ; i++)
 
219
+               if( XclExpPTItem* pItem = GetItemAcc( i->second->GetName() ) )
 
220
+                       pItem->SetPropertiesFromMember( *(i->second) );
 
221
 }
 
222
 
 
223
 void XclExpPTField::SetDataPropertiesFromDim( const ScDPSaveDimension& rSaveDim )
 
224
Index: sc/source/filter/xml/XMLExportDataPilot.cxx
 
225
===================================================================
 
226
RCS file: /cvs/sc/sc/source/filter/xml/XMLExportDataPilot.cxx,v
 
227
retrieving revision 1.22
 
228
diff -u -w -p -r1.22 XMLExportDataPilot.cxx
 
229
--- sc/source/filter/xml/XMLExportDataPilot.cxx 8 Sep 2005 19:54:20 -0000       1.22
 
230
+++ sc/source/filter/xml/XMLExportDataPilot.cxx 27 Mar 2006 16:39:44 -0000
 
231
@@ -544,19 +544,18 @@ void ScXMLExportDataPilot::WriteSubTotal
 
232
 
 
233
 void ScXMLExportDataPilot::WriteMembers(ScDPSaveDimension* pDim)
 
234
 {
 
235
-       List aMembers = pDim->GetMembers();
 
236
-       sal_Int32 nMemberCount = aMembers.Count();
 
237
-       if (nMemberCount > 0)
 
238
+    const ScDPSaveDimension::MemberHash &rMembers = pDim->GetMembers();
 
239
+       if (rMembers.size() > 0)
 
240
        {
 
241
                SvXMLElementExport aElemDPMs(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_MEMBERS, sal_True, sal_True);
 
242
                rExport.CheckAttrList();
 
243
-               for (sal_Int32 nMember = 0; nMember < nMemberCount; nMember++)
 
244
+               for (ScDPSaveDimension::MemberHash::const_iterator i=rMembers.begin(); i != rMembers.end() ; i++)
 
245
                {
 
246
-                       rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_NAME, rtl::OUString(((ScDPSaveMember*)aMembers.GetObject(nMember))->GetName()));
 
247
+                       rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_NAME, rtl::OUString(i->second->GetName()));
 
248
                        rtl::OUStringBuffer sBuffer;
 
249
-                       SvXMLUnitConverter::convertBool(sBuffer, ((ScDPSaveMember*)aMembers.GetObject(nMember))->GetIsVisible());
 
250
+                       SvXMLUnitConverter::convertBool(sBuffer, i->second->GetIsVisible());
 
251
                        rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DISPLAY, sBuffer.makeStringAndClear());
 
252
-                       SvXMLUnitConverter::convertBool(sBuffer, ((ScDPSaveMember*)aMembers.GetObject(nMember))->GetShowDetails());
 
253
+                       SvXMLUnitConverter::convertBool(sBuffer, i->second->GetShowDetails());
 
254
                        rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_SHOW_DETAILS, sBuffer.makeStringAndClear());
 
255
                        SvXMLElementExport aElemDPM(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_MEMBER, sal_True, sal_True);
 
256
                        rExport.CheckAttrList();