ctype->charnames_idx = (uint32_t *) xmalloc (MAX_CHARNAMES_IDX * sizeof (uint32_t)); for (cnt = 0; cnt < MAX_CHARNAMES_IDX; ++cnt) ctype->charnames_idx[cnt] = ~((uint32_t) 0);
ctype_startup (struct linereader *lr, struct localedef_t *locale,	       struct charmap_t *charmap, struct localedef_t *copy_locale,	       int ignore_content){  unsigned int cnt;  struct locale_ctype_t *ctype;  if (!ignore_content && locale->categories[LC_CTYPE].ctype == NULL)    {      if (copy_locale == NULL)	{	  /* Allocate the needed room.  */	  locale->categories[LC_CTYPE].ctype = ctype =	    (struct locale_ctype_t *) xcalloc (1,					       sizeof (struct locale_ctype_t));	  /* We have seen no names yet.  */	  ctype->charnames_max = charmap->mb_cur_max == 1 ? 256 : 512;	  ctype->charnames =	    (unsigned int *) xmalloc (ctype->charnames_max				      * sizeof (unsigned int));	  for (cnt = 0; cnt < 256; ++cnt)	    ctype->charnames[cnt] = cnt;	  ctype->charnames_act = 256;	  /* Fill character class information.  */	  ctype->last_class_char = ILLEGAL_CHAR_VALUE;	  /* The order of the following instructions determines the bit	     positions!  */	  ctype_class_new (lr, ctype, "upper");	  ctype_class_new (lr, ctype, "lower");	  ctype_class_new (lr, ctype, "alpha");	  ctype_class_new (lr, ctype, "digit");	  ctype_class_new (lr, ctype, "xdigit");	  ctype_class_new (lr, ctype, "space");	  ctype_class_new (lr, ctype, "print");	  ctype_class_new (lr, ctype, "graph");	  ctype_class_new (lr, ctype, "blank");	  ctype_class_new (lr, ctype, "cntrl");	  ctype_class_new (lr, ctype, "punct");	  ctype_class_new (lr, ctype, "alnum");#ifdef PREDEFINED_CLASSES	  /* The following are extensions from ISO 14652.  */	  ctype_class_new (lr, ctype, "left_to_right");	  ctype_class_new (lr, ctype, "right_to_left");	  ctype_class_new (lr, ctype, "num_terminator");	  ctype_class_new (lr, ctype, "num_separator");	  ctype_class_new (lr, ctype, "segment_separator");	  ctype_class_new (lr, ctype, "block_separator");	  ctype_class_new (lr, ctype, "direction_control");	  ctype_class_new (lr, ctype, "sym_swap_layout");	  ctype_class_new (lr, ctype, "char_shape_selector");	  ctype_class_new (lr, ctype, "num_shape_selector");	  ctype_class_new (lr, ctype, "non_spacing");	  ctype_class_new (lr, ctype, "non_spacing_level3");	  ctype_class_new (lr, ctype, "normal_connect");	  ctype_class_new (lr, ctype, "r_connect");	  ctype_class_new (lr, ctype, "no_connect");	  ctype_class_new (lr, ctype, "no_connect-space");	  ctype_class_new (lr, ctype, "vowel_connect");#endif	  ctype->class_collection_max = charmap->mb_cur_max == 1 ? 256 : 512;	  ctype->class_collection	    = (uint32_t *) xcalloc (sizeof (unsigned long int),				    ctype->class_collection_max);	  ctype->class_collection_act = 256;	  /* Fill character map information.  */	  ctype->last_map_idx = MAX_NR_CHARMAP;	  ctype_map_new (lr, ctype, "toupper", charmap);	  ctype_map_new (lr, ctype, "tolower", charmap);#ifdef PREDEFINED_CLASSES	  ctype_map_new (lr, ctype, "tosymmetric", charmap);#endif	  /* Fill first 256 entries in `toXXX' arrays.  */	  for (cnt = 0; cnt < 256; ++cnt)	    {	      ctype->map_collection[0][cnt] = cnt;	      ctype->map_collection[1][cnt] = cnt;#ifdef PREDEFINED_CLASSES	      ctype->map_collection[2][cnt] = cnt;#endif	      ctype->map256_collection[0][cnt] = cnt;	      ctype->map256_collection[1][cnt] = cnt;	    }	  obstack_init (&ctype->mempool);	}      else	ctype = locale->categories[LC_CTYPE].ctype =	  copy_locale->categories[LC_CTYPE].ctype;    }}