Main Page | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

md.c File Reference

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "md.h"
#include <stdarg.h>
#include <ctype.h>
#include "l_alloc_new.h"

Go to the source code of this file.

Compounds

struct  MD_Buf

Defines

#define MD_DEBUG_MACROS

Typedefs

typedef MD_Buf MD_Buf

Functions

void MD_resize_field_arrays (MD_Section *section, int max_index)
void MD_resize_element_array (MD_Field *field, int max_index)
int MD_legal_ident (char *ident)
void MD_punt (MD *md, char *fmt,...)
void MD_warn (FILE *out, char *fmt,...)
char * MD_concat_strings (char *string1, char *string2)
MD_Symbol_TableMD_new_symbol_table (MD *md, char *name, int expected_size)
void MD_delete_symbol_table (MD_Symbol_Table *table, void(*free_routine)(void *))
void MD_resize_symbol_table (MD_Symbol_Table *table)
unsigned int MD_hash_string (char *string)
MD_SymbolMD_add_symbol (MD_Symbol_Table *table, char *name, void *data)
void MD_rename_symbol (MD_Symbol *symbol, char *new_name)
MD_SymbolMD_find_symbol (MD_Symbol_Table *table, char *name)
void * _MD_find_symbol_data (MD_Symbol_Table *table, char *name)
void MD_delete_symbol (MD_Symbol *symbol, void(*free_routine)(void *))
void MD_print_symbol_table_hash (FILE *out, MD_Symbol_Table *table)
MDMD_new_md (char *name, int num_sections)
void MD_delete_md (MD *md)
int MD_check_md (FILE *out, MD *md)
MD_BufMD_new_buf ()
void MD_resize_buf (MD_Buf *buf)
void MD_delete_buf (MD_Buf *buf)
int MD_read_int (FILE *in)
double MD_read_double (FILE *in, MD_Buf *value_buf)
void MD_read_string (FILE *in, MD_Buf *value_buf)
void MD_read_nl (FILE *in)
void MD_read_sp (FILE *in)
MDMD_read_md (FILE *in, char *name)
void MD_write_md (FILE *out, MD *md)
void MD_print_md (FILE *out, MD *md, int page_width)
void MD_print_md_declarations (FILE *out, MD *md, int page_width)
void MD_print_md_template (FILE *out, MD *md)
MD_SectionMD_new_section (MD *md, char *name, int num_entries, int num_fields)
int _MD_num_sections (MD *md)
MD_Section_MD_find_section (MD *md, char *name)
MD_SectionMD_first_section (MD *md)
MD_SectionMD_last_section (MD *md)
MD_SectionMD_next_section (MD_Section *section)
MD_SectionMD_prev_section (MD_Section *section)
void * _MD_set_section_ext (MD_Section *section, void *ext)
void * _MD_get_section_ext (MD_Section *section)
void _MD_free_section (MD_Section *section)
void _MD_delete_section (MD_Section *section)
int _MD_check_section (FILE *out, MD_Section *section, char *caller_name)
void MD_print_section (FILE *out, MD_Section *section, int page_width)
void MD_print_section_template (FILE *out, MD_Section *section)
MD_EntryMD_new_entry (MD_Section *section, char *name)
void MD_rename_entry (MD_Entry *entry, char *new_name)
int _MD_num_entries (MD_Section *section)
MD_Entry_MD_find_entry (MD_Section *section, char *name)
MD_EntryMD_first_entry (MD_Section *section)
MD_EntryMD_last_entry (MD_Section *section)
MD_EntryMD_next_entry (MD_Entry *entry)
MD_EntryMD_prev_entry (MD_Entry *entry)
void * _MD_set_entry_ext (MD_Entry *entry, void *ext)
void * _MD_get_entry_ext (MD_Entry *entry)
void _MD_free_entry (MD_Entry *entry)
void _MD_delete_entry (MD_Entry *entry)
int _MD_check_entry (FILE *out, MD_Entry *entry, char *caller_name)
void MD_print_entry (FILE *out, MD_Entry *entry, int page_width)
void MD_print_entry_template (FILE *out, MD_Entry *entry)
MD_Field_DeclMD_new_field_decl (MD_Section *section, char *name, MD_FIELD_TYPE field_type)
int _MD_num_field_decls (MD_Section *section)
int _MD_max_field_index (MD_Section *section)
MD_Field_Decl_MD_find_field_decl (MD_Section *section, char *name)
MD_Field_DeclMD_first_field_decl (MD_Section *section)
MD_Field_DeclMD_last_field_decl (MD_Section *section)
MD_Field_DeclMD_next_field_decl (MD_Field_Decl *field_decl)
MD_Field_DeclMD_prev_field_decl (MD_Field_Decl *field_decl)
void _MD_free_field_decl (MD_Field_Decl *field_decl)
void MD_delete_field_decl (MD_Field_Decl *field_decl)
void MD_print_field_decl (FILE *out, MD_Field_Decl *field_decl, int page_width)
MD_Element_ReqMD_new_element_req (MD_Field_Decl *field_decl, int index, char *caller_name)
void MD_require_int (MD_Field_Decl *field_decl, int element_index)
void MD_require_double (MD_Field_Decl *field_decl, int element_index)
void MD_require_string (MD_Field_Decl *field_decl, int element_index)
void MD_require_link (MD_Field_Decl *field_decl, int element_index, MD_Section *section)
void MD_require_multi_target_link (MD_Field_Decl *field_decl, int element_index, int section_array_size, MD_Section **section_array)
void MD_kleene_star_requirement (MD_Field_Decl *field_decl, int element_index)
MD_FieldMD_new_field (MD_Entry *entry, MD_Field_Decl *decl, int num_elements)
MD_Field_MD_find_field (MD_Entry *entry, MD_Field_Decl *field_decl)
void MD_delete_field (MD_Field *field)
int _MD_check_field (FILE *out, MD_Field *field, char *caller_name)
int MD_check_setting (FILE *out, MD_Field *field, int index, char *caller_name)
int _MD_num_elements (MD_Field *field)
int _MD_max_element_index (MD_Field *field)
void _MD_set_int (MD_Field *field, int index, int value)
void _MD_set_int_type_checking (MD_Field *field, int index, int value)
int _MD_get_int (MD_Field *field, int index)
void _MD_set_double (MD_Field *field, int index, double value)
void _MD_set_double_type_checking (MD_Field *field, int index, double value)
double _MD_get_double (MD_Field *field, int index)
void _MD_set_string (MD_Field *field, int index, char *value)
void _MD_set_string_type_checking (MD_Field *field, int index, char *value)
char * _MD_get_string (MD_Field *field, int index)
void _MD_set_link (MD_Field *field, int index, MD_Entry *value)
void _MD_set_link_type_checking (MD_Field *field, int index, MD_Entry *value)
MD_Entry_MD_get_link (MD_Field *field, int index)
void MD_delete_element (MD_Field *field, int index)

