public void wordBreak(string text, Action <PutTypes, Int16, Int16> onPutWord) { if (string.IsNullOrEmpty(text)) { return; } if (breaker == null && item != null) { breaker = item.getWordBreaker(); } if (breaker == null) { breaker = Lib.items[Langs._].getWordBreaker(); //neutral word breaker } if (breaker == null) { throw new Exception("breaker == null"); } BreakSink cws = new BreakSink(onPutWord); //CPhraseSink cps = new CPhraseSink(res); TEXT_SOURCE pTextSource = new TEXT_SOURCE(); pTextSource.pfnFillTextBuffer += fillTextBuffer; pTextSource.awcBuffer = text; pTextSource.iCur = 0; pTextSource.iEnd = text.Length; breaker.BreakText(ref pTextSource, cws, /*cps*/ null); }
//struct StemItem { public PutTypes type; public string word; } static void wordBreak(string text, IWordBreaker breaker, Action <PutTypes, int, int> onPutWord) { if (string.IsNullOrEmpty(text)) { return; } BreakSink cws = new BreakSink(onPutWord); TEXT_SOURCE pTextSource = new TEXT_SOURCE(); pTextSource.pfnFillTextBuffer += fillTextBuffer; pTextSource.awcBuffer = text; pTextSource.iCur = 0; pTextSource.iEnd = text.Length; breaker.BreakText(ref pTextSource, cws, /*cps*/ null); }