public static LanguageWeightPair[] ToLanguageWeightPairs(this WeighByLanguageNative wbln) { var array = new LanguageWeightPair[wbln.CountBuckets]; for (var i = 0; i < wbln.CountBuckets; i++) { var wbn = &wbln.WeighByLanguagesBasePtr[i]; array[i] = new LanguageWeightPair() { Language = wbn->Language, Weight = wbn->Weight }; } return(array); }
public static WeighByLanguageNative Create(IntPtr weighByLanguagesBasePtr) { var pairsBytePtr = (byte *)weighByLanguagesBasePtr; //var countBuckets = *pairsBytePtr++; //var weighByLanguagesPtr = (WeighByLanguage*) pairsBytePtr; var weighByLanguageNative = new WeighByLanguageNative() { CountBuckets = *pairsBytePtr++, WeighByLanguagesBasePtr = (WeighByLanguage *)pairsBytePtr, }; return(weighByLanguageNative); }
unsafe public bool TryGetValue(string ngram, out WeighByLanguageNative weighByLanguageNative) { fixed(char *ngramPtr = ngram) { IntPtr weighByLanguagesBasePtr; if (_Dictionary.TryGetValue((IntPtr)ngramPtr, out weighByLanguagesBasePtr)) { weighByLanguageNative = WeighByLanguageNative.Create(weighByLanguagesBasePtr); return(true); } } weighByLanguageNative = default(WeighByLanguageNative); return(false); }
public static WeighByLanguageNative ToWeighByLanguageNative(this IntPtr value) { return(WeighByLanguageNative.Create(value)); }