Variables

char copyright []
L_Alloc_PoolMD_Buf_pool = NULL
L_Alloc_PoolMD_pool = NULL
L_Alloc_PoolMD_Symbol_Table_pool = NULL
L_Alloc_PoolMD_Symbol_pool = NULL
L_Alloc_PoolMD_Section_pool = NULL
L_Alloc_PoolMD_Entry_pool = NULL
L_Alloc_PoolMD_Field_Decl_pool = NULL
L_Alloc_PoolMD_Element_Req_pool = NULL
L_Alloc_PoolMD_Field_pool = NULL
L_Alloc_PoolMD_Element_pool = NULL
char * MD_type_name []


Define Documentation

#define MD_DEBUG_MACROS
 

Definition at line 91 of file md.c.


Typedef Documentation

typedef struct MD_Buf MD_Buf
 


Function Documentation

int _MD_check_entry FILE *  out,
MD_Entry entry,
char *  caller_name
 

Definition at line 2577 of file md.c.

References _MD_check_field(), MD_Entry::field, MD_Section::field_decl, MD_Section::max_field_index, MD_REQUIRED_FIELD, MD_warn(), MD_Section::name, MD_Entry::name, MD_Field_Decl::name, out, MD_Entry::section, and MD_Field_Decl::type.

Referenced by _MD_check_section().

int _MD_check_field FILE *  out,
MD_Field field,
char *  caller_name
 

Definition at line 4109 of file md.c.

References MD_Field::decl, MD_Element_Req::desc, MD_Field::element, MD_Field::entry, i, MD_Field_Decl::kleene_starred_req, MD_Element_Req::link, MD_Element_Req::link_array_size, MD_Field::max_element_index, MD_Field_Decl::max_require_index, MD_LINK, MD_type_name, MD_warn(), MD_Section::name, MD_Entry::name, MD_Field_Decl::name, out, MD_Field_Decl::require, MD_Entry::section, MD_Element::type, MD_Element_Req::type, and MD_Element::value.

Referenced by _MD_check_entry().

int _MD_check_section FILE *  out,
MD_Section section,
char *  caller_name
 

Definition at line 2237 of file md.c.

References _MD_check_entry(), MD_Symbol::data, MD_Section::entry_table, MD_Symbol_Table::head_symbol, MD_Symbol::next_symbol, and out.

Referenced by MD_check_md().

void _MD_delete_entry MD_Entry entry  ) 
 

Definition at line 2556 of file md.c.

References _MD_free_entry(), MD_delete_symbol(), and MD_Entry::symbol.

void _MD_delete_section MD_Section section  ) 
 

Definition at line 2215 of file md.c.

References _MD_free_section(), MD_delete_symbol(), and MD_Section::symbol.

MD_Entry* _MD_find_entry MD_Section section,
char *  name
 

Definition at line 2413 of file md.c.

References _MD_find_symbol_data(), and MD_Section::entry_table.

MD_Field* _MD_find_field MD_Entry entry,
MD_Field_Decl field_decl
 

Definition at line 4036 of file md.c.

References MD_Entry::field, MD_Field_Decl::field_index, MD_Section::md, MD_punt(), MD_Entry::name, MD_Section::name, MD_Field_Decl::name, MD_Entry::section, and MD_Field_Decl::section.

MD_Field_Decl* _MD_find_field_decl MD_Section section,
char *  name
 

Definition at line 3192 of file md.c.

References _MD_find_symbol_data(), and MD_Section::field_decl_table.

MD_Section* _MD_find_section MD md,
char *  name
 

Definition at line 2079 of file md.c.

References _MD_find_symbol_data(), and MD::section_table.

void* _MD_find_symbol_data MD_Symbol_Table table,
char *  name
 

Definition at line 604 of file md.c.

References MD_Symbol::data, MD_Symbol_Table::hash, MD_Symbol_Table::hash_mask, MD_Symbol::hash_val, MD_hash_string(), MD_Symbol::name, MD_Symbol::next_hash, and strcmp().

Referenced by _MD_find_entry(), _MD_find_field_decl(), and _MD_find_section().

void _MD_free_entry MD_Entry entry  ) 
 

Definition at line 2516 of file md.c.

References MD_Entry::field, free(), L_free(), MD_Section::max_field_index, MD_delete_field(), MD_Entry_pool, MD_Entry::name, and MD_Entry::section.

void _MD_free_field_decl MD_Field_Decl field_decl  ) 
 

Definition at line 3276 of file md.c.

References MD_Element_Req::desc, MD_Section::field_decl, MD_Field_Decl::field_index, free(), i, L_free(), MD_Element_Req::link, MD_Field_Decl::max_require_index, MD_Element_Req_pool, MD_Field_Decl_pool, MD_LINK, MD_Field_Decl::name, MD_Field_Decl::require, MD_Field_Decl::section, and MD_Element_Req::type.

void _MD_free_section MD_Section section  ) 
 

Definition at line 2180 of file md.c.

References _MD_free_entry(), _MD_free_field_decl(), MD_Section::entry_table, MD_Section::field_decl, MD_Section::field_decl_table, free(), L_free(), MD_delete_symbol_table(), MD_Section_pool, and MD_Section::name.

