home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 mARCH / PCWK3A99.iso / Linux / DDD331 / DDD-3_1_.000 / DDD-3_1_ / ddd-3.1.1 / ddd / VSEFlags.h < prev    next >
C/C++ Source or Header  |  1998-11-23  |  5KB  |  152 lines

  1. // $Id: VSEFlags.h,v 1.11 1998/11/23 17:43:38 zeller Exp $
  2. // Global flags for VSL evaluation (and the old VSE editor)
  3.  
  4. // Copyright (C) 1995 Technische Universitaet Braunschweig, Germany.
  5. // Written by Andreas Zeller <zeller@ips.cs.tu-bs.de>.
  6. // 
  7. // This file is part of DDD.
  8. // 
  9. // DDD is free software; you can redistribute it and/or
  10. // modify it under the terms of the GNU General Public
  11. // License as published by the Free Software Foundation; either
  12. // version 2 of the License, or (at your option) any later version.
  13. // 
  14. // DDD is distributed in the hope that it will be useful,
  15. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  17. // See the GNU General Public License for more details.
  18. // 
  19. // You should have received a copy of the GNU General Public
  20. // License along with DDD -- see the file COPYING.
  21. // If not, write to the Free Software Foundation, Inc.,
  22. // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  23. // 
  24. // DDD is the data display debugger.
  25. // For details, see the DDD World-Wide-Web page, 
  26. // `http://www.cs.tu-bs.de/softech/ddd/',
  27. // or send a mail to the DDD developers <ddd@ips.cs.tu-bs.de>.
  28.  
  29. #ifndef _DDD_VSEFlags_h
  30. #define _DDD_VSEFlags_h
  31.  
  32. #include "bool.h"
  33. #include "strclass.h"
  34.  
  35. // GCC 2.5.x wants this to be global
  36. enum VSEEntryType { LAST, BOOLEAN, INT, STRING, TITLE };
  37.  
  38. // Table Options <-> Names
  39. struct VSEOptionTableEntry {
  40.     VSEEntryType type;  // Type
  41.     char *name;         // Name
  42.     char *usage;        // Usage (Meaning)
  43.     void *flag;         // Pointer to corresponding flag
  44. };
  45.  
  46. class VSEFlags {
  47. private:
  48.     // Map name -> flag
  49.     static VSEOptionTableEntry optionTable[];
  50.  
  51. public:
  52.     // assertion options
  53.     static bool assert_library_ok;
  54.     static bool assert_document_ok;
  55.  
  56.     // dump to file options
  57.     static bool dump_tree;
  58.     static bool dump_library;
  59.     static bool dump_document;
  60.     static bool dump_picture;
  61.     static bool dump_while_optimizing;
  62.     static bool dump_last;
  63.  
  64.     // show options
  65.     static bool show_optimize;
  66.     static bool show_match_boxes;
  67.     static bool show_match_nodes;
  68.     static bool show_match_defs;
  69.     static bool show_tiny_eval;
  70.     static bool show_large_eval;
  71.     static bool show_huge_eval;
  72.     static bool show_balance;
  73.     static bool show_flags;
  74.     static bool show_backtrace;
  75.     static bool show_ids;
  76.     static bool show_vars;
  77.     static bool show_draw;
  78.  
  79.     // info options
  80.     static bool include_size_info;
  81.     static bool include_list_info;
  82.     static bool include_font_info;
  83.     static bool include_const_info;
  84.     static bool include_id_info;
  85.     static bool include_tag_info;
  86.     static bool include_select_info;
  87.  
  88.     // optimize mode
  89.     static bool optimize_resolveDefs;      // write-only
  90.     static bool optimize_resolveSynonyms; // write-only
  91.     static bool optimize_foldOps;         // write-only
  92.     static bool optimize_foldConsts;      // write-only
  93.     static bool optimize_inlineFuncs;      // write-only
  94.     static bool optimize_cleanup;      // write-only
  95.     static int max_optimize_loops;      // write-only
  96.  
  97.     static unsigned optimize_mode();
  98.     static bool incremental_eval;
  99.     static bool optimize_globals;
  100.  
  101.     // modes
  102.     static bool bag_mode;
  103.     static bool verbose;
  104.     static bool what;
  105.     static bool load_open_mode;
  106.     static bool concurrent_mode;
  107.  
  108.     // time options
  109.     static bool show_eval_time;
  110.     static bool show_optimizing_time;
  111.     static bool show_display_time;
  112.  
  113.     // eval options
  114.     static bool suppress_eval;
  115.     static bool issue_nooptionals;
  116.  
  117.     // name options
  118.     static char *library_file;
  119.     static char *document_file;
  120.     static char *startup_file;
  121.     static char *include_search_path;
  122.  
  123.     // num options
  124.     static int max_eval_nesting;
  125.     static int max_pattern_variables;
  126.     static int max_info_nesting;
  127.     static int loops;
  128.  
  129.     // Helpers
  130.     static bool _parse(int& argc, char**& argv, bool vsl_prefix_required);
  131.     static void getDefaults(bool warn = false);
  132.     static string explain(bool vsl_prefix_required = false);
  133.  
  134.     // Main interface for VSL/VSE
  135.     static void parse(int& argc, char**& argv, char *args = " files...");
  136.  
  137.     // Main interface for other applications; all options require
  138.     // `-vsl' or `--vsl' prefix.  Return TRUE upon error.
  139.     static bool parse_vsl(int& argc, char**& argv);
  140. };
  141.  
  142.  
  143. // Makro for accessing time-critical debugging options
  144.  
  145. #ifndef NDEBUG
  146. #define VSEFlag(x)  (VSEFlags::x)
  147. #else
  148. #define VSEFlag(x)  false
  149. #endif
  150.  
  151. #endif
  152.