Codemod asserts to assertxs in the runtime
[hiphop-php.git] / hphp / runtime / ext / icu / ext_icu_transliterator.h
blobdc5943bae73994ef2d84e9dbf4e51ada382681d1
1 #ifndef incl_HPHP_ICU_TRANSLITERATOR_H
2 #define incl_HPHP_ICU_TRANSLITERATOR_H
4 #include "hphp/runtime/ext/extension.h"
5 #include "hphp/runtime/ext/icu/icu.h"
7 #include <unicode/translit.h>
9 namespace HPHP { namespace Intl {
10 /////////////////////////////////////////////////////////////////////////////
11 extern const StaticString s_Transliterator;
13 struct Transliterator : IntlError {
14 Transliterator() {}
15 Transliterator(const Transliterator&) = delete;
16 Transliterator& operator=(const Transliterator& src) {
17 if (src.m_trans) {
18 m_trans = src.m_trans->clone();
20 return *this;
22 ~Transliterator() { setTransliterator(nullptr); }
24 bool isValid() const {
25 return m_trans;
28 static Transliterator* Get(ObjectData* obj) {
29 return GetData<Transliterator>(obj, s_Transliterator);
32 static Object newInstance(icu::Transliterator* trans) {
33 if (!c_Transliterator) {
34 c_Transliterator = Unit::lookupClass(s_Transliterator.get());
35 assertx(c_Transliterator);
37 Object obj{c_Transliterator};
38 auto data = Native::data<Transliterator>(obj);
39 data->setTransliterator(trans);
40 return obj;
43 icu::Transliterator* trans() const { return m_trans; }
44 void setTransliterator(icu::Transliterator* trans) {
45 if (m_trans) {
46 delete m_trans;
48 m_trans = trans;
51 private:
52 icu::Transliterator* m_trans{nullptr};
54 static Class* c_Transliterator;
57 /////////////////////////////////////////////////////////////////////////////
58 }} // namespace HPHP::Intl
60 #endif // incl_HPHP_ICU_TRANSLITERATOR_H