double _MD_get_double MD_Field field,
int  index
 

Definition at line 4573 of file md.c.

References MD_Field::decl, MD_Field::element, MD_Field::entry, index(), MD_Section::md, MD_DOUBLE, MD_punt(), MD_type_name, MD_Section::name, MD_Entry::name, MD_Field_Decl::name, MD_Entry::section, MD_Element::type, and MD_Element::value.

void* _MD_get_entry_ext MD_Entry entry  ) 
 

Definition at line 2503 of file md.c.

References MD_Entry::user_ext.

int _MD_get_int MD_Field field,
int  index
 

Definition at line 4470 of file md.c.

References MD_Field::decl, MD_Field::element, MD_Field::entry, index(), MD_Section::md, MD_INT, MD_punt(), MD_type_name, MD_Section::name, MD_Entry::name, MD_Field_Decl::name, MD_Entry::section, MD_Element::type, and MD_Element::value.

MD_Entry* _MD_get_link MD_Field field,
int  index
 

Definition at line 4788 of file md.c.

References MD_Field::decl, MD_Field::element, MD_Field::entry, index(), MD_Section::md, MD_LINK, MD_punt(), MD_type_name, MD_Section::name, MD_Entry::name, MD_Field_Decl::name, MD_Entry::section, MD_Element::type, and MD_Element::value.

void* _MD_get_section_ext MD_Section section  ) 
 

Definition at line 2167 of file md.c.

References MD_Section::user_ext.

char* _MD_get_string MD_Field field,
int  index
 

Definition at line 4676 of file md.c.

References MD_Field::decl, MD_Field::element, MD_Field::entry, index(), MD_Section::md, MD_punt(), MD_STRING, MD_type_name, MD_Section::name, MD_Entry::name, MD_Field_Decl::name, MD_Entry::section, MD_Element::type, and MD_Element::value.

int _MD_max_element_index MD_Field field  ) 
 

Definition at line 4380 of file md.c.

References MD_Field::max_element_index.

int _MD_max_field_index MD_Section section  ) 
 

Definition at line 3180 of file md.c.

References MD_Section::max_field_index.

int _MD_num_elements MD_Field field  ) 
 

Definition at line 4366 of file md.c.

References MD_Field::max_element_index.

int _MD_num_entries MD_Section section  ) 
 

Definition at line 2401 of file md.c.

References MD_Section::entry_table, and MD_Symbol_Table::symbol_count.

int _MD_num_field_decls MD_Section section  ) 
 

Definition at line 3168 of file md.c.

References MD_Section::field_decl_table, and MD_Symbol_Table::symbol_count.

int _MD_num_sections MD md  ) 
 

Definition at line 2067 of file md.c.

References MD::section_table, and MD_Symbol_Table::symbol_count.

void _MD_set_double MD_Field field,
int  index,
double  value
 

Definition at line 4498 of file md.c.

References MD_Field::decl, MD_Field::element, MD_Field::element_array_size, MD_Element::element_index, MD_Field::entry, MD_Element::field, free(), index(), L_alloc(), MD_Field::max_element_index, MD_Section::md, MD_DOUBLE, MD_Element_pool, MD_punt(), MD_resize_element_array(), MD_STRING, MD_Section::name, MD_Entry::name, MD_Field_Decl::name, MD_Entry::section, MD_Element::type, and MD_Element::value.

Referenced by _MD_set_double_type_checking().

void _MD_set_double_type_checking MD_Field field,
int  index,
double  value
 

Definition at line 4554 of file md.c.

References _MD_set_double(), index(), and MD_check_setting().

void* _MD_set_entry_ext MD_Entry entry,
void *  ext
 

Definition at line 2489 of file md.c.

References MD_Entry::user_ext.

void _MD_set_int MD_Field field,
int  index,
int  value
 

Definition at line 4394 of file md.c.

References MD_Field::decl, MD_Field::element, MD_Field::element_array_size, MD_Element::element_index, MD_Field::entry, MD_Element::field, free(), index(), L_alloc(), MD_Field::max_element_index, MD_Section::md, MD_Element_pool, MD_INT, MD_punt(), MD_resize_element_array(), MD_STRING, MD_Section::name, MD_Entry::name, MD_Field_Decl::name, MD_Entry::section, MD_Element::type, and MD_Element::value.

Referenced by _MD_set_int_type_checking().

void _MD_set_int_type_checking MD_Field field,
int  index,
int  value
 

Definition at line 4451 of file md.c.

References _MD_set_int(), index(), and MD_check_setting().

void _MD_set_link MD_Field field,
int  index,
MD_Entry value
 

Definition at line 4704 of file md.c.

References MD_Field::decl, MD_Field::element, MD_Field::element_array_size, MD_Element::element_index, MD_Field::entry, MD_Element::field, free(), index(), L_alloc(), MD_Field::max_element_index, MD_Section::md, MD_Element_pool, MD_LINK, MD_punt(), MD_resize_element_array(), MD_STRING, MD_Section::name, MD_Entry::name, MD_Field_Decl::name, MD_Entry::section, MD_Element::type, and MD_Element::value.

Referenced by _MD_set_link_type_checking().

void _MD_set_link_type_checking MD_Field field,
int  index,
MD_Entry value
 

Definition at line 4769 of file md.c.

References _MD_set_link(), index(), and MD_check_setting().

void* _MD_set_section_ext MD_Section section,
void *  ext
 

Definition at line 2153 of file md.c.

References MD_Section::user_ext.

void _MD_set_string MD_Field field,
int  index,
char *  value
 

Definition at line 4601 of file md.c.

References MD_Field::decl, MD_Field::element, MD_Field::element_array_size, MD_Element::element_index, MD_Field::entry, MD_Element::field, free(), index(), L_alloc(), MD_Field::max_element_index, MD_Section::md, MD_Element_pool, MD_punt(), MD_resize_element_array(), MD_STRING, MD_Section::name, MD_Entry::name, MD_Field_Decl::name, MD_Entry::section, strdup(), MD_Element::type, and MD_Element::value.

