// Getting an identifier bool XMLParser::GetIdentifier(CString& p_identifier) { bool result = false; // Reset result p_identifier.Empty(); // Identifiers starting with alpha, underscore or colon (no numbers!) char ch = *m_pointer; if(IsAlpha(ch) || ch == '_' || ch == ':') { result = true; p_identifier += ValueChar(); while(*m_pointer) { ch = *m_pointer; if(IsAlphaNummeric(ch) || ch == '_' || ch == '-' || ch == ':' || ch == '.') { p_identifier += ValueChar(); } else break; } if(m_utf8) { p_identifier = DecodeStringFromTheWire(p_identifier); } } return result; }
// Get quoted string from message CString XMLParser::GetQuotedString() { CString result; SkipWhiteSpace(); if(*m_pointer && (*m_pointer == '\"' || *m_pointer == '\'')) { // Save the delimiter char delim = *m_pointer; m_pointer++; while(*m_pointer && *m_pointer != delim) { result += ValueChar(); } NeedToken(delim); if(m_utf8) { result = DecodeStringFromTheWire(result); } } return result; }
void XMLParser::ParseText() { CString value; while(*m_pointer && *m_pointer != '<') { unsigned char ch = ValueChar(); if(m_whiteSpace == WhiteSpace::COLLAPSE_WHITESPACE && isspace(ch)) { value += ' '; // Add exactly one whitespace char while(*m_pointer && isspace(*m_pointer)) ++m_pointer; } else { value += ch; } } // Collapse begin and end if(m_whiteSpace == WhiteSpace::COLLAPSE_WHITESPACE) { value.Trim(); } // Add to current element if(m_lastElement) { if(m_utf8) { value = DecodeStringFromTheWire(value); } m_lastElement->SetValue(value); } }
void DSKY::ProcessChannel10(ChannelValue val){ ChannelValue10 out_val; char C1, C2; out_val.Value = val.to_ulong(); C1 = ValueChar(out_val.Bits.c); C2 = ValueChar(out_val.Bits.d); switch (out_val.Bits.a) { case 11: Prog[0] = C1; Prog[1] = C2; break; case 10: Verb[0] = C1; Verb[1] = C2; break; case 9: Noun[0] = C1; Noun[1] = C2; break; case 8: R1[1] = C2; break; case 7: R1[2] = C1; R1[3] = C2; if (out_val.Bits.b) { R1[0] = '+'; } else if (R1[0] == '+') { R1[0] = ' '; } break; case 6: R1[4] = C1; R1[5] = C2; if (out_val.Bits.b) { R1[0] = '-'; } else if (R1[0] == '-') { R1[0] = ' '; } break; case 5: R2[1] = C1; R2[2] = C2; if (out_val.Bits.b) { R2[0] = '+'; } else if (R2[0] == '+') { R2[0] = ' '; } break; case 4: R2[3] = C1; R2[4] = C2; if (out_val.Bits.b) { R2[0] = '-'; } else if (R2[0] == '-') { R2[0] = ' '; } break; case 3: R2[5] = C1; R3[1] = C2; break; case 2: R3[2] = C1; R3[3] = C2; if (out_val.Bits.b) { R3[0] = '+'; } else if (R3[0] == '+') { R3[0] = ' '; } break; case 1: R3[4] = C1; R3[5] = C2; if (out_val.Bits.b) { R3[0] = '-'; } else if (R3[0] == '-') { R3[0] = ' '; } break; // 12 - set light states. case 12: SetVel((out_val.Value & (1 << 2)) != 0); SetNoAtt((out_val.Value & (1 << 3)) != 0); SetAlt((out_val.Value & (1 << 4)) != 0); SetGimbalLock((out_val.Value & (1 << 5)) != 0); SetTracker((out_val.Value & (1 << 7)) != 0); SetProg((out_val.Value & (1 << 8)) != 0); break; } }