1fb903a45d7b924c1dfacadaa99ebdf93fd8a1de4Bjorn Bringert#ifndef HOST_PSEUDOLOCALIZE_H 2fb903a45d7b924c1dfacadaa99ebdf93fd8a1de4Bjorn Bringert#define HOST_PSEUDOLOCALIZE_H 3fb903a45d7b924c1dfacadaa99ebdf93fd8a1de4Bjorn Bringert 4be5474da4bfc961419feaee5046162e8524f08c1Elliott Hughes#include <android-base/macros.h> 5a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin#include "StringPool.h" 6a2ef5c0d4fb863c0382e77ae00f986a019b11cbeAnton Krumin 7cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichykclass PseudoMethodImpl { 8cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk public: 9cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk virtual ~PseudoMethodImpl() {} 10cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk virtual String16 start() { return String16(); } 11cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk virtual String16 end() { return String16(); } 12cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk virtual String16 text(const String16& text) = 0; 13cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk virtual String16 placeholder(const String16& text) = 0; 14cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk}; 15fb903a45d7b924c1dfacadaa99ebdf93fd8a1de4Bjorn Bringert 16cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichykclass PseudoMethodNone : public PseudoMethodImpl { 17cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk public: 18cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk PseudoMethodNone() {} 19cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk String16 text(const String16& text) { return text; } 20cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk String16 placeholder(const String16& text) { return text; } 21cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk private: 22cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk DISALLOW_COPY_AND_ASSIGN(PseudoMethodNone); 23cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk}; 24cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk 25cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichykclass PseudoMethodBidi : public PseudoMethodImpl { 26cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk public: 27cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk String16 text(const String16& text); 28cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk String16 placeholder(const String16& text); 29cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk}; 30cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk 31cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichykclass PseudoMethodAccent : public PseudoMethodImpl { 32cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk public: 33cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk PseudoMethodAccent() : mDepth(0), mWordCount(0), mLength(0) {} 34cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk String16 start(); 35cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk String16 end(); 36cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk String16 text(const String16& text); 37cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk String16 placeholder(const String16& text); 38cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk private: 39cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk size_t mDepth; 40cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk size_t mWordCount; 41cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk size_t mLength; 42cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk}; 43cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk 44cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichykclass Pseudolocalizer { 45cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk public: 469b8528fee4eed35b8e887ded0851d08eb2b10db6Chih-Hung Hsieh explicit Pseudolocalizer(PseudolocalizationMethod m); 47cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk ~Pseudolocalizer() { if (mImpl) delete mImpl; } 48cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk void setMethod(PseudolocalizationMethod m); 49cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk String16 start() { return mImpl->start(); } 50cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk String16 end() { return mImpl->end(); } 51cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk String16 text(const String16& text); 52cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk private: 53cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk PseudoMethodImpl *mImpl; 54cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk size_t mLastDepth; 55cbb1e676b56677ae3585c067f29646dddffb4857Igor Viarheichyk}; 56fb903a45d7b924c1dfacadaa99ebdf93fd8a1de4Bjorn Bringert 57fb903a45d7b924c1dfacadaa99ebdf93fd8a1de4Bjorn Bringert#endif // HOST_PSEUDOLOCALIZE_H 58fb903a45d7b924c1dfacadaa99ebdf93fd8a1de4Bjorn Bringert 59