MudOSa4DGD/
MudOSa4DGD/bin/
MudOSa4DGD/data/
MudOSa4DGD/doc/
MudOSa4DGD/doc/driver/
MudOSa4DGD/doc/efun/bitstrings/
MudOSa4DGD/doc/efun/command/
MudOSa4DGD/doc/efun/communication/
MudOSa4DGD/doc/efun/heart_beat/
MudOSa4DGD/doc/efun/interactive/
MudOSa4DGD/doc/efun/inventory/
MudOSa4DGD/doc/efun/living/
MudOSa4DGD/doc/efun/mappings/
MudOSa4DGD/doc/efun/strings/
MudOSa4DGD/doc/efun/uid/
MudOSa4DGD/doc/funs/
MudOSa4DGD/doc/language/
MudOSa4DGD/mudlib/dgd/doc/
MudOSa4DGD/mudlib/dgd/lib/include/dgd/
MudOSa4DGD/mudlib/dgd/lib/std/
MudOSa4DGD/mudlib/dgd/lib/sys/
MudOSa4DGD/mudlib/dgd/log/
MudOSa4DGD/mudlib/log/
MudOSa4DGD/mudlib/std/include/
MudOSa4DGD/mudlib/std/obj/
/*
 * translate.c
 *
 * SFUN: translate a string using a mapping as dictionary
 *
 * Taken from VikingMUD
 * Modified for DGD by Frank Schmidt
 *
 */

#ifndef __AUTO             /* outside auto object */


string transl(string a, mapping d) {
  return d[a] ? d[a] : a;
}


#else                      /* inside auto object */


static varargs string translate(string arg, mapping dict, int intext) {
  if (intext) {
    /* on non-word basis */
    string *org, *sub;
    int i;

    org = map_indices(dict);
    sub = map_values(dict);
    for (i = sizeof(org); --i >= 0; ) {
      arg = replace_string(arg, org[i], sub[i]);
    }
  }
  else {
    /* on word by word basis (fastest) */
    arg = big_implode(map_array(big_explode(arg, " "),
			    "transl", SIMUL_EFUN, dict),
		  " ");
  }

  /* return translated string */
  return arg;
}


#endif