TizenRefApp-7476 Impl. of Left-to-right, Right-to-left string utils 60/93160/1 submit/tizen/20161021.120245
authorDenis Dolzhenko <d.dolzhenko@samsung.com>
Thu, 20 Oct 2016 13:31:39 +0000 (16:31 +0300)
committerDenis Dolzhenko <d.dolzhenko@samsung.com>
Thu, 20 Oct 2016 13:34:35 +0000 (16:34 +0300)
Change-Id: I13611fa063c9de0800d7770c51117fd007408575
Signed-off-by: Denis Dolzhenko <d.dolzhenko@samsung.com>
src/Common/Utils/inc/BidirectUtils.h [new file with mode: 0644]

diff --git a/src/Common/Utils/inc/BidirectUtils.h b/src/Common/Utils/inc/BidirectUtils.h
new file mode 100644 (file)
index 0000000..e95d0c5
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef BidirectUtils_h_
+#define BidirectUtils_h_
+
+#include <string>
+
+namespace Msg
+{
+    class BidiUtils
+    {
+        public:
+            static constexpr const char *lrmChar = "\u200E";
+            static constexpr const char *rlmChar = "\u200F";
+
+            static std::string lrm(const std::string &str); // Left-to-right zero-width character
+            static std::string lrm(std::string &&str);
+
+            static std::string rlm(const std::string &str); // Right-to-left zero-width non-Arabic character
+            static std::string rlm(std::string &&str);
+    };
+
+    inline std::string BidiUtils::lrm(const std::string &str)
+    {
+        return lrmChar + str;
+    }
+
+    inline std::string BidiUtils::lrm(std::string &&str)
+    {
+        str.insert(0, lrmChar);
+        return std::move(str);
+    }
+
+    inline std::string BidiUtils::rlm(const std::string &str)
+    {
+        return rlmChar + str;
+    }
+
+    inline std::string BidiUtils::rlm(std::string &&str)
+    {
+        str.insert(0, rlmChar);
+        return std::move(str);
+    }
+}
+
+#endif /* BidirectUtils_h_ */