Referenced by _MD_set_string_type_checking().

void _MD_set_string_type_checking MD_Field field,
int  index,
char *  value
 

Definition at line 4657 of file md.c.

References _MD_set_string(), index(), and MD_check_setting().

MD_Symbol* MD_add_symbol MD_Symbol_Table table,
char *  name,
void *  data
[static]
 

Definition at line 418 of file md.c.

References MD_Symbol::data, MD_Symbol_Table::hash, MD_Symbol_Table::hash_mask, MD_Symbol::hash_val, MD_Symbol_Table::head_symbol, L_alloc(), MD_Symbol_Table::md, MD_hash_string(), MD_punt(), MD_resize_symbol_table(), MD_Symbol_pool, MD_Symbol_Table::name, MD_Symbol::name, MD_Symbol::next_hash, MD_Symbol::next_symbol, MD_Symbol::prev_hash, MD_Symbol::prev_symbol, MD_Symbol_Table::resize_size, strcmp(), MD_Symbol_Table::symbol_count, MD_Symbol::symbol_id, MD_Symbol::table, and MD_Symbol_Table::tail_symbol.

Referenced by MD_new_entry(), MD_new_field_decl(), and MD_new_section().

int MD_check_md FILE *  out,
MD md
 

Definition at line 837 of file md.c.

References _MD_check_section(), MD_Symbol::data, MD_Symbol_Table::head_symbol, MD_Symbol::next_symbol, out, and MD::section_table.

Referenced by build_md().

int MD_check_setting FILE *  out,
MD_Field field,
int  index,
char *  caller_name
[static]
 

Definition at line 4251 of file md.c.

References MD_Field::decl, MD_Element_Req::desc, MD_Field::element, MD_Field::entry, index(), MD_Field_Decl::kleene_starred_req, MD_Element_Req::link, MD_Element_Req::link_array_size, MD_Field::max_element_index, MD_Field_Decl::max_require_index, MD_LINK, MD_type_name, MD_warn(), MD_Field_Decl::name, MD_Entry::name, MD_Section::name, out, MD_Field_Decl::require, MD_Entry::section, MD_Element_Req::type, MD_Element::type, and MD_Element::value.

Referenced by _MD_set_double_type_checking(), _MD_set_int_type_checking(), _MD_set_link_type_checking(), and _MD_set_string_type_checking().

char* MD_concat_strings char *  string1,
char *  string2
[static]
 

Definition at line 196 of file md.c.

References len, malloc(), MD_punt(), sprintf(), and strlen().

Referenced by MD_kleene_star_requirement(), and MD_new_section().

void MD_delete_buf MD_Buf buf  ) 
 

Definition at line 910 of file md.c.

References MD_Buf::buf, free(), L_free(), and MD_Buf_pool.

Referenced by MD_read_md().

void MD_delete_element MD_Field field,
int  index
 

Definition at line 4812 of file md.c.

References MD_Field::element, free(), index(), L_free(), MD_Field::max_element_index, MD_Element_pool, MD_STRING, MD_Element::type, and MD_Element::value.

void MD_delete_field MD_Field field  ) 
 

Definition at line 4056 of file md.c.

References MD_Field::decl, MD_Field::element, MD_Field::entry, MD_Entry::field, MD_Field_Decl::field_index, free(), index(), L_free(), MD_Field::max_element_index, MD_Element_pool, MD_Field_pool, MD_STRING, MD_Element::type, and MD_Element::value.

Referenced by _MD_free_entry(), build_entry(), and MD_delete_field_decl().

void MD_delete_field_decl MD_Field_Decl field_decl  ) 
 

Definition at line 3324 of file md.c.

References _MD_free_field_decl(), MD_Symbol::data, MD_Section::entry_table, MD_Entry::field, MD_Field_Decl::field_index, MD_Symbol_Table::head_symbol, MD_delete_field(), MD_delete_symbol(), MD_Symbol::next_symbol, MD_Field_Decl::section, and MD_Field_Decl::symbol.

void MD_delete_md MD md  ) 
 

Definition at line 776 of file md.c.

References _MD_free_section(), L_Alloc_Pool::allocated, L_Alloc_Pool::free, free(), L_free(), L_free_alloc_pool(), MD_delete_symbol_table(), MD_Element_pool, MD_Element_Req_pool, MD_Entry_pool, MD_Field_Decl_pool, MD_Field_pool, MD_pool, MD_Section_pool, MD_Symbol_pool, MD_Symbol_Table_pool, MD::name, and MD::section_table.

Referenced by main().

void MD_delete_symbol MD_Symbol symbol,
void(*  free_routine)(void *)
 

Definition at line 630 of file md.c.

References MD_Symbol::data, MD_Symbol_Table::hash, MD_Symbol_Table::hash_mask, MD_Symbol::hash_val, MD_Symbol_Table::head_symbol, L_free(), MD_Symbol_pool, MD_Symbol::next_hash, MD_Symbol::next_symbol, MD_Symbol::prev_hash, MD_Symbol::prev_symbol, MD_Symbol_Table::symbol_count, MD_Symbol::table, and MD_Symbol_Table::tail_symbol.

Referenced by _MD_delete_entry(), _MD_delete_section(), and MD_delete_field_decl().

void MD_delete_symbol_table MD_Symbol_Table table,
void(*  free_routine)(void *)
 

Definition at line 295 of file md.c.

References MD_Symbol::data, free(), MD_Symbol_Table::hash, MD_Symbol_Table::head_symbol, L_free(), MD_Symbol_pool, MD_Symbol_Table_pool, MD_Symbol_Table::name, and MD_Symbol::next_symbol.

Referenced by _MD_free_section(), and MD_delete_md().

MD_Symbol* MD_find_symbol MD_Symbol_Table table,
char *  name
[static]
 

Definition at line 574 of file md.c.

References MD_Symbol_Table::hash, MD_Symbol_Table::hash_mask, MD_Symbol::hash_val, MD_hash_string(), MD_Symbol::name, MD_Symbol::next_hash, and strcmp().

MD_Entry* MD_first_entry MD_Section section  ) 
 

