在 Cap'n Proto 中定义类型别名

问题描述 投票:0回答:2

我不明白如何在 Cap'n Proto 中导出类型别名。

我能想到的最简单的例子是点云。假设我们有一个模式,例如

struct Point {
    x @0: Float32 = 0;
    y @1: Float32 = 0;
}

然后我还想将这些点的列表导出为固定类型:

struct Point {
    x @0: Float32 = 0;
    y @1: Float32 = 0;
}

using PointCloud = List(Point);

在我看来(基于生成的代码)

PointCloud
类型并未作为模式的一部分导出。看来
PointCloud
只能在模式文件中内部使用。

如何导出此别名以便在外部使用?

capnproto
2个回答
0
投票

我偶然发现了路线图,其中有这样一句话:

类型别名:能够定义一个类型,该类型只是某些类型的别名 其他类型,并将其显示为例如语言中的 typedef 支持这一点。 (当前的 using 关键字仅适用于本地 使用并且不影响代码生成。)

所以也许这就是我问题的答案......目前根本不支持。


0
投票

如果您使用 golang,泛型会使用代码生成器中的基本 capnp 类型来覆盖这一点;例如:

type Point_List = capnp.StructList[Point]

其他语言代码生成器可能会做类似的事情;您需要检查他们的输出是否适用。

© www.soinside.com 2019 - 2024. All rights reserved.