home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / IDIOMS.ZIP / 5-21.C < prev    next >
C/C++ Source or Header  |  1991-12-04  |  694b  |  27 lines

  1. /* Copyright (c) 1992 by AT&T Bell Laboratories. */
  2. /* Advanced C++ Programming Styles and Idioms */
  3. /* James O. Coplien */
  4. /* All rights reserved. */
  5.  
  6. #include "5-20.c"
  7.  
  8. class Filter: public Value {
  9. public:
  10.     Filter(Frequency w1, Frequency w2 = 0):
  11.         Value(0, w1), omega2(w2), cachedInput(0) {
  12.     }
  13.     virtual Value *evaluate(Value* = 0) = 0;
  14.     virtual Value *operator()(Value*) = 0;
  15.     virtual void print() = 0;
  16.     Frequency f2() { return omega2; }
  17.     Type type() {
  18.         if (cachedInput) return cachedInput->type();
  19.         else return baseType;
  20.     }
  21. protected:
  22.     Type myType, baseType;
  23.     Value *cachedInput;
  24. private:
  25.     Frequency omega2;
  26. };
  27.