--- /dev/null
+/*
+ * 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_ */