Definition at line 2423 of file md.c.

References MD_Symbol::data, MD_Section::entry_table, and MD_Symbol_Table::head_symbol.

Referenced by calc_num_alts(), calc_op_total_string_len(), calc_total_entry_name_len(), check_md_for_ambiguous_links(), load_lmdes_from_version2(), MD_print_md_declarations(), SM_add_ids_to_entries(), SM_build_choices(), SM_build_resources(), SM_build_tables(), and SM_build_units().

MD_Field_Decl* MD_first_field_decl MD_Section section  ) 
 

Definition at line 3203 of file md.c.

References MD_Symbol::data, MD_Section::field_decl_table, and MD_Symbol_Table::head_symbol.

MD_Section* MD_first_section MD md  ) 
 

Definition at line 2088 of file md.c.

References MD_Symbol::data, MD_Symbol_Table::head_symbol, and MD::section_table.

Referenced by check_md_for_ambiguous_links(), and MD_print_md_declarations().

unsigned int MD_hash_string char *  string  )  [static]
 

Definition at line 380 of file md.c.

Referenced by _MD_find_symbol_data(), MD_add_symbol(), MD_find_symbol(), and MD_rename_symbol().

void MD_kleene_star_requirement MD_Field_Decl field_decl,
int  element_index
 

Definition at line 3860 of file md.c.

References MD_Element_Req::desc, free(), MD_Element_Req::kleene_starred, MD_Field_Decl::kleene_starred_req, MD_Field_Decl::max_require_index, MD_Section::md, MD_concat_strings(), MD_punt(), MD_Section::name, MD_Field_Decl::name, MD_Field_Decl::require, MD_Element_Req::require_index, and MD_Field_Decl::section.

Referenced by build_field_decl(), and MD_read_md().

MD_Entry* MD_last_entry MD_Section section  ) 
 

Definition at line 2439 of file md.c.

References MD_Symbol::data, MD_Section::entry_table, and MD_Symbol_Table::tail_symbol.

MD_Field_Decl* MD_last_field_decl MD_Section section  ) 
 

Definition at line 3219 of file md.c.

References MD_Symbol::data, MD_Section::field_decl_table, and MD_Symbol_Table::tail_symbol.

MD_Section* MD_last_section MD md  ) 
 

Definition at line 2103 of file md.c.

References MD_Symbol::data, MD::section_table, and MD_Symbol_Table::tail_symbol.

int MD_legal_ident char *  ident  )  [static]
 

Definition at line 2632 of file md.c.

Referenced by MD_print_entry(), MD_print_entry_template(), and MD_print_md_declarations().

MD_Buf* MD_new_buf  ) 
 

Definition at line 863 of file md.c.

References MD_Buf::buf, MD_Buf::buf_size, L_alloc(), malloc(), MD_Buf_pool, and MD_punt().

Referenced by MD_read_md().

MD_Element_Req* MD_new_element_req MD_Field_Decl field_decl,
int  index,
char *  caller_name
[static]
 

Definition at line 3484 of file md.c.

References MD_Element_Req::field_decl, free(), i, index(), MD_Element_Req::kleene_starred, MD_Field_Decl::kleene_starred_req, L_alloc(), MD_Element_Req::link, MD_Element_Req::link_array_size, malloc(), MD_Field_Decl::max_require_index, MD_Section::md, MD_Element_Req_pool, MD_punt(), MD_Field_Decl::name, MD_Section::name, MD_Field_Decl::require, MD_Field_Decl::require_array_size, MD_Element_Req::require_index, and MD_Field_Decl::section.

Referenced by MD_require_double(), MD_require_int(), MD_require_link(), MD_require_multi_target_link(), and MD_require_string().

MD_Entry* MD_new_entry MD_Section section,
char *  name
 

Definition at line 2321 of file md.c.

References MD_Section::entry_table, MD_Entry::field, MD_Section::field_array_size, i, L_alloc(), malloc(), MD_Section::md, MD_add_symbol(), MD_Entry_pool, MD_punt(), MD_Entry::name, MD_Entry::section, strdup(), MD_Entry::symbol, and MD_Entry::user_ext.

Referenced by build_entry(), and MD_read_md().

MD_Field* MD_new_field MD_Entry entry,
MD_Field_Decl decl,
int  num_elements
 

Definition at line 3927 of file md.c.

References MD_Field::decl, MD_Field::entry, MD_Entry::field, MD_Field_Decl::field_index, L_alloc(), MD_Field::max_element_index, MD_Section::md, MD_Field_pool, MD_punt(), MD_resize_element_array(), MD_Section::name, MD_Entry::name, MD_Field_Decl::name, and MD_Entry::section.

Referenced by build_entry(), MD_read_md(), and SM_add_ids_to_entries().

MD_Field_Decl* MD_new_field_decl MD_Section section,
char *  name,
MD_FIELD_TYPE  field_type
 

Definition at line 2997 of file md.c.

References MD_Section::field_array_size, MD_Section::field_decl, MD_Section::field_decl_table, MD_Field_Decl::field_index, MD_Field_Decl::kleene_starred_req, L_alloc(), MD_Section::max_field_index, MD_Field_Decl::max_require_index, MD_add_symbol(), MD_Field_Decl_pool, MD_resize_field_arrays(), MD_Field_Decl::name, MD_Field_Decl::require, MD_Field_Decl::require_array_size, MD_Field_Decl::section, strdup(), MD_Field_Decl::symbol, and MD_Field_Decl::type.

Referenced by build_field_decl(), MD_read_md(), and SM_add_ids_to_entries().

MD* MD_new_md char *  name,
int  num_sections
 

Definition at line 721 of file md.c.

References L_alloc(), L_create_alloc_pool(), MD_Element_pool, MD_Element_Req_pool, MD_Entry_pool, MD_Field_Decl_pool, MD_Field_pool, MD_new_symbol_table(), MD_pool, MD_punt(), MD_Section_pool, MD_Symbol_pool, MD_Symbol_Table_pool, MD::name, MD::section_table, and strdup().

