/* -*-C-*- ******************************************************************************** * * File: choicearr.h (Formerly choicearr.h) * Description: * Author: Mark Seaman, SW Productivity * Created: Fri Oct 16 14:37:00 1987 * Modified: Tue Mar 19 15:27:49 1991 (Mark Seaman) marks@hpgrlt * Language: C * Package: N/A * Status: Reusable Software Component * * (c) Copyright 1987, Hewlett-Packard Company. ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** http://www.apache.org/licenses/LICENSE-2.0 ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. * ******************************************************************************** */ #ifndef CHOICEARR_H #define CHOICEARR_H /* ---------------------------------------------------------------------- I n c l u d e s ---------------------------------------------------------------------- */ #include "tessarray.h" #include "choices.h" /* ---------------------------------------------------------------------- T y p e s ---------------------------------------------------------------------- */ typedef ARRAY CHOICES_LIST; #define CHOICES_PER_LIST 40 /* ---------------------------------------------------------------------- M a c r o s ---------------------------------------------------------------------- */ /********************************************************************** * free_choice_list * * Free a list of choices. Free the array structure but not each of the * sublists of choices. **********************************************************************/ #define free_choice_list(choice_list) \ array_free (choice_list) /********************************************************************** * for_each_choice * * Iterate through each of the possible choices. **********************************************************************/ #define for_each_choice(array,index) \ array_loop (array, index) /********************************************************************** * free_all_choices * * Free an array of choices (deep free). **********************************************************************/ #define free_all_choices(choices,index) \ for_each_choice (choices, index) { \ free_choices ((CHOICES) array_value (choices, index)); \ } \ array_free (choices) \ /********************************************************************** * new_choice_list * * Return a new array structure that is a list of choices. Each set of * choices will be of type CHOICES. **********************************************************************/ #define new_choice_list() \ array_new (CHOICES_PER_LIST) #endif