From 2e3e71f7eedb63bae01eb61518cc9639f3febb7c Mon Sep 17 00:00:00 2001 From: ian Date: Sun, 3 Apr 2005 15:15:38 +0000 Subject: [PATCH] Provide "help". Print a prompt --- main.cc | 3 +++ parameter.cc | 19 +++++++++++++++++-- parameter.hh | 15 ++++++++------- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/main.cc b/main.cc index fbacbfb..593cf01 100644 --- a/main.cc +++ b/main.cc @@ -111,6 +111,7 @@ int main(int argc, char **argv) { if (x11) list->display(*x11); if (dualx11) list->display(*dualx11); for (;;) { + cerr << "> "; cin.getline(buf,sizeof(buf),'\n'); if (!cin.good()) { cerr << "error reading command input, giving up\n"; @@ -156,6 +157,8 @@ int main(int argc, char **argv) { } else if (!strcmp(buf,"quit")) { exit(0); } else if (!strcmp(buf,"list")) { + AnyParameter::help(); + } else if (!strcmp(buf,"help")) { AnyParameter::list(); } else if (!*buf) { break; diff --git a/parameter.cc b/parameter.cc index 89566fd..cc8b175 100644 --- a/parameter.cc +++ b/parameter.cc @@ -18,11 +18,26 @@ AnyParameter* AnyParameter::find(const char *n) { return search; } +void AnyParameter::printvalue(void) { + cerr << name << " "; + rangecheckprint(); +} + void AnyParameter::list() { for (AnyParameter* search= first; search; - search= search->next) - search->rangecheck(); + search= search->next) { + cerr << search->description << ": "; + search->printvalue(); + } +} + +void AnyParameter::help() { + for (AnyParameter* search= first; + search; + search= search->next) { + search->printvalue(); + } } AnyParameter* AnyParameter::first= 0; diff --git a/parameter.hh b/parameter.hh index 07b0137..b426e37 100644 --- a/parameter.hh +++ b/parameter.hh @@ -13,7 +13,8 @@ class AnyParameter { protected: const char *name; const char *description; - virtual void rangecheck() =0; + void printvalue(); + virtual void rangecheckprint() =0; public: AnyParameter(const char *n, const char *d); virtual void operator ++() =0; @@ -21,17 +22,18 @@ public: virtual void operator =(double) =0; static AnyParameter *find(const char *n); static void list(); + static void help(); }; template class Parameter : AnyParameter { T value, delta, min, max; - void rangecheck(); + void rangecheckprint(); public: Parameter(const char *n, const char *d, T i, T de, T mi, T ma); operator T (){ return value; } - void operator ++(){ value+= delta; rangecheck(); } - void operator --(){ value-= delta; rangecheck(); } - void operator =(double v) { value= (T)v; rangecheck(); } + void operator ++(){ value+= delta; rangecheckprint(); } + void operator --(){ value-= delta; rangecheckprint(); } + void operator =(double v) { value= (T)v; rangecheckprint(); } }; template Parameter::Parameter @@ -40,8 +42,7 @@ template Parameter::Parameter value=i; delta=de; min=mi; max=ma; } -template void Parameter::rangecheck() { - cerr << name << " "; +template void Parameter::rangecheckprint() { if (valuemax) { -- 2.30.2