comparison src/fns.c @ 76:c0c698873ce1 r20-0b33

Import from CVS: tag r20-0b33
author cvs
date Mon, 13 Aug 2007 09:05:10 +0200
parents 131b0175ea99
children a145efe76779
comparison
equal deleted inserted replaced
75:a4e0195b387b 76:c0c698873ce1
3041 ARRAY is a vector, bit vector, or string. 3041 ARRAY is a vector, bit vector, or string.
3042 */ 3042 */
3043 (array, item)) 3043 (array, item))
3044 { 3044 {
3045 retry: 3045 retry:
3046 if (VECTORP (array)) 3046 if (STRINGP (array))
3047 {
3048 Charcount size;
3049 Charcount i;
3050 Emchar charval;
3051 struct Lisp_String *s;
3052 CHECK_CHAR_COERCE_INT (item);
3053 CHECK_IMPURE (array);
3054 charval = XCHAR (item);
3055 s = XSTRING (array);
3056 size = string_char_length (s);
3057 for (i = 0; i < size; i++)
3058 set_string_char (s, i, charval);
3059 bump_string_modiff (array);
3060 }
3061 else if (VECTORP (array))
3047 { 3062 {
3048 Lisp_Object *p; 3063 Lisp_Object *p;
3049 int size; 3064 int size;
3050 int indecks; 3065 int i;
3051 CHECK_IMPURE (array); 3066 CHECK_IMPURE (array);
3052 size = vector_length (XVECTOR (array)); 3067 size = vector_length (XVECTOR (array));
3053 p = vector_data (XVECTOR (array)); 3068 p = vector_data (XVECTOR (array));
3054 for (indecks = 0; indecks < size; indecks++) 3069 for (i = 0; i < size; i++)
3055 p[indecks] = item; 3070 p[i] = item;
3056 } 3071 }
3057 else if (VECTORP (array)) 3072 else if (BIT_VECTORP (array))
3058 { 3073 {
3059 struct Lisp_Bit_Vector *v; 3074 struct Lisp_Bit_Vector *v;
3060 int size; 3075 int size;
3061 int indecks; 3076 int i;
3062
3063 CHECK_BIT (item); 3077 CHECK_BIT (item);
3064 CHECK_IMPURE (array); 3078 CHECK_IMPURE (array);
3065 v = XBIT_VECTOR (array); 3079 v = XBIT_VECTOR (array);
3066 size = bit_vector_length (v); 3080 size = bit_vector_length (v);
3067 for (indecks = 0; indecks < size; indecks++) 3081 for (i = 0; i < size; i++)
3068 set_bit_vector_bit (v, indecks, XINT (item)); 3082 set_bit_vector_bit (v, i, XINT (item));
3069 }
3070 else if (STRINGP (array))
3071 {
3072 Charcount size;
3073 Charcount indecks;
3074 Emchar charval;
3075 CHECK_CHAR_COERCE_INT (item);
3076 CHECK_IMPURE (array);
3077 charval = XCHAR (item);
3078 size = string_char_length (XSTRING (array));
3079 for (indecks = 0; indecks < size; indecks++)
3080 set_string_char (XSTRING (array), indecks, charval);
3081 bump_string_modiff (array);
3082 } 3083 }
3083 else 3084 else
3084 { 3085 {
3085 array = wrong_type_argument (Qarrayp, array); 3086 array = wrong_type_argument (Qarrayp, array);
3086 goto retry; 3087 goto retry;