View | Details | Raw Unified | Return to issue 88411
Collapse All | Expand All

(-)i18npool/source/breakiterator/breakiterator_unicode.cxx.orig (-8 / +23 lines)
Lines 85-90 Link Here
85
        if (line.aBreakIterator) delete line.aBreakIterator;
85
        if (line.aBreakIterator) delete line.aBreakIterator;
86
}
86
}
87
87
88
/*
89
	Wrapper class to provide public access to the RuleBasedBreakIterator's
90
	setbreakType method.
91
*/
92
class OOoRuleBasedBreakIterator : public RuleBasedBreakIterator {
93
	public:
94
		inline void publicSetBreakType(int32_t type) {
95
			setBreakType(type);
96
		};
97
		OOoRuleBasedBreakIterator(UDataMemory* image,
98
				UErrorCode &status) : 
99
			RuleBasedBreakIterator(image, status) { };
100
101
};
102
88
// loading ICU breakiterator on demand.
103
// loading ICU breakiterator on demand.
89
void SAL_CALL BreakIterator_Unicode::loadICUBreakIterator(const com::sun::star::lang::Locale& rLocale,
104
void SAL_CALL BreakIterator_Unicode::loadICUBreakIterator(const com::sun::star::lang::Locale& rLocale,
90
        sal_Int16 rBreakType, sal_Int16 rWordType, const sal_Char *rule, const OUString& rText) throw(uno::RuntimeException)
105
        sal_Int16 rBreakType, sal_Int16 rWordType, const sal_Char *rule, const OUString& rText) throw(uno::RuntimeException)
Lines 118-127 Link Here
118
            udata_setAppData("OpenOffice", OpenOffice_dat, &status);
133
            udata_setAppData("OpenOffice", OpenOffice_dat, &status);
119
            if ( !U_SUCCESS(status) ) throw ERROR;
134
            if ( !U_SUCCESS(status) ) throw ERROR;
120
135
121
            RuleBasedBreakIterator *rbi = NULL;
136
            OOoRuleBasedBreakIterator *rbi = NULL;
122
137
123
            if (breakRules.getLength() > 0 && breakRules[breakType].getLength() > 0) {
138
            if (breakRules.getLength() > 0 && breakRules[breakType].getLength() > 0) {
124
                rbi = new RuleBasedBreakIterator(udata_open("OpenOffice", "brk", 
139
                rbi = new OOoRuleBasedBreakIterator(udata_open("OpenOffice", "brk", 
125
                    OUStringToOString(breakRules[breakType], RTL_TEXTENCODING_ASCII_US).getStr(), &status), status);
140
                    OUStringToOString(breakRules[breakType], RTL_TEXTENCODING_ASCII_US).getStr(), &status), status);
126
            } else {
141
            } else {
127
                status = U_ZERO_ERROR;
142
                status = U_ZERO_ERROR;
Lines 131-151 Link Here
131
                aUDName.append( OUStringToOString(rLocale.Language, RTL_TEXTENCODING_ASCII_US));
146
                aUDName.append( OUStringToOString(rLocale.Language, RTL_TEXTENCODING_ASCII_US));
132
                UDataMemory* pUData = udata_open("OpenOffice", "brk", aUDName.getStr(), &status);
147
                UDataMemory* pUData = udata_open("OpenOffice", "brk", aUDName.getStr(), &status);
133
                if( U_SUCCESS(status) )
148
                if( U_SUCCESS(status) )
134
                    rbi = new RuleBasedBreakIterator( pUData, status);
149
                    rbi = new OOoRuleBasedBreakIterator( pUData, status);
135
                if (!U_SUCCESS(status) ) {
150
                if (!U_SUCCESS(status) ) {
136
                    status = U_ZERO_ERROR;
151
                    status = U_ZERO_ERROR;
137
                    pUData = udata_open("OpenOffice", "brk", rule, &status);
152
                    pUData = udata_open("OpenOffice", "brk", rule, &status);
138
                    if( U_SUCCESS(status) )
153
                    if( U_SUCCESS(status) )
139
                        rbi = new RuleBasedBreakIterator( pUData, status);
154
                        rbi = new OOoRuleBasedBreakIterator( pUData, status);
140
                    if (!U_SUCCESS(status) ) icuBI->aBreakIterator=NULL;
155
                    if (!U_SUCCESS(status) ) icuBI->aBreakIterator=NULL;
141
                }
156
                }
142
            }
157
            }
143
            if (rbi) {
158
            if (rbi) {
144
                switch (rBreakType) {
159
                switch (rBreakType) {
145
                    case LOAD_CHARACTER_BREAKITERATOR: rbi->setBreakType(UBRK_CHARACTER); break;
160
                    case LOAD_CHARACTER_BREAKITERATOR: rbi->publicSetBreakType(UBRK_CHARACTER); break;
146
                    case LOAD_WORD_BREAKITERATOR: rbi->setBreakType(UBRK_WORD); break;
161
                    case LOAD_WORD_BREAKITERATOR: rbi->publicSetBreakType(UBRK_WORD); break;
147
                    case LOAD_SENTENCE_BREAKITERATOR: rbi->setBreakType(UBRK_SENTENCE); break;
162
                    case LOAD_SENTENCE_BREAKITERATOR: rbi->publicSetBreakType(UBRK_SENTENCE); break;
148
                    case LOAD_LINE_BREAKITERATOR: rbi->setBreakType(UBRK_LINE); break;
163
                    case LOAD_LINE_BREAKITERATOR: rbi->publicSetBreakType(UBRK_LINE); break;
149
                }
164
                }
150
                icuBI->aBreakIterator = rbi;
165
                icuBI->aBreakIterator = rbi;
151
            }
166
            }

Return to issue 88411