Можно ли расширить теговое объединение большим количеством вариантов в Cap'n Proto, в то же время совместимо с любыми старыми данными в двоичной форме? - PullRequest
0 голосов
/ 10 апреля 2020

Я изучаю языки схемы протокола, и кажется, что Cap'n'proto удовлетворит мои потребности, но есть одна важная функция, которая мне нужна, которую я не могу найти в документации:

Допустим, я есть ли у этого тегового объединения два члена структуры с C -подобным синтаксисом:

struct taggedUnion {
    int tag;
    union {
        struct a {
           int x;
        }

        struct b {
            float x;
        }
    }
}

Могу ли я в будущем добавить еще одну структуру к теговому объединению, сохраняя при этом возможность чтения старых данных?

struct taggedUnion {
    int tag;
    union {
        struct a {
           int x;
        }

        struct b {
            float y;
        }

        struct c {
            int z;
            bool b;
        }
    }
}

Такое чувство, что это должно быть выполнимо, но я не могу найти ничего в документах, говорящих, что это так. Есть примечание о том, что группы можно расширять, не нарушая совместимость проводов (новые поля обнуляются для старых данных).

Если это возможно, как бы я объявил об этом изменении в синтаксисе cap'n proto-схемы? Пример до / после был бы великолепен!

1 Ответ

0 голосов
/ 10 апреля 2020

Нашел это. ... new fields may be added to existing groups and unions кажется, что это может быть ответ на этот вопрос.

...