summaryrefslogtreecommitdiff
path: root/tools/inc
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@suse.cz>2012-12-02 22:32:41 +0100
committerLuboš Luňák <l.lunak@suse.cz>2012-12-03 18:04:24 +0100
commitc94b9c48664062396e9f8a12176970f6c90c0003 (patch)
tree5ff8ecf1c54fcc0c18c3d3f2f58c5970d2937e2b /tools/inc
parentd3e763d65c44d1838eeebbc5a581bcdd18040d8e (diff)
tools String support for fast operator+
Change-Id: I13f49a49f86a7097fce115d62271ad82609036f1
Diffstat (limited to 'tools/inc')
-rw-r--r--tools/inc/tools/string.hxx27
1 files changed, 27 insertions, 0 deletions
diff --git a/tools/inc/tools/string.hxx b/tools/inc/tools/string.hxx
index 3aeb7e9a37d7..b98899ef502f 100644
--- a/tools/inc/tools/string.hxx
+++ b/tools/inc/tools/string.hxx
@@ -154,6 +154,18 @@ public:
reinterpret_cast<rtl_uString*>(mpData)), SAL_NO_ACQUIRE );
}
+#ifdef RTL_FAST_STRING
+ template< typename T1, typename T2 >
+ UniString( const rtl::OUStringConcat< T1, T2 >& concat )
+ : mpData(NULL) { Assign( rtl::OUString( concat )); }
+ template< typename T1, typename T2 >
+ UniString& operator =( const rtl::OUStringConcat< T1, T2 >& concat )
+ { return Assign( rtl::OUString( concat )); }
+ template< typename T1, typename T2 >
+ UniString& operator +=( const rtl::OUStringConcat< T1, T2 >& concat )
+ { return Append( UniString( concat ) ); }
+#endif
+
static UniString CreateFromInt32( sal_Int32 n, sal_Int16 nRadix = 10 );
static const UniString& EmptyString();
sal_Int32 ToInt32() const;
@@ -308,6 +320,21 @@ operator <<(
// (stray surrogate halves) and embedded null characters
}
+#ifdef RTL_FAST_STRING
+namespace rtl
+{
+template<>
+struct ToStringHelper< UniString >
+ {
+ static int length( const UniString& s ) { return s.Len(); }
+ static sal_Unicode* addData( sal_Unicode* buffer, const UniString& s ) { return addDataHelper( buffer, s.GetBuffer(), s.Len()); }
+ static const bool allowOStringConcat = false;
+ static const bool allowOUStringConcat = true;
+ };
+}
+
+#endif
+
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */