From: fred Date: Sun, 24 Mar 2002 19:40:28 +0000 (+0000) Subject: lilypond-0.0.61 X-Git-Tag: release/1.5.59~4888 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=bf6ca2d7c75da4c1c34a8dd1fbf6a5798a45c916;p=lilypond.git lilypond-0.0.61 --- diff --git a/flower/dstream.cc b/flower/dstream.cc index 73416a4e46..23b77bbbc4 100644 --- a/flower/dstream.cc +++ b/flower/dstream.cc @@ -1,4 +1,10 @@ +/* + dstream.cc -- implement Dstream + + source file of the Flower Library + (c) 1996,1997 Han-Wen Nienhuys +*/ #include #include "assoc.hh" @@ -6,7 +12,7 @@ #include "scalar.hh" #include "text-db.hh" #include "string-convert.hh" - +#include "assoc-iter.hh" /// indent of each level const INDTAB = 2; @@ -38,25 +44,25 @@ strip_member(String pret) Dstream& Dstream::identify_as(String name) { - if (!os) + if (!os_l_) return *this; String mem(strip_pretty(name)); String cl(strip_member(mem)); String idx = cl; - if (silent->elt_b(mem)) + if (silent_assoc_p_->elt_b(mem)) idx = mem; - else if (silent->elt_b(cl)) + else if (silent_assoc_p_->elt_b(cl)) idx = cl; else { - (*silent)[idx] = false; + (*silent_assoc_p_)[idx] = false; } - local_silence = (*silent)[idx]; - if (classname != idx && !local_silence) { - classname=idx; - if (!(*silent)["Dstream"]) - *os << "[" << classname << ":]"; // messy. + local_silence_b_ = (*silent_assoc_p_)[idx]; + if (current_classname_str_ != idx && !local_silence_b_) { + current_classname_str_=idx; + if (!(*silent_assoc_p_)["Dstream"]) + *os_l_ << "[" << current_classname_str_ << ":]"; // messy. } return *this; } @@ -64,9 +70,9 @@ Dstream::identify_as(String name) bool Dstream::silence(String s) { - if (!silent->elt_b(s)) + if (!silent_assoc_p_->elt_b(s)) return false; - return (*silent)[s]; + return (*silent_assoc_p_)[s]; } /** Output a string via the Dstream. This is the only output @@ -95,31 +101,31 @@ Dstream::operator<<(char const *ch_l) void Dstream::output(String s) { - if (local_silence|| !os) + if (local_silence_b_|| !os_l_) return ; for (char const *cp = s ; *cp; cp++) switch(*cp) { case '{': case '[': - case '(': indentlvl += INDTAB; - *os << *cp; + case '(': indent_level_i_ += INDTAB; + *os_l_ << *cp; break; case ')': case ']': case '}': - indentlvl -= INDTAB; - *os << *cp ; + indent_level_i_ -= INDTAB; + *os_l_ << *cp ; - assert (indentlvl>=0) ; + assert (indent_level_i_>=0) ; break; case '\n': - *os << '\n' << String (' ', indentlvl) << flush; + *os_l_ << '\n' << String (' ', indent_level_i_) << flush; break; default: - *os << *cp; + *os_l_ << *cp; break; } return ; @@ -128,10 +134,10 @@ Dstream::output(String s) Dstream::Dstream(ostream *r, char const * cfg_nm ) { - os = r; - silent = new Assoc; - indentlvl = 0; - if (!os) + os_l_ = r; + silent_assoc_p_ = new Assoc; + indent_level_i_ = 0; + if (!os_l_) return; char const * fn =cfg_nm ? cfg_nm : ".dstreamrc"; @@ -148,7 +154,7 @@ Dstream::Dstream(ostream *r, char const * cfg_nm ) r.message("not enough fields in Dstream init."); continue; } - (*silent)[r[0]] = (bool)(int)(Scalar(r[1])); + (*silent_assoc_p_)[r[0]] = (bool)(int)(Scalar(r[1])); } } @@ -156,6 +162,15 @@ Dstream::Dstream(ostream *r, char const * cfg_nm ) Dstream::~Dstream() { - delete silent; - assert(!indentlvl) ; + delete silent_assoc_p_; + assert(!indent_level_i_) ; +} + +void +Dstream::clear_silence() +{ + for (Assoc_iter i(*silent_assoc_p_); i.ok(); i++) { + i.val() = 0; + } + }