Function: register-code-conversion-map

register-code-conversion-map is a function defined in ccl.c.

Signature

(register-code-conversion-map SYMBOL MAP)

Documentation

Register SYMBOL as code conversion map MAP.

Return index number of the registered map.

Source Code

// Defined in /usr/src/emacs/src/ccl.c
{
  ptrdiff_t len;
  ptrdiff_t i;
  Lisp_Object idx;

  CHECK_SYMBOL (symbol);
  CHECK_VECTOR (map);
  if (! VECTORP (Vcode_conversion_map_vector))
    error ("Invalid code-conversion-map-vector");

  len = ASIZE (Vcode_conversion_map_vector);

  for (i = 0; i < len; i++)
    {
      Lisp_Object slot = AREF (Vcode_conversion_map_vector, i);

      if (!CONSP (slot))
	break;

      if (EQ (symbol, XCAR (slot)))
	{
	  idx = make_fixnum (i);
	  XSETCDR (slot, map);
	  Fput (symbol, Qcode_conversion_map, map);
	  Fput (symbol, Qcode_conversion_map_id, idx);
	  return idx;
	}
    }

  if (i == len)
    Vcode_conversion_map_vector = larger_vector (Vcode_conversion_map_vector,
						 1, -1);

  idx = make_fixnum (i);
  Fput (symbol, Qcode_conversion_map, map);
  Fput (symbol, Qcode_conversion_map_id, idx);
  ASET (Vcode_conversion_map_vector, i, Fcons (symbol, map));
  return idx;
}