Pergunta

Eu tenho o seguinte código no Specman:

var x := some.very.long.path.to.a.variable.in.another.struct;

while (x == some_value) {
    //do something that uses x;
    //wait for something

    //get a new value for x
    x = some.very.long.path.to.a.variable.in.another.struct;
};

Agora, parece um desperdício para escrever a atribuição para x duas vezes; uma vez durante a inicialização e uma vez durante o loop.

O que eu realmente quero usar é uma referência ao nome da variável de comprimento, para que eu pudesse fazer:

var x := reference to some.very.long.path.to.a.variable.in.another.struct;

while (x == some_value) {
    //do something that uses x;
    //wait for something
    //no need to update x now since it's a reference
};

Isso pode ser feito em Specman?

Foi útil?

Solução

Specman / e geralmente usa referências para estruturas e listas, por isso, se o seu tipo de variável é qualquer um que o segundo exemplo deve funcionar. Para integer ou boolean Eu não sei uma maneira de usar uma referência para uma variável. De qualquer forma, duas idéias que podem ajudá-lo:

  1. Adicionar um ponteiro para o outro struct e vinculá-lo em um arquivo de configuração:

    struct a { other_variable : uint; };
    struct b {
        other_struct : a;
        some_func() is {
            var x : uint = other_struct.other_variable;
            while (x == some_value) {
                x = other_struct.other_variable;
            };
        };
    };
    extend cfg {
        struct_a : a;
        struct_b : b;
        keep struct_b.other_struct == struct_a;
    };
    

    UPDATE: Você pode encontrar mais algumas informações sobre esta técnica em deste Time Specman Publicar .

  2. Envolva seu loop while em uma função, não pode passar parâmetros por referência (ver help pass reference):

        some_func(x : *uint) is {
            while (x == some_value) {
                // stuff ...
            };
        };
    

Espero que isso ajude!

Daniel

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top