#include <sstream>
-_finline CYFlags operator ~(CYFlags rhs) {
- return static_cast<CYFlags>(~static_cast<unsigned>(rhs));
-}
-
-_finline CYFlags operator &(CYFlags lhs, CYFlags rhs) {
- return static_cast<CYFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs));
-}
-
-_finline CYFlags operator |(CYFlags lhs, CYFlags rhs) {
- return static_cast<CYFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs));
-}
-
-_finline CYFlags &operator |=(CYFlags &lhs, CYFlags rhs) {
- return lhs = lhs | rhs;
-}
-
-_finline CYFlags CYLeft(CYFlags flags) {
- return flags & ~(CYNoDangle | CYNoInteger);
-}
-
-_finline CYFlags CYRight(CYFlags flags) {
- return flags & ~CYNoBF;
-}
-
-_finline CYFlags CYCenter(CYFlags flags) {
- return CYLeft(CYRight(flags));
-}
-
void CYOutput::Terminate() {
out_ << ';';
mode_ = NoMode;
out << next_;
}
-const char *CYDeclaration::ForEachIn() const {
- return identifier_->Word();
-}
-
void CYDeclaration::ForIn(CYOutput &out, CYFlags flags) const {
out << "var";
Output(out, CYRight(flags));
Output(out, CYAssign::Precedence_, CYNoFlags);
}
-const char *CYExpression::ForEachIn() const {
- return NULL;
-}
-
void CYExpression::For(CYOutput &out) const {
Output(out, CYNoIn);
}
if (initialiser_ != NULL)
initialiser_->For(out);
out.Terminate();
+ if (test_ != NULL)
+ out << ' ';
out << test_;
out.Terminate();
+ if (increment_ != NULL)
+ out << ' ';
out << increment_;
out << ')';
code_->Single(out, CYRight(flags));
true_->Single(out, jacks);
if (false_ != NULL) {
- out << "else";
+ out << '\t' << "else";
false_->Single(out, right);
}
void CYStatement::Multiple(CYOutput &out, CYFlags flags) const {
bool first(true);
- for (const CYStatement *next(this); next != NULL; next = next->next_) {
+ CYForEach (next, this) {
bool last(next->next_ == NULL);
CYFlags jacks(first ? last ? flags : CYLeft(flags) : last ? CYRight(flags) : CYCenter(flags));
first = false;