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