LibreOffice Module sc (master)  1
XclExpChangeTrack.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #ifndef INCLUDED_SC_SOURCE_FILTER_INC_XCLEXPCHANGETRACK_HXX
21 #define INCLUDED_SC_SOURCE_FILTER_INC_XCLEXPCHANGETRACK_HXX
22 
23 #include <memory>
24 #include <stack>
25 #include <tools/datetime.hxx>
26 #include <chgtrack.hxx>
27 #include <document.hxx>
28 #include "xelink.hxx"
29 #include "xestring.hxx"
30 #include "excrecds.hxx"
31 #include "xlformula.hxx"
32 #include "xeformula.hxx"
33 
34 class ExcXmlRecord : public ExcRecord
35 {
36 public:
37  virtual std::size_t GetLen() const override;
38  virtual sal_uInt16 GetNum() const override;
39  virtual void Save( XclExpStream& rStrm ) override;
40 };
41 
42 // XclExpUserBView - one UserBView record for each user
43 
44 class XclExpUserBView : public ExcRecord
45 {
46 private:
49 
50  virtual void SaveCont( XclExpStream& rStrm ) override;
51 
52 public:
53  XclExpUserBView( const OUString& rUsername, const sal_uInt8* pGUID );
54 
55  const sal_uInt8* GetGUID() const { return aGUID; }
56 
57  virtual sal_uInt16 GetNum() const override;
58  virtual std::size_t GetLen() const override;
59 };
60 
61 // XclExpUserBViewList - list of UserBView records
62 
64 {
65 private:
66  std::vector<XclExpUserBView> aViews;
67 
68 public:
69 
70  typedef std::vector<XclExpUserBView>::const_iterator const_iterator;
71 
72  XclExpUserBViewList( const ScChangeTrack& rChangeTrack );
73  virtual ~XclExpUserBViewList() override;
74 
75  const_iterator cbegin () { return aViews.cbegin(); }
76  const_iterator cend () { return aViews.cend(); }
77 
78  virtual void Save( XclExpStream& rStrm ) override;
79 };
80 
81 // XclExpUsersViewBegin - begin of view block (one per sheet)
82 
84 {
85 private:
87  sal_uInt32 nCurrTab;
88 
89  virtual void SaveCont( XclExpStream& rStrm ) override;
90 
91 public:
92  XclExpUsersViewBegin( const sal_uInt8* pGUID, sal_uInt32 nTab );
93  virtual sal_uInt16 GetNum() const override;
94  virtual std::size_t GetLen() const override;
95 };
96 
97 // XclExpUsersViewEnd - end of view block (one per sheet)
98 
100 {
101 private:
102  virtual void SaveCont( XclExpStream& rStrm ) override;
103 
104 public:
105  virtual sal_uInt16 GetNum() const override;
106  virtual std::size_t GetLen() const override;
107 };
108 
109 // dummy record for "User Names" stream
110 
112 {
113 private:
114  virtual void SaveCont( XclExpStream& rStrm ) override;
115 
116 public:
117  virtual sal_uInt16 GetNum() const override;
118  virtual std::size_t GetLen() const override;
119 };
120 
121 // dummy record for "User Names" stream
122 
124 {
125 private:
126  virtual void SaveCont( XclExpStream& rStrm ) override;
127 
128 public:
129  virtual sal_uInt16 GetNum() const override;
130  virtual std::size_t GetLen() const override;
131 };
132 
133 // dummy record for "User Names" stream
134 
136 {
137 private:
138  virtual void SaveCont( XclExpStream& rStrm ) override;
139 
140 public:
141  virtual sal_uInt16 GetNum() const override;
142  virtual std::size_t GetLen() const override;
143 };
144 
145 // dummy record for "User Names" stream
146 
148 {
149 private:
150  virtual void SaveCont( XclExpStream& rStrm ) override;
151 
152 public:
153  virtual sal_uInt16 GetNum() const override;
154  virtual std::size_t GetLen() const override;
155 };
156 
157 // dummy record without content
158 
160 {
161 private:
162  sal_uInt16 nRecNum;
163 
164 public:
165  XclExpChTrEmpty( sal_uInt16 nNum ) : nRecNum( nNum ) {}
166  virtual ~XclExpChTrEmpty() override;
167 
168  virtual sal_uInt16 GetNum() const override;
169  virtual std::size_t GetLen() const override;
170 };
171 
172 // dummy record for "Revision Log" stream
173 
175 {
176 private:
177  virtual void SaveCont( XclExpStream& rStrm ) override;
178 
179 public:
180  virtual ~XclExpChTr0x0195() override;
181 
182  virtual sal_uInt16 GetNum() const override;
183  virtual std::size_t GetLen() const override;
184 };
185 
186 // dummy record for "Revision Log" stream
187 
189 {
190 private:
193 
194  virtual void SaveCont( XclExpStream& rStrm ) override;
195 
196 public:
197  inline XclExpChTr0x0194( const ScChangeTrack& rChangeTrack );
198  virtual ~XclExpChTr0x0194() override;
199 
200  virtual sal_uInt16 GetNum() const override;
201  virtual std::size_t GetLen() const override;
202 };
203 
204 inline XclExpChTr0x0194::XclExpChTr0x0194( const ScChangeTrack& rChangeTrack ) :
205  sUsername( rChangeTrack.GetUser() ),
206  aDateTime( rChangeTrack.GetFixDateTime() )
207 {
208 }
209 
210 // XclExpChTrHeader - header record, includes action count
211 
213 {
214 private:
216  sal_uInt32 nCount;
217 
218  virtual void SaveCont( XclExpStream& rStrm ) override;
219 
220 public:
221  XclExpChTrHeader() : nCount( 0 ) {}
222  virtual ~XclExpChTrHeader() override;
223 
224  void SetGUID( const sal_uInt8* pGUID ) { memcpy( aGUID, pGUID, 16 ); }
225  void SetCount( sal_uInt32 nNew ) { nCount = nNew; }
226 
227  virtual sal_uInt16 GetNum() const override;
228  virtual std::size_t GetLen() const override;
229 
230  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
231 };
232 
234 {
236 public:
237  void SetGUID( const sal_uInt8* pGUID );
238 
239  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
240 };
241 
243 class XclExpChTrAction;
244 
246 {
247  OUString maUserName;
250  sal_Int32 mnLogNumber;
251  sal_uInt32 mnMinAction;
252  sal_uInt32 mnMaxAction;
253 
254  std::vector<sal_uInt16> maTabBuffer;
255  std::vector<std::unique_ptr<XclExpChTrAction>> maActions;
256 
257 public:
259  const OUString& rUserName, const DateTime& rDateTime, const sal_uInt8* pGUID,
260  sal_Int32 nLogNumber, const XclExpChTrTabIdBuffer& rBuf );
261 
262  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
263 
264  void AppendAction( std::unique_ptr<XclExpChTrAction> pAction );
265 };
266 
267 // XclExpChTrInfo - header of action group of a user
268 
269 class XclExpChTrInfo : public ExcRecord
270 {
271 private:
275 
276  virtual void SaveCont( XclExpStream& rStrm ) override;
277 
278 public:
279  XclExpChTrInfo( const OUString& rUsername, const DateTime& rDateTime,
280  const sal_uInt8* pGUID );
281 
282  virtual ~XclExpChTrInfo() override;
283 
284  virtual sal_uInt16 GetNum() const override;
285  virtual std::size_t GetLen() const override;
286 };
287 
288 // XclExpChTrTabIdBuffer - buffer for tab id's
289 
291 {
292 private:
293  std::unique_ptr<sal_uInt16[]>
295  sal_uInt16* pLast;
296  sal_uInt16 nBufSize;
297  sal_uInt16 nLastId;
298 
299 public:
300  XclExpChTrTabIdBuffer( sal_uInt16 nCount );
303 
304  void InitFill( sal_uInt16 nIndex );
305  void InitFillup();
306 
307  sal_uInt16 GetId( sal_uInt16 nIndex ) const;
308  void Remove();
309 
310  sal_uInt16 GetBufferCount() const
311  { return static_cast< sal_uInt16 >( (pLast - pBuffer.get()) + 1 ); }
312  void GetBufferCopy( sal_uInt16* pDest ) const
313  { memcpy( pDest, pBuffer.get(), sizeof(sal_uInt16) * GetBufferCount() ); }
314 };
315 
316 // XclExpChTrTabId - tab id record
317 
319 {
320 private:
321  std::unique_ptr<sal_uInt16[]> pBuffer;
322  sal_uInt16 nTabCount;
323 
324  void Clear() { pBuffer.reset(); }
325 
326  virtual void SaveCont( XclExpStream& rStrm ) override;
327 
328 public:
329  XclExpChTrTabId( sal_uInt16 nCount ) : nTabCount( nCount ) {}
330  XclExpChTrTabId( const XclExpChTrTabIdBuffer& rBuffer );
331  virtual ~XclExpChTrTabId() override;
332 
333  void Copy( const XclExpChTrTabIdBuffer& rBuffer );
334 
335  virtual sal_uInt16 GetNum() const override;
336  virtual std::size_t GetLen() const override;
337 };
338 
339 // XclExpChTrAction - base class for action records
340 
342 {
343 private:
344  OUString sUsername;
346  sal_uInt32 nIndex; // action number
347  std::unique_ptr<XclExpChTrAction>
348  pAddAction; // additional record for this action
349  bool bAccepted;
350 
351 protected:
352  const XclExpTabInfo& rTabInfo; // for table num export (sc num -> xcl num)
353  const XclExpChTrTabIdBuffer& rIdBuffer; // for table num export (xcl num -> tab id)
354  sal_uInt32 nLength; // this is not the record size
355  sal_uInt16 nOpCode; // EXC_CHTR_OP_***
357 
358  XclExpChTrAction( const XclExpChTrAction& rCopy );
359 
360  void SetAddAction( XclExpChTrAction* pAction );
362  const ScChangeAction& rAction,
363  const XclExpRoot& rRoot,
364  const ScChangeTrack& rChangeTrack );
365 
366  static inline void Write2DAddress( XclExpStream& rStrm, const ScAddress& rAddress );
367  static inline void Write2DRange( XclExpStream& rStrm, const ScRange& rRange );
368  inline sal_uInt16 GetTabId( SCTAB nTabId ) const;
369  inline void WriteTabId( XclExpStream& rStrm, SCTAB nTabId ) const;
370 
371  // save header data, call SaveActionData()
372  virtual void SaveCont( XclExpStream& rStrm ) override;
373  static std::size_t GetHeaderByteCount() { return 12; }
374 
375  // override to save action data without header, called by SaveCont()
376  virtual void SaveActionData( XclExpStream& rStrm ) const = 0;
377  // override to get action size without header, called by GetLen()
378  virtual std::size_t GetActionByteCount() const = 0;
379 
380  // do something before writing the record
381  virtual void PrepareSaveAction( XclExpStream& rStrm ) const;
382  // do something after writing the record
383  virtual void CompleteSaveAction( XclExpStream& rStrm ) const;
384 
385  bool GetAccepted() const { return bAccepted; }
386 
387 public:
389  const ScChangeAction& rAction,
390  const XclExpRoot& rRoot,
391  const XclExpChTrTabIdBuffer& rTabIdBuffer,
392  sal_uInt16 nNewOpCode = EXC_CHTR_OP_UNKNOWN );
393  virtual ~XclExpChTrAction() override;
394 
395  const OUString& GetUsername() const { return sUsername; }
396  const DateTime& GetDateTime() const { return aDateTime; }
397  const XclExpChTrTabIdBuffer& GetTabIdBuffer() const { return rIdBuffer; }
398  bool ForceInfoRecord() const { return bForceInfo; }
399 
400  // set own index & return new index
401  // could override to use more indexes per action
402  void SetIndex( sal_uInt32& rIndex );
403 
404  virtual void Save( XclExpStream& rStrm ) override;
405  virtual std::size_t GetLen() const override;
406 
408  sal_uInt32 GetActionNumber() const { return nIndex; }
409 };
410 
411 inline void XclExpChTrAction::Write2DAddress( XclExpStream& rStrm, const ScAddress& rAddress )
412 {
413  rStrm << static_cast<sal_uInt16>(rAddress.Row())
414  << static_cast<sal_uInt16>(rAddress.Col());
415 }
416 
417 inline void XclExpChTrAction::Write2DRange( XclExpStream& rStrm, const ScRange& rRange )
418 {
419  rStrm << static_cast<sal_uInt16>(rRange.aStart.Row())
420  << static_cast<sal_uInt16>(rRange.aEnd.Row())
421  << static_cast<sal_uInt16>(rRange.aStart.Col())
422  << static_cast<sal_uInt16>(rRange.aEnd.Col());
423 }
424 
425 inline sal_uInt16 XclExpChTrAction::GetTabId( SCTAB nTab ) const
426 {
427  return rIdBuffer.GetId( rTabInfo.GetXclTab( nTab ) );
428 }
429 
430 inline void XclExpChTrAction::WriteTabId( XclExpStream& rStrm, SCTAB nTab ) const
431 {
432  rStrm << GetTabId( nTab );
433 }
434 
435 // XclExpChTrData - cell content itself
436 
438 {
439  std::unique_ptr<XclExpString> pString;
444  double fValue;
445  sal_Int32 nRKValue;
446  sal_uInt16 nType;
447  std::size_t nSize;
448 
449  XclExpChTrData();
450  ~XclExpChTrData();
451  void Clear();
452 
453  void WriteFormula(
454  XclExpStream& rStrm,
455  const XclExpChTrTabIdBuffer& rTabIdBuffer );
456  void Write(
457  XclExpStream& rStrm,
458  const XclExpChTrTabIdBuffer& rTabIdBuffer );
459 };
460 
461 // XclExpChTrCellContent - changed cell content
462 
463 class XclExpChTrCellContent final : public XclExpChTrAction, protected XclExpRoot
464 {
465  std::unique_ptr<XclExpChTrData> pOldData;
466  std::unique_ptr<XclExpChTrData> pNewData;
467  sal_uInt16 nOldLength; // this is not the record size
469 
470  static void MakeEmptyChTrData( std::unique_ptr<XclExpChTrData>& rpData );
471 
472  void GetCellData(
473  const XclExpRoot& rRoot, const ScCellValue& rScCell, std::unique_ptr<XclExpChTrData>& rpData,
474  sal_uInt32& rXclLength1, sal_uInt16& rXclLength2 );
475 
476  virtual void SaveActionData( XclExpStream& rStrm ) const override;
477 
478 public:
480  const ScChangeActionContent& rAction,
481  const XclExpRoot& rRoot,
482  const XclExpChTrTabIdBuffer& rTabIdBuffer );
483  virtual ~XclExpChTrCellContent() override;
484 
485  virtual sal_uInt16 GetNum() const override;
486  virtual std::size_t GetActionByteCount() const override;
487 
488  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
489 };
490 
491 // XclExpChTrInsert - insert/delete columns/rows
492 
494 {
496 
497 protected:
499 
500  XclExpChTrInsert( const XclExpChTrInsert& rCopy );
501 
502  virtual void SaveActionData( XclExpStream& rStrm ) const override;
503  virtual void PrepareSaveAction( XclExpStream& rStrm ) const override;
504  virtual void CompleteSaveAction( XclExpStream& rStrm ) const override;
505 
506 public:
508  const ScChangeAction& rAction,
509  const XclExpRoot& rRoot,
510  const XclExpChTrTabIdBuffer& rTabIdBuffer,
511  const ScChangeTrack& rChangeTrack );
512  virtual ~XclExpChTrInsert() override;
513 
514  virtual sal_uInt16 GetNum() const override;
515  virtual std::size_t GetActionByteCount() const override;
516 
517  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
518 };
519 
520 // XclExpChTrInsertTab - insert table
521 
523 {
524 private:
526 
527 protected:
528  virtual void SaveActionData( XclExpStream& rStrm ) const override;
529 
530 public:
532  const ScChangeAction& rAction,
533  const XclExpRoot& rRoot,
534  const XclExpChTrTabIdBuffer& rTabIdBuffer );
535  virtual ~XclExpChTrInsertTab() override;
536 
537  virtual sal_uInt16 GetNum() const override;
538  virtual std::size_t GetActionByteCount() const override;
539 
540  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
541 };
542 
543 // XclExpChTrMoveRange - move cell range
544 
546 {
549 
550  virtual void SaveActionData( XclExpStream& rStrm ) const override;
551  virtual void PrepareSaveAction( XclExpStream& rStrm ) const override;
552  virtual void CompleteSaveAction( XclExpStream& rStrm ) const override;
553 
554 public:
556  const ScChangeActionMove& rAction,
557  const XclExpRoot& rRoot,
558  const XclExpChTrTabIdBuffer& rTabIdBuffer,
559  const ScChangeTrack& rChangeTrack );
560  virtual ~XclExpChTrMoveRange() override;
561 
562  virtual sal_uInt16 GetNum() const override;
563  virtual std::size_t GetActionByteCount() const override;
564 
565  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
566 };
567 
568 // XclExpChTr0x019A - additional data for delete action
569 
571 {
572 protected:
573  virtual void SaveActionData( XclExpStream& rStrm ) const override;
574 
575 public:
576  XclExpChTr0x014A( const XclExpChTrInsert& rAction );
577  virtual ~XclExpChTr0x014A() override;
578 
579  virtual sal_uInt16 GetNum() const override;
580  virtual std::size_t GetActionByteCount() const override;
581 
582  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
583 };
584 
585 // XclExpChangeTrack - exports the "Revision Log" stream
586 
587 class XclExpChangeTrack : protected XclExpRoot
588 {
589  typedef std::vector<std::unique_ptr<ExcRecord>> RecListType;
590  RecListType maRecList; // list of "Revision Log" stream records
591  std::stack<XclExpChTrAction*> aActionStack;
593  std::vector<std::unique_ptr<XclExpChTrTabIdBuffer>>
595 
596  ScDocumentUniquePtr xTempDoc; // empty document
597 
599  void PushActionRecord( const ScChangeAction& rAction );
600 
601  bool WriteUserNamesStream();
602 
603 public:
604  XclExpChangeTrack( const XclExpRoot& rRoot );
605  virtual ~XclExpChangeTrack() override;
606 
607  void Write();
608  void WriteXml( XclExpXmlStream& rStrm );
609 };
610 
611 #endif
612 
613 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
void AppendAction(std::unique_ptr< XclExpChTrAction > pAction)
void AddDependentContents(const ScChangeAction &rAction, const XclExpRoot &rRoot, const ScChangeTrack &rChangeTrack)
virtual std::size_t GetActionByteCount() const override
This class stores an unformatted or formatted string for Excel export.
Definition: xestring.hxx:43
virtual std::size_t GetActionByteCount() const override
sal_uInt16 GetTabId(SCTAB nTabId) const
void SetGUID(const sal_uInt8 *pGUID)
virtual ~XclExpChTrTabId() override
std::unique_ptr< XclExpChTrData > pOldData
virtual void SaveActionData(XclExpStream &rStrm) const override
virtual std::size_t GetLen() const override
virtual ~XclExpChTrInsert() override
ScAddress aStart
Definition: address.hxx:500
virtual sal_uInt16 GetNum() const override
virtual void SaveCont(XclExpStream &rStrm) override
virtual sal_uInt16 GetNum() const override
std::unique_ptr< sal_uInt16[]> pBuffer
virtual std::size_t GetLen() const override
virtual ~XclExpChTrEmpty() override
virtual void SaveXml(XclExpXmlStream &rStrm) override
This class is used to export Excel record streams.
Definition: xestream.hxx:71
SCROW Row() const
Definition: address.hxx:262
virtual void SaveCont(XclExpStream &rStrm) override
virtual void SaveCont(XclExpStream &rStrm) override
void WriteFormula(XclExpStream &rStrm, const XclExpChTrTabIdBuffer &rTabIdBuffer)
XclExpChTrCellContent(const ScChangeActionContent &rAction, const XclExpRoot &rRoot, const XclExpChTrTabIdBuffer &rTabIdBuffer)
XclExpChTrEmpty(sal_uInt16 nNum)
virtual std::size_t GetLen() const override
XclExpChTrAction * GetAddAction()
virtual std::size_t GetActionByteCount() const override
virtual void SaveActionData(XclExpStream &rStrm) const override
virtual sal_uInt16 GetNum() const override
virtual std::size_t GetLen() const override
virtual sal_uInt16 GetNum() const override
virtual void SaveCont(XclExpStream &rStrm) override
const_iterator cbegin()
XclExpChTrTabIdBuffer * pTabIdBuffer
virtual ~XclExpChTrHeader() override
virtual void CompleteSaveAction(XclExpStream &rStrm) const override
void GetCellData(const XclExpRoot &rRoot, const ScCellValue &rScCell, std::unique_ptr< XclExpChTrData > &rpData, sal_uInt32 &rXclLength1, sal_uInt16 &rXclLength2)
std::unique_ptr< sal_uInt16[]> pBuffer
virtual void SaveCont(XclExpStream &rStrm) override
virtual sal_uInt16 GetNum() const override
void InitFill(sal_uInt16 nIndex)
ScAddress aEnd
Definition: address.hxx:501
virtual sal_uInt16 GetNum() const override
virtual void SaveCont(XclExpStream &rStrm) override
virtual sal_uInt16 GetNum() const override
virtual void SaveActionData(XclExpStream &rStrm) const override
virtual void SaveCont(XclExpStream &rStrm) override
virtual std::size_t GetLen() const override
XclExpXmlChTrHeader(const OUString &rUserName, const DateTime &rDateTime, const sal_uInt8 *pGUID, sal_Int32 nLogNumber, const XclExpChTrTabIdBuffer &rBuf)
XclExpRefLog maRefLog
XclExpUserBViewList(const ScChangeTrack &rChangeTrack)
virtual ~XclExpUserBViewList() override
static void Write2DAddress(XclExpStream &rStrm, const ScAddress &rAddress)
void SetGUID(const sal_uInt8 *pGUID)
XclExpChTr0x014A(const XclExpChTrInsert &rAction)
virtual std::size_t GetLen() const override
std::vector< std::unique_ptr< XclExpChTrTabIdBuffer > > maBuffers
Store arbitrary cell value of any kind.
Definition: cellvalue.hxx:36
const XclExpChTrTabIdBuffer & rIdBuffer
virtual ~XclExpChangeTrack() override
Access to global data from other classes.
Definition: xeroot.hxx:113
virtual void SaveCont(XclExpStream &rStrm) override
XclExpChTrTabId(sal_uInt16 nCount)
virtual sal_uInt16 GetNum() const override
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
ScDocumentUniquePtr xTempDoc
std::unique_ptr< XclExpChTrAction > pAddAction
sal_uInt16 GetBufferCount() const
XclExpUsersViewBegin(const sal_uInt8 *pGUID, sal_uInt32 nTab)
std::stack< XclExpChTrAction * > aActionStack
virtual void SaveXml(XclExpXmlStream &rStrm) override
virtual ~XclExpChTr0x014A() override
virtual void SaveXml(XclExpXmlStream &rStrm) override
std::vector< std::unique_ptr< XclExpChTrAction > > maActions
XclExpChTrInfo(const OUString &rUsername, const DateTime &rDateTime, const sal_uInt8 *pGUID)
static void Write2DRange(XclExpStream &rStrm, const ScRange &rRange)
virtual void CompleteSaveAction(XclExpStream &rStrm) const
virtual sal_uInt16 GetNum() const override
virtual std::size_t GetLen() const override
bool GetAccepted() const
virtual void SaveCont(XclExpStream &rStrm) override
const XclExpChTrTabIdBuffer & GetTabIdBuffer() const
virtual ~XclExpChTrAction() override
virtual std::size_t GetLen() const override
const OUString & GetUsername() const
virtual std::size_t GetLen() const override
virtual void SaveActionData(XclExpStream &rStrm) const =0
sal_uInt16 GetXclTab(SCTAB nScTab) const
Returns the Excel sheet index for a given Calc sheet.
Definition: xelink.cxx:811
virtual sal_uInt16 GetNum() const override
void WriteXml(XclExpXmlStream &rStrm)
void GetBufferCopy(sal_uInt16 *pDest) const
virtual void SaveActionData(XclExpStream &rStrm) const override
virtual ~XclExpChTr0x0194() override
void SetAddAction(XclExpChTrAction *pAction)
std::unique_ptr< ScDocument, o3tl::default_delete< ScDocument > > ScDocumentUniquePtr
Definition: document.hxx:2618
XclExpString sUsername
virtual std::size_t GetLen() const override
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
virtual void SaveActionData(XclExpStream &rStrm) const override
void Write(XclExpStream &rStrm, const XclExpChTrTabIdBuffer &rTabIdBuffer)
virtual void PrepareSaveAction(XclExpStream &rStrm) const override
virtual sal_uInt16 GetNum() const override
virtual sal_uInt16 GetNum() const override
virtual void SaveCont(XclExpStream &rStrm) override
virtual void SaveXml(XclExpXmlStream &rStrm) override
Stores the correct Excel sheet index for each Calc sheet.
Definition: xelink.hxx:62
::std::vector< XclExpRefLogEntry > XclExpRefLog
Vector containing a log for all external references in a formula, used i.e.
Definition: xeformula.hxx:44
virtual std::size_t GetActionByteCount() const override
virtual void CompleteSaveAction(XclExpStream &rStrm) const override
virtual void SaveXml(XclExpXmlStream &rStrm) override
virtual std::size_t GetLen() const override
sal_uInt8 aGUID[16]
ScChangeTrack * CreateTempChangeTrack()
virtual sal_uInt16 GetNum() const override
XclExpChTrMoveRange(const ScChangeActionMove &rAction, const XclExpRoot &rRoot, const XclExpChTrTabIdBuffer &rTabIdBuffer, const ScChangeTrack &rChangeTrack)
std::shared_ptr< XclTokenArray > XclTokenArrayRef
Definition: xlformula.hxx:417
virtual sal_uInt16 GetNum() const override
sal_uInt16 GetId(sal_uInt16 nIndex) const
void PushActionRecord(const ScChangeAction &rAction)
SCCOL Col() const
Definition: address.hxx:267
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
XclExpChTrInsertTab(const ScChangeAction &rAction, const XclExpRoot &rRoot, const XclExpChTrTabIdBuffer &rTabIdBuffer)
void SetIndex(sal_uInt32 &rIndex)
void WriteTabId(XclExpStream &rStrm, SCTAB nTabId) const
virtual void SaveXml(XclExpXmlStream &rStrm) override
XclExpChTrInsert(const XclExpChTrInsert &rCopy)
XclExpStringRef mpFormattedString
XclExpChangeTrack(const XclExpRoot &rRoot)
XclExpChTrTabIdBuffer(sal_uInt16 nCount)
virtual sal_uInt16 GetNum() const override
virtual std::size_t GetLen() const override
static void MakeEmptyChTrData(std::unique_ptr< XclExpChTrData > &rpData)
XclExpChTrAction(const XclExpChTrAction &rCopy)
unsigned char sal_uInt8
const_iterator cend()
sal_uInt32 GetActionNumber() const
virtual void SaveXml(XclExpXmlStream &rStrm) override
std::vector< XclExpUserBView > aViews
sal_uInt8 aGUID[16]
XclExpUserBView(const OUString &rUsername, const sal_uInt8 *pGUID)
std::vector< sal_uInt16 > maTabBuffer
#define EXC_CHTR_OP_UNKNOWN
Definition: excdefs.hxx:76
virtual std::size_t GetLen() const override
virtual void SaveCont(XclExpStream &rStrm) override
XclExpString sUsername
virtual void SaveCont(XclExpStream &rStrm) override
virtual ~XclExpChTrCellContent() override
bool ForceInfoRecord() const
static std::size_t GetHeaderByteCount()
virtual std::size_t GetActionByteCount() const =0
virtual void SaveCont(XclExpStream &rStrm) override
const ScFormulaCell * mpFormulaCell
std::unique_ptr< XclExpChTrData > pNewData
std::unique_ptr< XclExpString > pString
std::vector< XclExpUserBView >::const_iterator const_iterator
XclExpChTr0x0194(const ScChangeTrack &rChangeTrack)
virtual sal_uInt16 GetNum() const override
XclTokenArrayRef mxTokArr
std::vector< std::unique_ptr< ExcRecord > > RecListType
std::shared_ptr< XclExpString > XclExpStringRef
Definition: xeroot.hxx:36
virtual ~XclExpChTr0x0195() override
void SetCount(sal_uInt32 nNew)
virtual sal_uInt16 GetNum() const override
const sal_uInt8 * GetGUID() const
virtual sal_uInt16 GetNum() const override
virtual ~XclExpChTrInfo() override
virtual std::size_t GetLen() const override
void Copy(const XclExpChTrTabIdBuffer &rBuffer)
void SvStream & rStrm
virtual std::size_t GetLen() const override
virtual ~XclExpChTrMoveRange() override
virtual ~XclExpChTrInsertTab() override
virtual void PrepareSaveAction(XclExpStream &rStrm) const
virtual std::size_t GetActionByteCount() const override
const DateTime & GetDateTime() const
virtual void PrepareSaveAction(XclExpStream &rStrm) const override
sal_Int16 SCTAB
Definition: types.hxx:23
const XclExpTabInfo & rTabInfo
virtual sal_uInt16 GetNum() const override
virtual void SaveXml(XclExpXmlStream &rStrm) override