7 /// indent of each level
11 should use Regexp library.
14 strip_pretty(String pret)
16 String cl(pret.left_str(pret.index_i('(')));
17 int l = cl.index_last_i(' ');
18 cl = cl.right_str(cl.len() - l - 1);
23 strip_member(String pret)
25 String cl(pret.left_str(pret.index_last_i(':')-1));
30 Dstream::identify_as(String name)
35 String mem(strip_pretty(name));
36 String cl(strip_member(mem));
39 if (silent->elt_query(mem))
41 else if (silent->elt_query(cl))
44 (*silent)[idx] = false;
46 local_silence = (*silent)[idx];
47 if (classname != idx && !local_silence) {
49 *os << "[" << classname << ":]";
55 Dstream::silence(String s)
57 if (!silent->elt_query(s))
62 /** only output possibility. Delegates all conversion to String class.
65 Dstream::operator<<(String s)
67 if (local_silence|| !os)
70 for (const char *cp = s ; *cp; cp++)
75 case '(': indentlvl += INDTAB;
85 assert (indentlvl>=0) ;
89 *os << '\n' << String (' ', indentlvl) << flush;
99 Dstream::Dstream(ostream *r, const char * cfg_nm )
102 silent = new Assoc<String,bool>;
107 const char * fn =cfg_nm ? cfg_nm : ".dstreamrc";
109 ifstream ifs(fn); // can't open
116 Text_record r( cfg++);
118 r.message("not enough fields in Dstream init.");
121 (*silent)[r[0]] = (bool)(int)(Scalar(r[1]));