Mercurial > ~dholland > hg > ag > index.cgi
view anagram/guisupport/brt.cpp @ 15:f5acaf0c8a29
Don't cast through "volatile int". Causes a gcc warning nowadays.
XXX: should put something else back here to frighten the optimizer
author | David A. Holland |
---|---|
date | Tue, 31 May 2022 01:00:55 -0400 |
parents | 13d2b8934445 |
children |
line wrap: on
line source
/* * AnaGram, A System for Syntax Directed Programming * Copyright 1993-2002 Parsifal Software. All Rights Reserved. * See the file COPYING for license and usage terms. * * brt.cpp */ #include "assert.h" #include "brt.h" #include "configparam.h" #include "dc.h" #include "dict.h" #include "help.h" #include "stacks.h" //#define INCLUDE_LOGGING #include "log.h" help_index_dc::help_index_dc(void) : dc("Help Topics") { LOGSECTION("help_index_dc::help_index_dc"); unsigned ntopics = helpindex_num(); LOGV(ntopics); unsigned dw = 0; for (unsigned i=0; i<ntopics; i++) { unsigned sw = strlen(helpindex_get(i)); if (sw > dw) { dw = sw; } } des->d_size = cint(dw, ntopics); syntax_dependent = 0; LOGS("All done"); } AgString help_index_dc::findHelpTopic(void) { return helpindex_get(des->c_loc_doc.y); } void help_index_dc::getLine(unsigned ln) const { const char *s = helpindex_get(ln); sss(s); } static int param_table_tabs[3] = {24,0}; void param_table_dc::getLine(unsigned ln) const { LOGSECTION("param_table_dc::getLine"); ConfigParam ¶m = *ConfigParam::table[ln]; LOGV(ln) LCV(param.name); ssprintf("%s\t%s", param.name, param.asString().pointer()); //sss(ConfigParam::table[ln]->asString().pointer()); } param_table_dc::param_table_dc(void) : dc("Configuration Parameters") { LOGSECTION("param_table_dc::param_table_dc"); int n = ConfigParam::paramCount; int i = 1; int sl, cw; cw = 0; while (i < n) { sl = strlen(ConfigParam::table[i++]->asString().pointer()); if (sl > cw) { cw = sl; } } param_table_tabs[0] = cw + 2; tab_stops = param_table_tabs; columnHeadTitle = "Parameter\tValue"; des->d_size = cint(2*cw + 1, n); syntax_dependent = 1; } AgString param_table_dc::findHelpTopic(void) { LOGSECTION("param_table_dc::findHelpTopic"); int i; int length; getLine(des->c_loc_doc.y); LOGV(des->c_loc_doc.y) LCV(string_base); length = strlen(string_base); for (i = 0; string_base[i] == ' '; i++); //title = &string_base[i]; for (i = length; string_base[--i] != '\t'; ) { /* Nothing to do */ } string_base[i] = 0; AgString topic = string_base; rcs(); LOGV(topic); return topic; } // text_window_dc void text_window_dc::getLine(unsigned ln) const { char *ptr = text.pointer(); unsigned k = 0; char c; assert(text.exists()); while (k < ln) { ptr = 1+strchr(ptr, '\n'); k++; } ics(); while (1) { c = *ptr++; if (c == '\n' || c== 0) { break; } acs(c); } } text_window_dc::text_window_dc(AgString title, AgString text_arg) : dc(title) { int dw, dp; char *p, *base = text_arg.pointer(); text = text_arg; dw = 0; dp = 0; while (1) { int w; p = strchr(base, '\n'); if (p == NULL) { break; } dp++; w = (int)(p - base); if (w > dw) { dw = w; } base = p+1; } des->d_size = cint(dw, dp); syntax_dependent = 0; }