Exemplo n.º 1
0
// ShowAround
void
ServerInfo::ShowAround(RequestMemberVisitor* visitor)
{
	VisitString(this, visitor, fServerName);
	VisitString(this, visitor, fConnectionMethod);
	int32 count = fShareInfos.Count();
	visitor->Visit(this, count);
	for (int32 i = 0; i < count; i++)
		visitor->Visit(this, fShareInfos.ElementAt(i));
}
Exemplo n.º 2
0
bool FastXMLVisitor::VisitEnter (const XMLElement & element, const XMLAttribute* /* attr */)
{
  const char* element_name = element.Name();

  if (strcmp(element_name, "templates") == 0 ) {
    instruction_context context;
    context.ns_ = get_optional_attr(element, "templateNs", "");
    context.dictionary_ = get_optional_attr(element, "dictionary", "");

    context_stack_.push_back(context);
    return VisitEnterTemplates(element);
  }

  std::string name_attr = get_optional_attr(element, "name", "");

  if (strcmp(element_name, "templateRef") == 0) {
    return VisitTemplateRef(element, name_attr, num_fields_.back());
  }

  bool result = true;

  if (strcmp(element_name, "template") == 0 ) {
    save_context(element);
    result = VisitEnterTemplate(element, name_attr, num_fields_.back());
  }
  else if (strcmp(element_name, "group") == 0 ) {
    save_context(element);
    result = VisitEnterGroup(element, name_attr, num_fields_.back());
  }
  else if (strcmp(element_name, "sequence") == 0 ) {
    save_context(element);
    result = VisitEnterSequence(element, name_attr, num_fields_.back());
  }
  else if (strcmp(element_name, "define") == 0) {
    return VisitEnterDefine(element, name_attr);
  }
  else {
    int bits;
    bool is_vector;
    if ((strncmp(element_name, "int", 3) == 0 &&  parse_bits(element_name+3, bits, is_vector) ) ||
        (strncmp(element_name, "uInt", 4) == 0 &&  parse_bits(element_name+4, bits, is_vector) )  ) {
      // int8, int16 and uint8, uint16 are not standards, convert them to int32 and uint32 respectively
      if (is_vector)
        return VisitIntVector(element,bits, name_attr, num_fields_.back());
      return VisitInteger(element,bits, name_attr, num_fields_.back());
    }
    else if (strcmp(element_name, "decimal") == 0 ) {
      return VisitDecimal(element, name_attr, num_fields_.back());
    }
    else if (strcmp(element_name, "string") == 0 ) {
      return VisitString(element, name_attr, num_fields_.back());
    }
    else if (strcmp(element_name, "byteVector") == 0 ) {
      return VisitByteVector(element, name_attr, num_fields_.back());
    }
    return true;
  }
  num_fields_.push_back(0);
  return result;
}
Exemplo n.º 3
0
// ShowAround
void
ShareInfo::ShowAround(RequestMemberVisitor* visitor)
{
	VisitString(this, visitor, fShareName);
}
Exemplo n.º 4
0
void Visitor::Visit(Element const& element)
{
    bool isElement = false;
    switch(element.Type())
    {
        // Constant Tokens
        case Types::NIL: VisitNil(); break;
        case Types::TRUE_: VisitTrue(); break; 
        case Types::FALSE_: VisitFalse(); break; 
        case Types::STRING:
        {
            String S = CastToString(element, isElement);
            VisitString(S);
        }
            break;
        case Types::SUPERSTRING:
        {
            SuperString S = CastToSuperString(element, isElement);
            VisitSuperString(S);
        }
            break;
        case Types::NUMBER:
        {
            Number N = CastToNumber(element, isElement);
            VisitNumber(N);
        }
            break;
        case Types::CONTAINER:
        {
            Container C = CastToContainer(element, isElement);
            VisitContainer(C);
        }
            break;
        case Types::BUILTIN:
        {
            Builtin B = CastToBuiltin(element, isElement);
            VisitBuiltin(B);
        }
            break;
        case Types::CALL:
        {
            Funcall F = CastToFuncall(element, isElement);
            VisitCall(F);
        }
            break;
        case Types::FUNCTION:
        {
            Function F = CastToFunction(element, isElement);
            VisitFunction(F);
        }
            break;
        case Types::IF:
        {
            If F = CastToIf(element, isElement);
            VisitIf(F);
        }
            break;
        case Types::SET:
        {
            Set F = CastToSet(element, isElement);
            VisitSet(F);
        }
            break;
        case Types::IMPERATIVE:
        {
            Imperative F = CastToImperative(element, isElement);
            VisitImperative(F);
        }
        case Types::CASE:
        {
            Case C = CastToCase(element, isElement);
            VisitCase(C);
        }
            break;
    };
}