1/* 2 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org> 3 * Released under the terms of the GNU GPL v2.0. 4 */ 5 6#ifndef LKC_H 7#define LKC_H 8 9#include "expr.h" 10 11#ifdef __cplusplus 12extern "C" { 13#endif 14 15#ifdef LKC_DIRECT_LINK 16#define P(name,type,arg) extern type name arg 17#else 18#include "lkc_defs.h" 19#define P(name,type,arg) extern type (*name ## _p) arg 20#endif 21#include "lkc_proto.h" 22#undef P 23 24void symbol_end(char *help); 25int zconfparse(void); 26void zconfdump(FILE *out); 27 28extern int zconfdebug; 29void zconf_starthelp(void); 30void zconf_initscan(const char *name); 31void zconf_nextfile(const char *name); 32int zconf_lineno(void); 33char *zconf_curname(void); 34 35/* confdata.c */ 36extern const char conf_def_filename[]; 37extern char conf_filename[]; 38 39char *conf_get_default_confname(void); 40 41/* kconfig_load.c */ 42void kconfig_load(void); 43 44/* menu.c */ 45void menu_init(void); 46void menu_add_menu(void); 47void menu_end_menu(void); 48void menu_add_entry(struct symbol *sym); 49void menu_end_entry(void); 50struct property *create_prop(enum prop_type type); 51void menu_add_dep(struct expr *dep); 52struct property *menu_add_prop(int token, char *prompt, struct symbol *def, struct expr *dep); 53void menu_finalize(struct menu *parent); 54void menu_set_type(int type); 55struct file *file_lookup(const char *name); 56int file_write_dep(const char *name); 57 58extern struct menu *current_entry; 59extern struct menu *current_menu; 60 61/* symbol.c */ 62void sym_init(void); 63void sym_clear_all_valid(void); 64 65static inline tristate sym_get_tristate_value(struct symbol *sym) 66{ 67 return S_TRI(sym->curr); 68} 69 70 71static inline struct symbol *sym_get_choice_value(struct symbol *sym) 72{ 73 return (struct symbol *)S_VAL(sym->curr); 74} 75 76static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval) 77{ 78 return sym_set_tristate_value(chval, yes); 79} 80 81static inline bool sym_is_choice(struct symbol *sym) 82{ 83 return sym->flags & SYMBOL_CHOICE ? true : false; 84} 85 86static inline bool sym_is_choice_value(struct symbol *sym) 87{ 88 return sym->flags & SYMBOL_CHOICEVAL ? true : false; 89} 90 91static inline bool sym_is_optional(struct symbol *sym) 92{ 93 return sym->flags & SYMBOL_OPTIONAL ? true : false; 94} 95 96static inline bool sym_has_value(struct symbol *sym) 97{ 98 //return S_VAL(sym->def) != NULL; 99 return sym->flags & SYMBOL_NEW ? false : true; 100} 101 102#ifdef __cplusplus 103} 104#endif 105 106#endif /* LKC_H */ 107