extern "C" ASPELL_EXPORT CanHaveError * new_aspell_speller(Config * config) { PosibErr<Speller *> ret = new_speller(config); if (ret.has_err()) { return new CanHaveError(ret.release_err()); } else { return ret; } }
PosibErr<void> setup(CachePtr<Data> & res, GlobalCache<Data> * cache, typename Data::CacheConfig * config, const typename Data::CacheKey & key) { PosibErr<Data *> pe = get_cache_data(cache, config, key); if (pe.has_err()) return pe; res.reset(pe.data); return no_err; }
PosibErr<void> setup(const Config & c, ParmStr from, ParmStr to, Normalize norm) { delete conv; conv = 0; PosibErr<Convert *> pe = new_convert_if_needed(c, from, to, norm); if (pe.has_err()) return pe; conv = pe.data; return no_err; }
PosibErr<void> create_default_readonly_dict(StringEnumeration * els, Config & config) { CachePtr<Language> lang; PosibErr<Language *> res = new_language(config); if (res.has_err()) return res; lang.reset(res.data); lang->set_lang_defaults(config); RET_ON_ERR(create(els,*lang,config)); return no_err; }
PosibErr<Data *> get_cache_data(GlobalCache<Data> * cache, typename Data::CacheConfig * config, const typename Data::CacheKey & key) { LOCK(&cache->lock); Data * n = cache->find(key); //CERR << "Getting " << key << " for " << cache->name << "\n"; if (n) { n->refcount++; return n; } PosibErr<Data *> res = Data::get_new(key, config); if (res.has_err()) { //CERR << "ERROR\n"; return res; } n = res.data; cache->add(n); //CERR << "LOADED FROM DISK\n"; return n; }