20 #ifndef INCLUDED_OOX_DUMP_DUMPERBASE_HXX
21 #define INCLUDED_OOX_DUMP_DUMPERBASE_HXX
28 #include <string_view>
32 #include <com/sun/star/uno/Reference.hxx>
33 #include <com/sun/star/uno/Sequence.hxx>
34 #include <com/sun/star/util/DateTime.hpp>
38 #include <rtl/string.hxx>
39 #include <rtl/textenc.h>
40 #include <rtl/ustring.hxx>
41 #include <rtl/ustrbuf.hxx>
47 namespace io {
class XInputStream; }
48 namespace io {
class XOutputStream; }
49 namespace io {
class XTextOutputStream2; }
50 namespace uno {
class XComponentContext; }
54 class TextInputStream;
67 #define OOX_DUMP_ERRASCII( ascii ) "?err:" ascii
69 #define OOX_DUMP_ERR_NOMAP "no-map"
71 #define OOX_DUMP_ERR_STREAM "stream-error"
73 #define OOX_DUMP_DUMPEXT ".dump"
110 static css::uno::Reference< css::io::XInputStream >
112 const css::uno::Reference< css::uno::XComponentContext >& rxContext,
113 const OUString& rFileName );
117 static css::uno::Reference< css::io::XOutputStream >
119 const css::uno::Reference< css::uno::XComponentContext >& rxContext,
120 const OUString& rFileName );
122 static css::uno::Reference< css::io::XTextOutputStream2 >
124 const css::uno::Reference< css::uno::XComponentContext >& rxContext,
125 const css::uno::Reference< css::io::XOutputStream >& rxOutStrm,
126 rtl_TextEncoding eTextEnc );
128 static css::uno::Reference< css::io::XTextOutputStream2 >
130 const css::uno::Reference< css::uno::XComponentContext >& rxContext,
131 const OUString& rFileName,
132 rtl_TextEncoding eTextEnc );
147 template<
typename StreamType >
225 OUStringVector::const_iterator
parse(
const OUStringVector& rFormatVec );
239 OUStringVector
parse(
const OUString& rFormatStr );
256 static void appendDec( OUStringBuffer& rStr, sal_uInt16 nData, sal_Int32 nWidth = 0,
sal_Unicode cFill =
' ' );
257 static void appendDec( OUStringBuffer& rStr, sal_Int16 nData, sal_Int32 nWidth = 0,
sal_Unicode cFill =
' ' );
258 static void appendDec( OUStringBuffer& rStr, sal_uInt32 nData, sal_Int32 nWidth = 0,
sal_Unicode cFill =
' ' );
259 static void appendDec( OUStringBuffer& rStr, sal_Int32 nData, sal_Int32 nWidth = 0,
sal_Unicode cFill =
' ' );
260 static void appendDec( OUStringBuffer& rStr, sal_uInt64 nData, sal_Int32 nWidth = 0,
sal_Unicode cFill =
' ' );
261 static void appendDec( OUStringBuffer& rStr, sal_Int64 nData, sal_Int32 nWidth = 0,
sal_Unicode cFill =
' ' );
262 static void appendDec( OUStringBuffer& rStr,
double fData, sal_Int32 nWidth = 0,
sal_Unicode cFill =
' ' );
267 static void appendHex( OUStringBuffer& rStr,
sal_Int8 nData,
bool bPrefix =
true );
268 static void appendHex( OUStringBuffer& rStr, sal_uInt16 nData,
bool bPrefix =
true );
269 static void appendHex( OUStringBuffer& rStr, sal_Int16 nData,
bool bPrefix =
true );
270 static void appendHex( OUStringBuffer& rStr, sal_uInt32 nData,
bool bPrefix =
true );
271 static void appendHex( OUStringBuffer& rStr, sal_Int32 nData,
bool bPrefix =
true );
272 static void appendHex( OUStringBuffer& rStr, sal_uInt64 nData,
bool bPrefix =
true );
273 static void appendHex( OUStringBuffer& rStr, sal_Int64 nData,
bool bPrefix =
true );
274 static void appendHex( OUStringBuffer& rStr,
double fData,
bool bPrefix =
true );
280 static void appendShortHex( OUStringBuffer& rStr, sal_uInt16 nData,
bool bPrefix =
true );
281 static void appendShortHex( OUStringBuffer& rStr, sal_Int16 nData,
bool bPrefix =
true );
282 static void appendShortHex( OUStringBuffer& rStr, sal_uInt32 nData,
bool bPrefix =
true );
283 static void appendShortHex( OUStringBuffer& rStr, sal_Int32 nData,
bool bPrefix =
true );
284 static void appendShortHex( OUStringBuffer& rStr, sal_uInt64 nData,
bool bPrefix =
true );
285 static void appendShortHex( OUStringBuffer& rStr, sal_Int64 nData,
bool bPrefix =
true );
286 static void appendShortHex( OUStringBuffer& rStr,
double fData,
bool bPrefix =
true );
291 static void appendBin( OUStringBuffer& rStr,
sal_Int8 nData,
bool bDots =
true );
292 static void appendBin( OUStringBuffer& rStr, sal_uInt16 nData,
bool bDots =
true );
293 static void appendBin( OUStringBuffer& rStr, sal_Int16 nData,
bool bDots =
true );
294 static void appendBin( OUStringBuffer& rStr, sal_uInt32 nData,
bool bDots =
true );
295 static void appendBin( OUStringBuffer& rStr, sal_Int32 nData,
bool bDots =
true );
296 static void appendBin( OUStringBuffer& rStr, sal_uInt64 nData,
bool bDots =
true );
297 static void appendBin( OUStringBuffer& rStr, sal_Int64 nData,
bool bDots =
true );
298 static void appendBin( OUStringBuffer& rStr,
double fData,
bool bDots =
true );
302 template<
typename Type >
303 static void appendFix( OUStringBuffer& rStr,
Type nData, sal_Int32 nWidth = 0 );
307 static void appendBool( OUStringBuffer& rStr,
bool bData );
308 template<
typename Type >
315 static void appendEncString( OUStringBuffer& rStr,
const OUString& rData,
bool bPrefix =
true );
319 static void appendToken( OUStringBuffer& rStr, std::u16string_view rToken,
sal_Unicode cSep = OOX_DUMP_LISTSEP );
321 static void appendIndex( OUStringBuffer& rStr, sal_Int64 nIdx );
323 static std::u16string_view
getToken( std::u16string_view rData, sal_Int32& rnPos,
sal_Unicode cSep = OOX_DUMP_LISTSEP );
330 static std::u16string_view
trimSpaces( std::u16string_view rStr );
337 static bool convertFromDec( sal_Int64& ornData, std::u16string_view rData );
338 static bool convertFromHex( sal_Int64& ornData, std::u16string_view rData );
353 template<
typename Type >
356 appendDec( rStr, static_cast< double >( nData ) / std::pow( 2.0, 4.0 *
sizeof(
Type ) ), nWidth );
359 template<
typename Type >
379 String(
const OUString& rStr ) : OUString( rStr ) {}
380 String(
const char* pcStr ) : OUString( OUString::createFromAscii( pcStr ? pcStr :
"" ) ) {}
384 OUString
operator()(
const char* pcDefault )
const {
if(
has() )
return *
this;
return String( pcDefault ); }
450 static bool isValid(
const std::shared_ptr< Base >& rxBase ) {
return rxBase && rxBase->isValid(); }
470 const OUString& rKey,
471 const OUString& rData );
476 const OUString& rData );
491 const OUString& rKey,
492 const OUString& rData );
496 class SharedConfigData;
500 typedef std::shared_ptr< NameListBase >
NameListRef;
526 template<
typename Type >
528 {
return maMap.count( static_cast< sal_Int64 >( nKey ) ) != 0; }
531 template<
typename Type >
533 {
return implGetName( rCfg, static_cast< sal_Int64 >( nKey ) ); }
551 const OUString& rKey,
552 const OUString& rData )
override;
557 const OUString& rData )
override;
560 virtual void implSetName( sal_Int64 nKey,
const OUString& rName ) = 0;
571 const OUString*
findRawName( sal_Int64 nKey )
const;
575 void include(
const OUString& rListKeys );
577 void exclude(
const OUString& rKeys );
596 const OUString& rKey,
597 const OUString& rData )
override;
600 virtual void implSetName( sal_Int64 nKey,
const OUString& rName )
override;
602 virtual OUString
implGetName(
const Config& rCfg, sal_Int64 nKey )
const override;
619 void setNamesFromVec( sal_Int64 nStartKey,
const OUStringVector& rNames );
624 const OUString& rKey,
625 const OUString&
rData )
override;
627 virtual void implSetName( sal_Int64 nKey,
const OUString& rName )
override;
647 const OUString& rKey,
648 const OUString& rData )
override;
651 virtual void implSetName( sal_Int64 nKey,
const OUString& rName )
override;
653 virtual OUString
implGetName(
const Config& rCfg, sal_Int64 nKey )
const override;
671 virtual void implSetName( sal_Int64 nKey,
const OUString& rName )
override;
673 virtual OUString
implGetName(
const Config& rCfg, sal_Int64 nKey )
const override;
706 virtual void implSetName( sal_Int64 nKey,
const OUString& rName )
override;
708 virtual OUString
implGetName(
const Config& rCfg, sal_Int64 nKey )
const override;
742 ::std::map< sal_Int64, ItemFormat >
maMap;
748 ::std::map< sal_Int64, ItemFormat >::const_iterator
end()
const {
return maMap.end(); }
749 ::std::map< sal_Int64, ItemFormat >::const_iterator
find(sal_Int64
nId)
const
751 return maMap.find(nId);
762 const OUString& rFileName,
763 const css::uno::Reference< css::uno::XComponentContext >& rxContext,
765 const OUString& rSysFileName );
773 const OUString*
getOption(
const OUString& rKey )
const;
775 template<
typename ListType >
776 std::shared_ptr< ListType >
createNameList(
const OUString& rListName );
777 void setNameList(
const OUString& rListName,
const NameListRef& rxList );
779 NameListRef
getNameList(
const OUString& rListName )
const;
785 const OUString& rKey,
786 const OUString& rData )
override;
790 template<
typename ListType >
800 css::uno::Reference< css::uno::XComponentContext >
mxContext;
811 template<
typename ListType >
814 std::shared_ptr< ListType > xList;
815 if( !rListName.isEmpty() )
817 xList = std::make_shared<ListType>( *this );
823 template<
typename ListType >
826 NameListRef xList = createNameList< ListType >( rListName );
828 xList->readConfigBlock( rStrm );
836 const char* pcEnvVar,
837 const ::oox::core::FilterBase& rFilter );
839 const char* pcEnvVar,
840 const css::uno::Reference< css::uno::XComponentContext >& rxContext,
842 const OUString& rSysFileName );
851 const css::uno::Reference< css::uno::XComponentContext >&
getContext()
const {
return mxCfgData->getContext(); }
857 template<
typename Type >
863 template<
typename ListType >
869 template<
typename Type >
872 template<
typename Type >
878 const char* pcEnvVar,
879 const ::oox::core::FilterBase& rFilter );
881 const char* pcEnvVar,
882 const css::uno::Reference< css::uno::XComponentContext >& rxContext,
884 const OUString& rSysFileName );
896 template<
typename Type >
902 static_cast< Type >( nRawData ) : nDefault;
905 template<
typename ListType >
908 return mxCfgData->createNameList< ListType >( rListName );
911 template<
typename Type >
918 template<
typename Type >
922 return xList.get() && xList->hasName( nKey );
930 const css::uno::Reference< css::uno::XComponentContext >& rxContext,
931 const OUString& rFileName );
941 void startTable( sal_Int32 nW1, sal_Int32 nW2 );
942 void startTable( sal_Int32 nW1, sal_Int32 nW2, sal_Int32 nW3, sal_Int32 nW4 );
943 void startTable(
size_t nColCount,
const sal_Int32* pnColWidths );
945 void tab(
size_t nCol );
963 template<
typename Type >
966 template<
typename Type >
969 template<
typename Type >
972 template<
typename Type >
975 template<
typename Type >
978 template<
typename Type >
981 template<
typename Type >
993 css::uno::Reference< css::io::XTextOutputStream2 >
mxStrm;
997 ::std::vector< sal_Int32 >
1027 explicit TableGuard(
const OutputRef& rxOut, sal_Int32 nW1, sal_Int32 nW2 ) :
1029 explicit TableGuard(
const OutputRef& rxOut, sal_Int32 nW1, sal_Int32 nW2, sal_Int32 nW3, sal_Int32 nW4 ) :
1032 const sal_Int32* pnColWidths ) :
1090 OUStringVector::const_iterator
maIt;
1104 const css::uno::Reference< css::uno::XComponentContext >&
1113 void construct(
const ConfigRef& rxConfig );
1143 const css::uno::Reference< css::io::XInputStream >& rxStrm,
1144 const OUString& rStrgPath,
1145 const OUString& rStrmName,
1146 const OUString& rSysFileName );
1150 const OUString& rStrgPath,
1151 const OUString& rSysPath );
1155 const OUString& rSysFileName );
1162 const OUString& rStrmName,
1163 std::u16string_view rSysOutPath );
1167 const OUString& rStrgPath,
1168 const OUString& rStrmName,
1169 const OUString& rSysFileName );
1172 const OUString& rStrgPath,
1173 const OUString& rSysPath );
1177 const OUString& rStrgPath,
1178 const OUString& rItemName,
1179 std::u16string_view rSysPath,
1180 bool bIsStrg,
bool bIsStrm );
1189 maName( rName ), mbStorage( bStorage ) {}
1227 template<
typename Type >
1230 template<
typename Type >
1232 template<
typename Type >
1234 template<
typename Type >
1236 template<
typename Type >
1238 template<
typename Type >
1240 template<
typename Type >
1242 template<
typename Type >
1244 template<
typename Type >
1247 template<
typename Type >
1250 template<
typename Type >
1252 template<
typename Type >
1261 template<
typename Type >
1267 mxOut->writeName(
cfg(), nData, rListWrp );
1271 template<
typename Type >
1275 mxOut->writeName(
cfg(), nData, rListWrp );
1278 template<
typename Type >
1282 mxOut->writeDec( nData );
1286 template<
typename Type >
1290 mxOut->writeHex( nData );
1294 template<
typename Type >
1298 mxOut->writeShortHex( nData );
1302 template<
typename Type >
1306 mxOut->writeBin( nData );
1310 template<
typename Type >
1314 mxOut->writeFix( nData );
1318 template<
typename Type >
1322 mxOut->writeDec( nData );
1324 mxOut->writeBool( nData != 0 );
1328 template<
typename Type >
1336 mxOut->writeValue( nData, eFmtType );
1341 template<
typename Type >
1348 template<
typename Type >
1352 mxOut->writeDec( nData1 );
1353 mxOut->writeChar( cSep );
1354 mxOut->writeDec( nData2 );
1357 template<
typename Type >
1361 mxOut->writeHex( nData1 );
1362 mxOut->writeChar( cSep );
1363 mxOut->writeHex( nData2 );
1387 void skipBlock( sal_Int64 nBytes,
bool bShowSize =
true );
1388 void dumpRawBinary( sal_Int64 nBytes,
bool bShowOffset,
bool bStream =
false );
1390 void dumpBinary(
const String& rName, sal_Int64 nBytes,
bool bShowOffset =
true );
1401 OUString
dumpCharArray(
const String& rName, sal_Int32 nLen, rtl_TextEncoding eTextEnc,
bool bHideTrailingNul =
false );
1409 template<
typename Type >
1411 template<
typename Type >
1413 template<
typename Type >
1415 template<
typename Type >
1417 template<
typename Type >
1419 template<
typename Type >
1421 template<
typename Type >
1424 template<
typename Type1,
typename Type2 >
1426 template<
typename Type1,
typename Type2 >
1428 template<
typename Type1,
typename Type2 >
1430 template<
typename Type1,
typename Type2 >
1432 template<
typename Type1,
typename Type2 >
1434 template<
typename Type1,
typename Type2 >
1436 template<
typename Type1,
typename Type2 >
1439 template<
typename Type >
1441 template<
typename Type >
1449 template<
typename Type >
1457 template<
typename Type >
1465 template<
typename Type >
1473 template<
typename Type >
1481 template<
typename Type >
1489 template<
typename Type >
1497 template<
typename Type >
1505 template<
typename Type1,
typename Type2 >
1508 return bType1 ? dumpName< Type1 >( rName, rListWrp ) : static_cast< Type1 >( dumpName< Type2 >( rName, rListWrp ) );
1511 template<
typename Type1,
typename Type2 >
1514 return bType1 ? dumpDec< Type1 >( rName, rListWrp ) : static_cast< Type1 >( dumpDec< Type2 >( rName, rListWrp ) );
1517 template<
typename Type1,
typename Type2 >
1520 return bType1 ? dumpHex< Type1 >( rName, rListWrp ) : static_cast< Type1 >( dumpHex< Type2 >( rName, rListWrp ) );
1523 template<
typename Type1,
typename Type2 >
1526 return bType1 ? dumpBin< Type1 >( rName, rListWrp ) : static_cast< Type1 >( dumpBin< Type2 >( rName, rListWrp ) );
1529 template<
typename Type1,
typename Type2 >
1532 return bType1 ? dumpFix< Type1 >( rName, rListWrp ) : static_cast< Type1 >( dumpFix< Type2 >( rName, rListWrp ) );
1535 template<
typename Type1,
typename Type2 >
1538 return bType1 ? dumpBool< Type1 >( rName, rListWrp ) : static_cast< Type1 >( dumpBool< Type2 >( rName, rListWrp ) );
1541 template<
typename Type1,
typename Type2 >
1544 return bType1 ? dumpValue< Type1 >( rItemFmt ) : static_cast< Type1 >( dumpValue< Type2 >( rItemFmt ) );
1547 template<
typename Type >
1550 Type nData1, nData2;
1551 *
mxStrm >> nData1 >> nData2;
1555 template<
typename Type >
1558 Type nData1, nData2;
1559 *
mxStrm >> nData1 >> nData2;
1570 const OUString& rSysFileName );
1588 rtl_TextEncoding eTextEnc,
1589 const OUString& rSysFileName );
1593 rtl_TextEncoding eTextEnc );
1613 rtl_TextEncoding eTextEnc,
1614 const OUString& rSysFileName );
1619 rtl_TextEncoding eTextEnc );
1623 void implDumpLine(
const OUString& rLine, sal_uInt32 nLine );
1633 const OUString& rSysFileName );
1649 const OUString& rSysFileName,
1652 const String& rSimpleRecs );
1668 const String& rSimpleRecs );
1693 const OUString& rSysFileName,
1695 const String& rSimpleRecs );
1719 void construct(
const ConfigRef& rxConfig );
1725 #define OOX_DUMP_FILE( DumperClassName ) \
1727 DumperClassName aDumper( *this ); \
1729 if( !aDumper.isImportEnabled() ) \
1730 return aDumper.isValid(); \
1735 #define OOX_DUMP_FILE( DumperClassName ) (void)0
virtual void implDumpText(TextInputStream &rTextStrm) override
virtual OUString implGetName(const Config &rCfg, sal_Int64 nKey) const override
Returns the name for the passed key.
virtual void implDumpBaseStream(const BinaryInputStreamRef &rxStrm, const OUString &rSysFileName)
bool getBoolOption(const String &rKey, bool bDefault) const
const_iterator end() const
Returns a map iterator pointing one past the last contained name.
XmlStreamObject(const ObjectBase &rParent, const BinaryInputStreamRef &rxStrm, const OUString &rSysFileName)
static LineType readConfigLine(TextInputStream &rStrm, OUString &orKey, OUString &orData)
void writeStringItem(const String &rName, const OUString &rData)
const OUString & getStringOption(const String &rKey, const OUString &rDefault) const
void writeHexItem(const String &rName, Type nData, const NameListWrapper &rListWrp=NO_LIST)
bool isImportEnabled() const
void writeItemName(const String &rItemName)
void writeDecBoolItem(const String &rName, Type nData, const NameListWrapper &rListWrp=NO_LIST)
virtual void implProcessConfigItemInt(TextInputStream &rStrm, sal_Int64 nKey, const OUString &rData) override
const css::uno::Reference< css::uno::XComponentContext > & getContext() const
static void convertStringToStringList(OUStringVector &orVec, const OUString &rData, bool bIgnoreEmpty)
const sal_Unicode OOX_DUMP_RANGESEP
std::shared_ptr< ObjectBase > ObjectRef
Hexadecimal, as short as possible (no leading zeros).
std::shared_ptr< Output > OutputRef
const sal_Unicode OOX_DUMP_R1C1ROW
void construct(const ConfigRef &rxConfig)
static std::u16string_view trimSpaces(std::u16string_view rStr)
TableGuard(const OutputRef &rxOut, size_t nColCount, const sal_Int32 *pnColWidths)
TableGuard(const OutputRef &rxOut, sal_Int32 nW1, sal_Int32 nW2)
static OUStringPair convertStringToPair(const OUString &rString, sal_Unicode cSep= '=')
void writeHex(Type nData, bool bPrefix=true)
void setNamesFromVec(sal_Int64 nStartKey, const OUStringVector &rNames)
bool readConfigFile(const OUString &rFileUrl)
PreferredItemVector maPreferred
OutputObjectBase & operator=(OutputObjectBase const &)=default
UnitConverter(const SharedConfigData &rCfgData)
static std::u16string_view getToken(std::u16string_view rData, sal_Int32 &rnPos, sal_Unicode cSep=OOX_DUMP_LISTSEP)
virtual void implSetName(sal_Int64 nKey, const OUString &rName) override
Sets the name for the passed key.
static void appendBin(OUStringBuffer &rStr, sal_uInt8 nData, bool bDots=true)
virtual bool implIsValid() const override
virtual ~ObjectBase() override
::std::map< ExtItemFormatKey, ExtItemFormat > ExtItemFormatMap
std::unique_ptr< sal_Int32[]> pData
static void appendDec(OUStringBuffer &rStr, sal_uInt8 nData, sal_Int32 nWidth=0, sal_Unicode cFill= ' ')
FormatType
Specifiers for the output format of values.
virtual void implIncludeList(const NameListBase &rList)=0
Derived classes insert all names and other settings from the passed list.
bool isDumperEnabled() const
bool isImportEnabled() const
IndentGuard & operator=(const IndentGuard &)=delete
void emptyLine(size_t nCount=1)
virtual ~NameListBase() override
void createUnitConverter(const OUString &rData)
void writeFix(Type nData, sal_Int32 nWidth)
void setNameList(const OUString &rListName, const NameListRef &rxList)
const sal_Unicode OOX_DUMP_PLACEHOLDER
::std::vector< OUString > OUStringVector
void implDumpLine(const OUString &rLine, sal_uInt32 nLine)
Config & operator=(Config const &)=default
std::shared_ptr< BinaryInputStream > BinaryInputStreamRef
Base class for all dumper classes.
Boolean ('true' or 'false').
void addPreferredStream(const String &rStrmName)
const NameListRef & getNameList(const Config &rCfg) const
const ContentProperties & rData
static bool convertStringToInt(sal_Int64 &ornData, std::u16string_view rData)
Type getIntOption(const String &rKey, Type nDefault) const
MultiItemsGuard & operator=(const MultiItemsGuard &)=delete
::std::pair< OUString, OUString > OUStringPair
Base & operator=(Base const &)=default
virtual void implDump() override
std::shared_ptr< T > make_shared(Args &&...args)
virtual void implProcessConfigItemStr(TextInputStream &rStrm, const OUString &rKey, const OUString &rData) override
virtual bool implIsValid() const override
std::shared_ptr< StorageBase > StorageRef
virtual void implDumpText(TextInputStream &rTextStrm) override
static void appendChar(OUStringBuffer &rStr, sal_Unicode cChar, sal_Int32 nCount)
void readConfigBlockContents(TextInputStream &rStrm)
virtual OUString implGetName(const Config &rCfg, sal_Int64 nKey) const override
Returns the converted value with appended unit name.
NameListWrapper maSimpleRecs
static void appendIndex(OUStringBuffer &rStr, sal_Int64 nIdx)
void writeArray(const sal_uInt8 *pnData, std::size_t nSize, sal_Unicode cSep=OOX_DUMP_LISTSEP)
MultiItemsGuard(const OutputRef &rxOut)
NameListRef getNameList(const String &rListName) const
const StorageRef & getRootStorage() const
virtual ~OutputObjectBase() override
virtual void implProcessConfigItemStr(TextInputStream &rStrm, const OUString &rKey, const OUString &rData)
void construct(const ObjectBase &rParent, const BinaryInputStreamRef &rxBaseStrm, const OUString &rSysFileName, const BinaryInputStreamRef &rxRecStrm, const String &rRecNames, const String &rSimpleRecs)
virtual void implDumpRecordBody()
void createShortList(const OUString &rData)
const sal_Unicode OOX_DUMP_R1C1CLOSE
PreferredItem(const OUString &rName, bool bStorage)
::std::vector< sal_Int64 > Int64Vector
Floating-point, double precision.
void eraseNameList(const OUString &rListName)
virtual bool implIsValid() const override
static bool isValid(const std::shared_ptr< Base > &rxBase)
OUStringVector::const_iterator maIt
std::shared_ptr< SharedConfigData > mxCfgData
std::shared_ptr< TextInputStream > mxTextStrm
bool hasName(const NameListWrapper &rListWrp, Type nKey) const
Returns true, if the passed name list contains an entry for the passed key.
StorageIterator(const StorageRef &rxStrg)
DataType
Specifiers for atomic data types.
void writeNameItem(const String &rName, Type nData, const NameListWrapper &rListWrp)
const css::uno::Reference< css::uno::XComponentContext > & getContext() const
Output(const css::uno::Reference< css::uno::XComponentContext > &rxContext, const OUString &rFileName)
void writeDateTimeItem(const String &rName, const css::util::DateTime &rDateTime)
void constructTextStrmObj(rtl_TextEncoding eTextEnc)
const css::uno::Reference< css::uno::XComponentContext > & getContext() const
void construct(const ObjectBase &rParent, const BinaryInputStreamRef &rxStrm, rtl_TextEncoding eTextEnc, const OUString &rSysFileName)
virtual void implSetName(sal_Int64 nKey, const OUString &rName) override
Sets the name for the passed key.
void writeFixItem(const String &rName, Type nData, const NameListWrapper &rListWrp=NO_LIST)
const OUString & getSysFileName() const
void writeBool(bool bData)
TableGuard(const OutputRef &rxOut, sal_Int32 nW1)
IndentGuard(const OutputRef &rxOut)
void writeDec(Type nData, sal_Int32 nWidth=0, sal_Unicode cFill= ' ')
virtual OUString implGetNameDbl(const Config &rCfg, double fValue) const override
Returns the converted value with appended unit name.
const sal_Unicode OOX_DUMP_R1C1OPEN
void include(const OUString &rListKeys)
Includes name lists, given in a comma separated list of names of the lists.
static void appendValue(OUStringBuffer &rStr, Type nData, FormatType eFmtType)
virtual void implSetName(sal_Int64 nKey, const OUString &rName) override
Sets the name for the passed key.
virtual bool implIsValid() const override
const sal_Unicode OOX_DUMP_TABSEP
SequenceRecordObjectBase()
virtual void implDumpText(TextInputStream &rTextStrm)=0
void writeValueItem(const String &rName, Type nData, FormatType eFmtType, const NameListWrapper &rListWrp=NO_LIST)
void writeBin(Type nData, bool bDots=true)
const sal_Unicode OOX_DUMP_R1C1COL
ItemGuard(const OutputRef &rxOut, const String &rName)
virtual OUString implGetName(const Config &rCfg, sal_Int64 nKey) const override
Returns the name for the passed key.
virtual void implProcessConfigItemStr(TextInputStream &rStrm, const OUString &rKey, const OUString &rData) override
const String EMPTY_STRING
OUString getName(const Config &rCfg, double fValue) const
Returns a display name for the passed double value.
void writeValue(Type nData, FormatType eFmtType)
virtual OUString implGetName(const Config &rCfg, sal_Int64 nKey) const override
Returns the name for the passed key, or the default name, if key is not contained.
void writeAscii(const char *pcStr)
virtual void implIncludeList(const NameListBase &rList) override
Inserts all flags from the passed list.
const sal_Unicode OOX_DUMP_LISTSEP
void construct(const ObjectBase &rParent, const StorageRef &rxStrg, const OUString &rSysPath)
static void appendFix(OUStringBuffer &rStr, Type nData, sal_Int32 nWidth=0)
const SharedConfigData & mrCfgData
std::shared_ptr< StreamDataSequence > mxRecData
virtual ~ConfigItemBase()
::std::map< sal_Int64, OUString > OUStringMap
const sal_Unicode OOX_DUMP_EMPTYVALUE
void writeGuidItem(const String &rName, const OUString &rGuid)
static bool convertStringToBool(std::u16string_view rData)
Base class for storage access implementations.
css::uno::Reference< css::uno::XComponentContext > mxContext
void writeDecItem(const String &rName, Type nData, const NameListWrapper &rListWrp=NO_LIST)
virtual ~DumperBase() override
css::uno::Sequence< sal_Int8 > StreamDataSequence
void addNameToItem(Type nData, const NameListWrapper &rListWrp)
::std::set< OUString > ConfigFileSet
static bool convertFromDec(sal_Int64 &ornData, std::u16string_view rData)
NameListBase(const SharedConfigData &rCfgData)
static void appendShortHex(OUStringBuffer &rStr, sal_uInt8 nData, bool bPrefix=true)
void construct(const ObjectBase &rParent, const BinaryInputStreamRef &rxBaseStrm, const OUString &rSysFileName, const String &rRecNames, const String &rSimpleRecs)
void processConfigItem(TextInputStream &rStrm, const OUString &rKey, const OUString &rData)
virtual void implProcessConfigItemStr(TextInputStream &rStrm, const OUString &rKey, const OUString &rData) override
void insertRawName(sal_Int64 nKey, const OUString &rName)
Inserts the passed name into the internal map.
String(const char *pcStr)
NameListWrapper maRecNames
constexpr OUStringLiteral OOX_DUMP_ERR_NONAME
const OUString & getSysFileName() const
TableGuard & operator=(const TableGuard &)=delete
virtual void implIncludeList(const NameListBase &rList) override
Inserts all flags from the passed list.
void writeBinItem(const String &rName, Type nData, const NameListWrapper &rListWrp=NO_LIST)
void writeHexPairItem(const String &rName, Type nData1, Type nData2, sal_Unicode cSep= ',')
void constructRecObjBase(const BinaryInputStreamRef &rxBaseStrm, const String &rRecNames, const String &rSimpleRecs)
bool hasName(Type nKey) const
Returns true, if the map contains an entry for the passed key.
virtual bool implIsValid() const override
const sal_Unicode OOX_DUMP_BASECLASS
SharedConfigData(const OUString &rFileName, const css::uno::Reference< css::uno::XComponentContext > &rxContext, const StorageRef &rxRootStrg, const OUString &rSysFileName)
void writeCharItem(const String &rName, sal_Unicode cData)
static FormatType convertToFormatType(std::u16string_view rStr)
ExtItemFormatMap maFmtMap
::std::vector< sal_Int32 > maColPos
virtual bool implReadRecordHeader(BinaryInputStream &rBaseStrm, sal_Int64 &ornRecId, sal_Int64 &ornRecSize)=0
virtual void implSetName(sal_Int64 nKey, const OUString &rName) override
Sets the name for the passed key.
virtual bool implIsValid() const override
::std::map< OUString, OUString > ConfigDataMap
void writeShortHex(Type nData, bool bPrefix=true)
const sal_Unicode OOX_DUMP_ADDRABS
static bool convertStringToDouble(double &orfData, std::u16string_view rData)
virtual bool implIsValid() const override
static OString convertToUtf8(std::u16string_view rStr)
const OUString * implGetOption(const OUString &rKey) const
void setQuoteNames(bool bQuoteNames)
Enables or disables automatic quotation of returned names.
void construct(const ObjectBase &rParent, const OUString &rSysFileName)
NameListWrapper(const NameListRef &rxList)
FlagsList(const SharedConfigData &rCfgData)
static bool convertFromHex(sal_Int64 &ornData, std::u16string_view rData)
constexpr OUStringLiteral OOX_DUMP_UNKNOWN
NameListWrapper(const char *pcListName)
void readNameList(TextInputStream &rStrm, const OUString &rListName)
void includeList(const NameListRef &rxList)
Include all names of the passed list.
virtual void implDumpStorage(const StorageRef &rxStrg, const OUString &rStrgPath, const OUString &rSysPath)
std::shared_ptr< ListType > createNameList(const OUString &rListName)
OUString getName(const Config &rCfg, Type nKey) const
Returns the name for the passed key.
::std::map< OUString, NameListRef > NameListMap
static void appendString(OUStringBuffer &rStr, const OUString &rData, sal_Int32 nWidth, sal_Unicode cFill= ' ')
static void appendCChar(OUStringBuffer &rStr, sal_Unicode cChar, bool bPrefix=true)
virtual OUString implGetNameDbl(const Config &rCfg, double fValue) const =0
Derived classes generate and return the name for the passed double value.
TableGuard(const OutputRef &rxOut, sal_Int32 nW1, sal_Int32 nW2, sal_Int32 nW3, sal_Int32 nW4)
static OUString getSysFileName(const OUString &rStrmName, std::u16string_view rSysOutPath)
void extractStorage(const StorageRef &rxStrg, const OUString &rStrgPath, const OUString &rSysPath)
void writeArrayItem(const String &rName, const sal_uInt8 *pnData, std::size_t nSize, sal_Unicode cSep=OOX_DUMP_LISTSEP)
ConfigFileSet maConfigFiles
virtual bool implIsValid() const override
void setIgnoreFlags(sal_Int64 nIgnore)
Sets flags to be ignored on output.
void addPreferredStorage(const String &rStrgPath)
static void appendHex(OUStringBuffer &rStr, sal_uInt8 nData, bool bPrefix=true)
virtual ~SharedConfigData() override
sal_Int64 getIgnoreFlags() const
Returns the flags to be ignored on output.
virtual void implDump() override
void dumpBinaryStream(bool bShowOffset=true)
void writeName(const Config &rCfg, Type nData, const NameListWrapper &rListWrp)
void writeChar(sal_Unicode cChar, sal_Int32 nCount=1)
void construct(const char *pcEnvVar, const ::oox::core::FilterBase &rFilter)
const sal_Unicode OOX_DUMP_STRQUOTE
String(const OUString &rStr)
virtual ~Config() override
std::shared_ptr< ListType > createNameList(const String &rListName)
Static helper functions for formatted output to strings.
static void convertStringToIntList(Int64Vector &orVec, const OUString &rData, bool bIgnoreEmpty)
virtual OUString implGetNameDbl(const Config &rCfg, double fValue) const override
Returns the name for the passed double value.
virtual bool implStartRecord(BinaryInputStream &rBaseStrm, sal_Int64 &ornRecPos, sal_Int64 &ornRecId, sal_Int64 &ornRecSize)=0
const NameListWrapper NO_LIST
std::shared_ptr< NameListBase > NameListRef
void writeDecPairItem(const String &rName, Type nData1, Type nData2, sal_Unicode cSep= ',')
virtual bool implIsValid() const override
void writeString(const OUString &rStr)
::std::vector< PreferredItem > PreferredItemVector
void startTable(sal_Int32 nW1)
virtual void implSetName(sal_Int64 nKey, const OUString &rName)=0
Derived classes set the name for the passed key.
Base class of all classes providing names for specific values (name lists).
StorageIterator & operator++()
virtual void implSetName(sal_Int64 nKey, const OUString &rName) override
Sets the name for the passed key.
virtual ~StorageIterator() override
void writeDateTime(const css::util::DateTime &rDateTime)
void extractStream(StorageBase &rStrg, const OUString &rStrgPath, const OUString &rStrmName, const OUString &rSysFileName)
OUString operator()(const char *pcDefault) const
MultiList(const SharedConfigData &rCfgData)
void construct(const ConfigRef &rxConfig)
void resetItemIndex(sal_Int64 nIdx=0)
ObjectBase & operator=(ObjectBase const &)=default
virtual void implProcessConfigItemStr(TextInputStream &rStrm, const OUString &rKey, const OUString &rData) override
void setUnitName(const String &rUnitName)
void startItem(const String &rItemName)
NameListRef getNameList(const OUString &rListName) const
static void appendEncString(OUStringBuffer &rStr, const OUString &rData, bool bPrefix=true)
NameListWrapper(const OUString &rListName)
double getLength(const B2DPolygon &rCandidate)
OUString getName(const NameListWrapper &rListWrp, Type nKey) const
Returns the name for the passed key from the passed name list.
Base class for a file dumper.
CombiList(const SharedConfigData &rCfgData)
sal_Int64 getRecId() const
static DataType convertToDataType(std::u16string_view rStr)
virtual void implDumpStream(const css::uno::Reference< css::io::XInputStream > &rxStrm, const OUString &rStrgPath, const OUString &rStrmName, const OUString &rSysFileName)
void readConfigBlock(TextInputStream &rStrm)
void setFactor(double fFactor)
virtual bool implStartRecord(BinaryInputStream &rBaseStrm, sal_Int64 &ornRecPos, sal_Int64 &ornRecId, sal_Int64 &ornRecSize) override
const OUString * findRawName(sal_Int64 nKey) const
Returns the name for the passed key, or 0, if nothing found.
const OUString * getOption(const OUString &rKey) const
virtual void implIncludeList(const NameListBase &rList) override
Inserts all names from the passed list.
void writeInfoItem(const String &rName, const String &rData)
virtual bool implIsValid() const override
static void appendEncChar(OUStringBuffer &rStr, sal_Unicode cChar, sal_Int32 nCount, bool bPrefix=true)
ConfigDataMap maConfigData
std::shared_ptr< Config > ConfigRef
const sal_Unicode OOX_DUMP_FMLASTRQUOTE
virtual OUString implGetName(const Config &rCfg, sal_Int64 nKey) const =0
Derived classes generate and return the name for the passed key.
static void appendToken(OUStringBuffer &rStr, std::u16string_view rToken, sal_Unicode cSep=OOX_DUMP_LISTSEP)
void writeEmptyItem(const String &rName)
#define OOX_DUMP_ERR_NOMAP
BinaryInputStreamRef mxBaseStrm
const sal_Unicode OOX_DUMP_FUNCSEP
virtual void implIncludeList(const NameListBase &rList) override
Empty implementation.
virtual void implProcessConfigItemStr(TextInputStream &rStrm, const OUString &rKey, const OUString &rData) override
TextLineStreamObject(const ObjectBase &rParent, const BinaryInputStreamRef &rxStrm, rtl_TextEncoding eTextEnc, const OUString &rSysFileName)
const sal_Unicode OOX_DUMP_CMDPROMPT
const StorageRef & getRootStorage() const
Floating-point, single precision.
sal_Int64 getRecSize() const
String(sal_Unicode cChar)
virtual void implProcessConfigItemInt(TextInputStream &rStrm, sal_Int64 nKey, const OUString &rData)
OUStringMap::const_iterator const_iterator
BinaryStreamObject(const ObjectBase &rParent, const BinaryInputStreamRef &rxStrm, const OUString &rSysFileName)
void setName(sal_Int64 nKey, const String &rName)
Sets a name for the specified key.
void eraseNameList(const String &rListName)
static void appendBool(OUStringBuffer &rStr, bool bData)
virtual bool implIsValid() const =0
void extractItem(const StorageRef &rxStrg, const OUString &rStrgPath, const OUString &rItemName, std::u16string_view rSysPath, bool bIsStrg, bool bIsStrm)
virtual OUString implGetNameDbl(const Config &rCfg, double fValue) const override
Returns the name for the passed double value.
virtual void implDump() override
No numeric format (e.g. show name only).
virtual void implWriteExtHeader()
static OUString trimTrailingNul(const OUString &rStr)
void writeShortHexItem(const String &rName, Type nData, const NameListWrapper &rListWrp=NO_LIST)
void exclude(const OUString &rKeys)
Excludes names from the list, given in a comma separated list of their keys.
const sal_Unicode OOX_DUMP_ARRAYSEP
constexpr OUStringLiteral OOX_DUMP_UNUSED
static void enclose(OUStringBuffer &rStr, sal_Unicode cOpen, sal_Unicode cClose= '\0')
Encloses the passed string with the passed characters.
ItemGuard & operator=(const ItemGuard &)=delete
const_iterator begin() const
Returns a map iterator pointing to the first contained name.
ConstList(const SharedConfigData &rCfgData)
virtual void implDump() override
css::uno::Reference< css::io::XTextOutputStream2 > mxStrm