Referenced by build_md(), and MD_read_md().

MD_Section* MD_new_section MD md,
char *  name,
int  num_entries,
int  num_fields
 

Definition at line 2001 of file md.c.

References MD_Section::entry_table, MD_Section::field_array_size, MD_Section::field_decl, MD_Section::field_decl_table, free(), L_alloc(), MD_Section::max_field_index, MD_Section::md, MD_add_symbol(), MD_concat_strings(), MD_new_symbol_table(), MD_resize_field_arrays(), MD_Section_pool, MD_Section::name, MD::section_table, strdup(), MD_Section::symbol, and MD_Section::user_ext.

Referenced by build_md(), and MD_read_md().

MD_Symbol_Table* MD_new_symbol_table MD md,
char *  name,
int  expected_size
[static]
 

Definition at line 223 of file md.c.

References MD_Symbol_Table::hash, MD_Symbol_Table::hash_mask, MD_Symbol_Table::hash_size, MD_Symbol_Table::head_symbol, i, L_alloc(), malloc(), MD_Symbol_Table::md, MD_punt(), MD_Symbol_Table_pool, MD_Symbol_Table::name, MD_Symbol_Table::resize_size, strdup(), MD_Symbol_Table::symbol_count, and MD_Symbol_Table::tail_symbol.

Referenced by MD_new_md(), and MD_new_section().

MD_Entry* MD_next_entry MD_Entry entry  ) 
 

Definition at line 2455 of file md.c.

References MD_Symbol::data, MD_Symbol::next_symbol, and MD_Entry::symbol.

Referenced by calc_num_alts(), calc_op_total_string_len(), calc_total_entry_name_len(), check_md_for_ambiguous_links(), load_lmdes_from_version2(), MD_print_md_declarations(), SM_add_ids_to_entries(), SM_build_choices(), SM_build_resources(), SM_build_tables(), and SM_build_units().

MD_Field_Decl* MD_next_field_decl MD_Field_Decl field_decl  ) 
 

Definition at line 3235 of file md.c.

References MD_Symbol::data, MD_Symbol::next_symbol, and MD_Field_Decl::symbol.

MD_Section* MD_next_section MD_Section section  ) 
 

Definition at line 2119 of file md.c.

References MD_Symbol::data, MD_Symbol::next_symbol, and MD_Section::symbol.

Referenced by check_md_for_ambiguous_links(), and MD_print_md_declarations().

MD_Entry* MD_prev_entry MD_Entry entry  ) 
 

Definition at line 2471 of file md.c.

References MD_Symbol::data, MD_Symbol::prev_symbol, and MD_Entry::symbol.

MD_Field_Decl* MD_prev_field_decl MD_Field_Decl field_decl  ) 
 

Definition at line 3251 of file md.c.

References MD_Symbol::data, MD_Symbol::prev_symbol, and MD_Field_Decl::symbol.

MD_Section* MD_prev_section MD_Section section  ) 
 

Definition at line 2135 of file md.c.

References MD_Symbol::data, MD_Symbol::prev_symbol, and MD_Section::symbol.

void MD_print_entry FILE *  out,
MD_Entry entry,
int  page_width
 

Definition at line 2655 of file md.c.

References MD_Symbol::data, MD_Field::element, MD_Entry::field, MD_Section::field_decl_table, MD_Field_Decl::field_index, fprintf(), MD_Symbol_Table::head_symbol, i, MD_Field::max_element_index, MD_Section::md, MD_DOUBLE, MD_INT, MD_legal_ident(), MD_LINK, MD_punt(), MD_STRING, MD_Entry::name, MD_Field_Decl::name, MD_Symbol::next_symbol, out, MD_Entry::section, sprintf(), strlen(), MD_Element::type, and MD_Element::value.

Referenced by MD_print_section().

void MD_print_entry_template FILE *  out,
MD_Entry entry
 

Definition at line 2948 of file md.c.

References fprintf(), i, MD_legal_ident(), MD_Entry::name, out, and strlen().

Referenced by MD_print_section_template().

void MD_print_field_decl FILE *  out,
MD_Field_Decl field_decl,
int  page_width
 

Definition at line 3365 of file md.c.

References MD_Element_Req::desc, fprintf(), i, MD_Field_Decl::max_require_index, MD_Section::md, MD_FIELD_TYPE, MD_OPTIONAL_FIELD, MD_punt(), MD_REQUIRED_FIELD, MD_Field_Decl::name, out, MD_Field_Decl::require, MD_Field_Decl::section, strlen(), and MD_Field_Decl::type.

Referenced by MD_print_section().

void MD_print_md FILE *  out,
MD md,
int  page_width
 

Definition at line 1822 of file md.c.

References MD_Symbol::data, fprintf(), MD_Symbol_Table::head_symbol, MD_print_section(), MD::name, MD_Symbol::next_symbol, out, and MD::section_table.

Referenced by main().

void MD_print_md_declarations FILE *  out,
MD md,
int  page_width
 

Definition at line 1857 of file md.c.

References fprintf(), MD_first_entry(), MD_first_section(), MD_legal_ident(), MD_next_entry(), MD_next_section(), MD::name, MD_Section::name, MD_Entry::name, out, and strlen().

Referenced by main().

void MD_print_md_template FILE *  out,
MD md
 

Definition at line 1963 of file md.c.

References MD_Symbol::data, fprintf(), MD_Symbol_Table::head_symbol, MD_print_section_template(), MD::name, MD_Symbol::next_symbol, out, and MD::section_table.

Referenced by main().

void MD_print_section FILE *  out,
MD_Section section,
int  page_width
 

Definition at line 2263 of file md.c.

References MD_Symbol::data, MD_Section::entry_table, MD_Section::field_decl_table, fprintf(), MD_Symbol_Table::head_symbol, MD_print_entry(), MD_print_field_decl(), MD_Section::name, MD_Symbol::next_symbol, and out.

Referenced by MD_print_md().

void MD_print_section_template FILE *  out,
MD_Section section
 

Definition at line 2297 of file md.c.

