home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
IDIOMS.ZIP
/
5-22.C
< prev
next >
Wrap
Text File
|
1991-12-04
|
1KB
|
37 lines
/* Copyright (c) 1992 by AT&T Bell Laboratories. */
/* Advanced C++ Programming Styles and Idioms */
/* James O. Coplien */
/* All rights reserved. */
Value *
BPF::evaluate(Value *input = 0) {
Value *f = cachedInput->evaluate(input);
if (f->f1() > f1() && f->f1() < f2()) return f;
else return zero;
}
Value *
BPF::operator()(Value* f) {
switch(f->type()) {
case T_LPF:
if (f->f1() > f2()) return this;
else return new BPF(f1(), f->f1());
case T_HPF:
if (f->f1() < f1()) return this;
else return new BPF(f->f1(), f2());
case T_BPF:
Frequency lowfreq = f->f1();
Frequency highfreq = ((Filter*)f)->f2();
if (f1() > lowfreq) lowfreq = f1();
if (f2() < highfreq) highfreq = f2();
return new BPF(lowfreq, highfreq);
case T_Notch:
cachedInput = f;
return this;
case T_Data:
myType = T_Data;
cachedInput = f;
return evaluate();
}
}