OLD | NEW |
(Empty) | |
| 1 /* |
| 2 *******************************************************************************
* |
| 3 * Copyright (C) 2005-2007, International Business Machines |
| 4 * Corporation and others. All Rights Reserved. |
| 5 *******************************************************************************
* |
| 6 */ |
| 7 |
| 8 #include "unicode/utypes.h" |
| 9 |
| 10 #if !UCONFIG_NO_CONVERSION |
| 11 #include "unicode/ucsdet.h" |
| 12 #include "csdetect.h" |
| 13 #include "csmatch.h" |
| 14 |
| 15 #include "cmemory.h" |
| 16 |
| 17 U_NAMESPACE_USE |
| 18 |
| 19 #define ARRAY_SIZE(array) (sizeof array / sizeof array[0]) |
| 20 |
| 21 #define NEW_ARRAY(type,count) (type *) uprv_malloc((count) * sizeof(type)) |
| 22 #define DELETE_ARRAY(array) uprv_free((void *) (array)) |
| 23 |
| 24 U_CDECL_BEGIN |
| 25 |
| 26 U_CAPI UCharsetDetector * U_EXPORT2 |
| 27 ucsdet_open(UErrorCode *status) |
| 28 { |
| 29 if(U_FAILURE(*status)) { |
| 30 return 0; |
| 31 } |
| 32 |
| 33 CharsetDetector* csd = new CharsetDetector(*status); |
| 34 |
| 35 if (U_FAILURE(*status)) { |
| 36 delete csd; |
| 37 csd = NULL; |
| 38 } |
| 39 |
| 40 return (UCharsetDetector *) csd; |
| 41 } |
| 42 |
| 43 U_CAPI void U_EXPORT2 |
| 44 ucsdet_close(UCharsetDetector *ucsd) |
| 45 { |
| 46 CharsetDetector *csd = (CharsetDetector *) ucsd; |
| 47 delete csd; |
| 48 } |
| 49 |
| 50 U_CAPI void U_EXPORT2 |
| 51 ucsdet_setText(UCharsetDetector *ucsd, const char *textIn, int32_t len, UErrorCo
de *status) |
| 52 { |
| 53 if(U_FAILURE(*status)) { |
| 54 return; |
| 55 } |
| 56 |
| 57 ((CharsetDetector *) ucsd)->setText(textIn, len); |
| 58 } |
| 59 |
| 60 U_CAPI const char * U_EXPORT2 |
| 61 ucsdet_getName(const UCharsetMatch *ucsm, UErrorCode *status) |
| 62 { |
| 63 if(U_FAILURE(*status)) { |
| 64 return NULL; |
| 65 } |
| 66 |
| 67 return ((CharsetMatch *) ucsm)->getName(); |
| 68 } |
| 69 |
| 70 U_CAPI int32_t U_EXPORT2 |
| 71 ucsdet_getConfidence(const UCharsetMatch *ucsm, UErrorCode *status) |
| 72 { |
| 73 if(U_FAILURE(*status)) { |
| 74 return 0; |
| 75 } |
| 76 |
| 77 return ((CharsetMatch *) ucsm)->getConfidence(); |
| 78 } |
| 79 |
| 80 U_CAPI const char * U_EXPORT2 |
| 81 ucsdet_getLanguage(const UCharsetMatch *ucsm, UErrorCode *status) |
| 82 { |
| 83 if(U_FAILURE(*status)) { |
| 84 return NULL; |
| 85 } |
| 86 |
| 87 return ((CharsetMatch *) ucsm)->getLanguage(); |
| 88 } |
| 89 |
| 90 U_CAPI const UCharsetMatch * U_EXPORT2 |
| 91 ucsdet_detect(UCharsetDetector *ucsd, UErrorCode *status) |
| 92 { |
| 93 if(U_FAILURE(*status)) { |
| 94 return NULL; |
| 95 } |
| 96 |
| 97 return (const UCharsetMatch *) ((CharsetDetector *) ucsd)->detect(*status); |
| 98 } |
| 99 |
| 100 U_CAPI void U_EXPORT2 |
| 101 ucsdet_setDeclaredEncoding(UCharsetDetector *ucsd, const char *encoding, int32_t
length, UErrorCode *status) |
| 102 { |
| 103 if(U_FAILURE(*status)) { |
| 104 return; |
| 105 } |
| 106 |
| 107 ((CharsetDetector *) ucsd)->setDeclaredEncoding(encoding,length); |
| 108 } |
| 109 |
| 110 U_CAPI const UCharsetMatch** |
| 111 ucsdet_detectAll(UCharsetDetector *ucsd, |
| 112 int32_t *maxMatchesFound, UErrorCode *status) |
| 113 { |
| 114 if(U_FAILURE(*status)) { |
| 115 return NULL; |
| 116 } |
| 117 |
| 118 CharsetDetector *csd = (CharsetDetector *) ucsd; |
| 119 |
| 120 return (const UCharsetMatch**)csd->detectAll(*maxMatchesFound,*status); |
| 121 } |
| 122 |
| 123 // U_CAPI const char * U_EXPORT2 |
| 124 // ucsdet_getDetectableCharsetName(const UCharsetDetector *csd, int32_t index, U
ErrorCode *status) |
| 125 // { |
| 126 // if(U_FAILURE(*status)) { |
| 127 // return 0; |
| 128 // } |
| 129 // return csd->getCharsetName(index,*status); |
| 130 // } |
| 131 |
| 132 // U_CAPI int32_t U_EXPORT2 |
| 133 // ucsdet_getDetectableCharsetsCount(const UCharsetDetector *csd, UErrorCode *st
atus) |
| 134 // { |
| 135 // if(U_FAILURE(*status)) { |
| 136 // return -1; |
| 137 // } |
| 138 // return UCharsetDetector::getDetectableCount(); |
| 139 // } |
| 140 |
| 141 U_CAPI UBool U_EXPORT2 |
| 142 ucsdet_isInputFilterEnabled(const UCharsetDetector *ucsd) |
| 143 { |
| 144 // todo: could use an error return... |
| 145 if (ucsd == NULL) { |
| 146 return FALSE; |
| 147 } |
| 148 |
| 149 return ((CharsetDetector *) ucsd)->getStripTagsFlag(); |
| 150 } |
| 151 |
| 152 U_CAPI UBool U_EXPORT2 |
| 153 ucsdet_enableInputFilter(UCharsetDetector *ucsd, UBool filter) |
| 154 { |
| 155 // todo: could use an error return... |
| 156 if (ucsd == NULL) { |
| 157 return FALSE; |
| 158 } |
| 159 |
| 160 CharsetDetector *csd = (CharsetDetector *) ucsd; |
| 161 UBool prev = csd->getStripTagsFlag(); |
| 162 |
| 163 csd->setStripTagsFlag(filter); |
| 164 |
| 165 return prev; |
| 166 } |
| 167 |
| 168 U_CAPI int32_t U_EXPORT2 |
| 169 ucsdet_getUChars(const UCharsetMatch *ucsm, |
| 170 UChar *buf, int32_t cap, UErrorCode *status) |
| 171 { |
| 172 if(U_FAILURE(*status)) { |
| 173 return 0; |
| 174 } |
| 175 |
| 176 return ((CharsetMatch *) ucsm)->getUChars(buf, cap, status); |
| 177 } |
| 178 U_CDECL_END |
| 179 |
| 180 #endif |
OLD | NEW |