References MD_Symbol::data, MD_Section::entry_table, fprintf(), MD_Symbol_Table::head_symbol, MD_print_entry_template(), MD_Section::name, MD_Symbol::next_symbol, and out.

Referenced by MD_print_md_template().

void MD_print_symbol_table_hash FILE *  out,
MD_Symbol_Table table
[static]
 

Definition at line 681 of file md.c.

References fprintf(), MD_Symbol_Table::hash, MD_Symbol_Table::hash_size, MD_Symbol::hash_val, MD_Symbol::name, MD_Symbol_Table::name, MD_Symbol::next_hash, out, and MD_Symbol_Table::symbol_count.

void MD_punt MD md,
char *  fmt,
... 
[static]
 

Definition at line 145 of file md.c.

References exit(), fprintf(), MD::name, and vfprintf().

Referenced by _MD_find_field(), _MD_get_double(), _MD_get_int(), _MD_get_link(), _MD_get_string(), _MD_set_double(), _MD_set_int(), _MD_set_link(), _MD_set_string(), MD_add_symbol(), MD_concat_strings(), MD_kleene_star_requirement(), MD_new_buf(), MD_new_element_req(), MD_new_entry(), MD_new_field(), MD_new_md(), MD_new_symbol_table(), MD_print_entry(), MD_print_field_decl(), MD_read_double(), MD_read_int(), MD_read_md(), MD_read_nl(), MD_read_sp(), MD_read_string(), MD_rename_symbol(), MD_require_link(), MD_require_multi_target_link(), MD_resize_buf(), MD_resize_element_array(), MD_resize_field_arrays(), MD_resize_symbol_table(), and MD_write_md().

double MD_read_double FILE *  in,
MD_Buf value_buf
 

Definition at line 996 of file md.c.

References MD_Buf::buf, MD_Buf::buf_size, i, MD_punt(), MD_resize_buf(), strtod(), and ungetc().

Referenced by MD_read_md().

int MD_read_int FILE *  in  ) 
 

Definition at line 923 of file md.c.

References MD_punt(), and ungetc().

Referenced by MD_read_md().

MD* MD_read_md FILE *  in,
char *  name
 

Definition at line 1135 of file md.c.

References MD_Buf::buf, free(), i, L_create_alloc_pool(), L_free_alloc_pool(), malloc(), MD_Buf_pool, MD_delete_buf(), MD_FIELD_TYPE, MD_kleene_star_requirement(), MD_new_buf(), MD_new_entry(), MD_new_field(), MD_new_field_decl(), MD_new_md(), MD_new_section(), MD_OPTIONAL_FIELD, MD_punt(), MD_read_double(), MD_read_int(), MD_read_nl(), MD_read_sp(), MD_read_string(), MD_require_double(), MD_require_int(), MD_require_multi_target_link(), MD_require_string(), MD_REQUIRED_FIELD, MD_set_double, MD_set_int, MD_set_link, MD_set_string, MD_Section::name, and strcmp().

Referenced by load_mdes2(), and main().

void MD_read_nl FILE *  in  ) 
 

Definition at line 1106 of file md.c.

References MD_punt().

Referenced by MD_read_md().

void MD_read_sp FILE *  in  ) 
 

Definition at line 1120 of file md.c.

References MD_punt().

Referenced by MD_read_md().

void MD_read_string FILE *  in,
MD_Buf value_buf
 

Definition at line 1061 of file md.c.

References MD_Buf::buf, MD_Buf::buf_size, i, MD_punt(), MD_resize_buf(), and ungetc().

Referenced by MD_read_md().

void MD_rename_entry MD_Entry entry,
char *  new_name
 

Definition at line 2377 of file md.c.

References free(), MD_rename_symbol(), MD_Entry::name, strdup(), and MD_Entry::symbol.

void MD_rename_symbol MD_Symbol symbol,
char *  new_name
[static]
 

Definition at line 507 of file md.c.

References MD_Symbol_Table::hash, MD_Symbol_Table::hash_mask, MD_Symbol::hash_val, MD_Symbol_Table::md, MD_hash_string(), MD_punt(), MD_Symbol_Table::name, MD_Symbol::name, MD_Symbol::next_hash, MD_Symbol::prev_hash, strcmp(), and MD_Symbol::table.

Referenced by MD_rename_entry().

void MD_require_double MD_Field_Decl field_decl,
int  element_index
 

Definition at line 3623 of file md.c.

References MD_Element_Req::desc, MD_DOUBLE, MD_new_element_req(), strdup(), and MD_Element_Req::type.

Referenced by build_field_decl(), and MD_read_md().

void MD_require_int MD_Field_Decl field_decl,
int  element_index
 

Definition at line 3597 of file md.c.

References MD_Element_Req::desc, MD_INT, MD_new_element_req(), strdup(), and MD_Element_Req::type.

Referenced by build_field_decl(), MD_read_md(), and SM_add_ids_to_entries().

void MD_require_link MD_Field_Decl field_decl,
int  element_index,
MD_Section section
 

Definition at line 3677 of file md.c.

References MD_Element_Req::desc, MD_Element_Req::link, MD_Element_Req::link_array_size, malloc(), MD_Section::md, MD_LINK, MD_new_element_req(), MD_punt(), MD_Field_Decl::section, sprintf(), strlen(), and MD_Element_Req::type.

void MD_require_multi_target_link MD_Field_Decl field_decl,
int  element_index,
int  section_array_size,
MD_Section **  section_array
 

Definition at line 3748 of file md.c.

References MD_Element_Req::desc, i, MD_Element_Req::link, MD_Element_Req::link_array_size, malloc(), MD_Section::md, MD_LINK, MD_new_element_req(), MD_punt(), MD_Field_Decl::section, strcpy(), strlen(), and MD_Element_Req::type.

Referenced by build_field_decl(), and MD_read_md().

void MD_require_string MD_Field_Decl field_decl,
int  element_index
 

Definition at line 3649 of file md.c.

References MD_Element_Req::desc, MD_new_element_req(), MD_STRING, strdup(), and MD_Element_Req::type.

Referenced by build_field_decl(), and MD_read_md().

