Esempio n. 1
0
// 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;
}
Esempio n. 2
0
// 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;
}
Esempio n. 3
0
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);
  }
}
Esempio n. 4
0
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;
	}
}