Пример #1
0
void calc_edits1(const char *word, map_t* edits, void load_f(map_t*,char*)) {
   int word_len, i;
   char c;
   word_len = strlen(word);
   
   char *temp = malloc(word_len+3 * sizeof(char));
   char split[2][WORD_LEN_MAX];

   for (i=0; i < word_len+1; ++i) {
       /** split */
       scopy(split[0], word, i);
       scopy(split[1], &word[i], word_len - i);
       /** delete */
       if (i < word_len) {
           scopy(temp, split[0], i);
           scopy(&temp[i], &split[1][1], word_len - i - 1);
           load_f(edits, temp);
       }
       /** inserts */
       if (i < word_len+1) {
           for (c='a'; c <= 'z'; ++c) {
              scopy(temp, split[0], i);
              temp[i] = c;
              scopy(&temp[i+1], split[1], word_len - i);
              load_f(edits, temp);
           }
       }
       /** replaces */
       if (i < word_len) {
           for (c='a'; c <= 'z'; ++c) {
               scopy(temp, split[0], i);
               temp[i] = c;
               scopy(&temp[i+1], &split[1][1], word_len - i - 1);
               load_f(edits, temp);
           } 
       }
       /** transpose */
       if (i < word_len-1) {
           scopy(temp, split[0], i);
           temp[i] = split[1][1]; 
           temp[i+1] = split[1][0]; 
           scopy(&temp[i+2], &split[1][2], word_len - i - 2);
           load_f(edits, temp);
       }
   }

   free(temp);
}
Пример #2
0
void* ModuleLoader::load(const char* filename) {
  void* lib = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
  if (!lib) {
    fprintf(stderr, "Error loading %s: %s\n", filename, dlerror());
  }
  void (*load_f)() = (void(*)())get(lib, "load");
  if (load_f) load_f();
  return lib;
}