void MD_resize_buf MD_Buf buf  ) 
 

Definition at line 883 of file md.c.

References MD_Buf::buf, MD_Buf::buf_size, free(), i, malloc(), and MD_punt().

Referenced by MD_read_double(), and MD_read_string().

void MD_resize_element_array MD_Field field,
int  max_index
[static]
 

Definition at line 3981 of file md.c.

References MD_Field::element, MD_Field::element_array_size, MD_Field::entry, free(), i, malloc(), MD_Field::max_element_index, MD_Section::md, MD_punt(), and MD_Entry::section.

Referenced by _MD_set_double(), _MD_set_int(), _MD_set_link(), _MD_set_string(), and MD_new_field().

void MD_resize_field_arrays MD_Section section,
int  max_index
[static]
 

Definition at line 3059 of file md.c.

References MD_Symbol::data, MD_Section::entry_table, MD_Entry::field, MD_Section::field_array_size, MD_Section::field_decl, free(), MD_Symbol_Table::head_symbol, i, malloc(), MD_Section::max_field_index, MD_Section::md, MD_punt(), and MD_Symbol::next_symbol.

Referenced by MD_new_field_decl(), and MD_new_section().

void MD_resize_symbol_table MD_Symbol_Table table  )  [static]
 

Definition at line 324 of file md.c.

References free(), MD_Symbol_Table::hash, MD_Symbol_Table::hash_mask, MD_Symbol_Table::hash_size, MD_Symbol::hash_val, MD_Symbol_Table::head_symbol, i, malloc(), MD_Symbol_Table::md, MD_punt(), MD_Symbol::next_hash, MD_Symbol::next_symbol, MD_Symbol::prev_hash, and MD_Symbol_Table::resize_size.

Referenced by MD_add_symbol().

void MD_warn FILE *  out,
char *  fmt,
... 
[static]
 

Definition at line 172 of file md.c.

References fprintf(), out, and vfprintf().

Referenced by _MD_check_entry(), _MD_check_field(), and MD_check_setting().

void MD_write_md FILE *  out,
MD md
 

Definition at line 1493 of file md.c.

References MD_Symbol::data, MD_Field::element, MD_Section::entry_table, MD_Entry::field, MD_Section::field_decl_table, MD_Field_Decl::field_index, fprintf(), MD_Symbol_Table::head_symbol, i, MD_Field_Decl::kleene_starred_req, MD_Element_Req::link, MD_Element_Req::link_array_size, MD_Field::max_element_index, MD_Section::max_field_index, MD_Field_Decl::max_require_index, MD_DOUBLE, MD_INT, MD_LINK, MD_OPTIONAL_FIELD, MD_punt(), MD_REQUIRED_FIELD, MD_STRING, MD_Section::name, MD_Entry::name, MD_Field_Decl::name, MD_Symbol::next_symbol, out, MD_Field_Decl::require, MD::section_table, MD_Symbol_Table::symbol_count, MD_Symbol::symbol_id, MD_Field_Decl::type, MD_Element_Req::type, MD_Element::type, and MD_Element::value.

Referenced by main().


Variable Documentation

char copyright[] [static]
 

Initial value:

"@(#) Copyright (c) 1995 The Board of Trustees of the University of Illinois.\
\nAll rights reserved.\n"

Definition at line 85 of file md.c.

L_Alloc_Pool* MD_Buf_pool = NULL [static]
 

Definition at line 112 of file md.c.

Referenced by MD_delete_buf(), MD_new_buf(), and MD_read_md().

L_Alloc_Pool* MD_Element_pool = NULL [static]
 

Definition at line 123 of file md.c.

Referenced by _MD_set_double(), _MD_set_int(), _MD_set_link(), _MD_set_string(), MD_delete_element(), MD_delete_field(), MD_delete_md(), and MD_new_md().

L_Alloc_Pool* MD_Element_Req_pool = NULL [static]
 

Definition at line 121 of file md.c.

Referenced by _MD_free_field_decl(), MD_delete_md(), MD_new_element_req(), and MD_new_md().

L_Alloc_Pool* MD_Entry_pool = NULL [static]
 

Definition at line 119 of file md.c.

Referenced by _MD_free_entry(), MD_delete_md(), MD_new_entry(), and MD_new_md().

L_Alloc_Pool* MD_Field_Decl_pool = NULL [static]
 

Definition at line 120 of file md.c.

Referenced by _MD_free_field_decl(), MD_delete_md(), MD_new_field_decl(), and MD_new_md().

L_Alloc_Pool* MD_Field_pool = NULL [static]
 

Definition at line 122 of file md.c.

Referenced by MD_delete_field(), MD_delete_md(), MD_new_field(), and MD_new_md().

L_Alloc_Pool* MD_pool = NULL [static]
 

Definition at line 115 of file md.c.

Referenced by MD_delete_md(), and MD_new_md().

L_Alloc_Pool* MD_Section_pool = NULL [static]
 

Definition at line 118 of file md.c.

Referenced by _MD_free_section(), MD_delete_md(), MD_new_md(), and MD_new_section().

L_Alloc_Pool* MD_Symbol_pool = NULL [static]
 

Definition at line 117 of file md.c.

Referenced by MD_add_symbol(), MD_delete_md(), MD_delete_symbol(), MD_delete_symbol_table(), and MD_new_md().

L_Alloc_Pool* MD_Symbol_Table_pool = NULL [static]
 

Definition at line 116 of file md.c.

Referenced by MD_delete_md(), MD_delete_symbol_table(), MD_new_md(), and MD_new_symbol_table().

char* MD_type_name[] [static]
 

Initial value:

 {"(UNDEFINED)", "INT", "DOUBLE", "STRING", 
                               "LINK", "(UNDEFINED)"}

Definition at line 126 of file md.c.

Referenced by _MD_check_field(), _MD_get_double(), _MD_get_int(), _MD_get_link(), _MD_get_string(), and MD_check_setting().


Generated on Mon Jul 21 20:30:12 2003 for TINKER LEGO DOC by doxygen 1.3.2