blob: fbc2ae5eaf9848eb85fab22973db1eeb25b03730 [file]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library llcpptest.handleraii.test;
using zx;
type HandleStruct = resource struct {
h zx.handle:EVENT;
};
type HandleStructStruct = resource struct {
s HandleStruct;
};
type MultiFieldStruct = resource struct {
h1 zx.handle:EVENT;
s HandleStruct;
h2 zx.handle:EVENT;
};
type HandleStructOptionalStruct = resource struct {
s box<HandleStruct>;
};
type VectorStruct = resource struct {
v vector<HandleStruct>;
};
type ArrayStruct = resource struct {
a array<HandleStruct, 3>;
};
type HandleUnion = strict resource union {
1: h1 zx.handle:EVENT;
2: h2 HandleStruct;
};
type HandleUnionStruct = resource struct {
u HandleUnion;
};
type HandleUnionOptionalStruct = resource struct {
u HandleUnion:optional;
};
type HandleTable = resource table {
1: h1 zx.handle:EVENT;
2: h2 HandleStruct;
};
type HandleTableStruct = resource struct {
t HandleTable;
};
protocol HandleProvider {
GetHandle() -> (resource struct {
value zx.handle:EVENT;
});
GetHandleStruct() -> (resource struct {
value HandleStruct;
});
GetHandleStructStruct() -> (resource struct {
value HandleStructStruct;
});
GetMultiFieldStruct() -> (resource struct {
value MultiFieldStruct;
});
GetMultiArgs() -> (resource struct {
h1 zx.handle:EVENT;
s HandleStruct;
h2 zx.handle:EVENT;
});
GetVectorStruct(struct {
count uint32;
}) -> (resource struct {
value VectorStruct;
});
GetArrayStruct() -> (resource struct {
value ArrayStruct;
});
GetHandleUnion(struct {
field int32;
}) -> (resource struct {
value HandleUnion;
});
GetHandleUnionStruct(struct {
field int32;
}) -> (resource struct {
value HandleUnionStruct;
});
GetHandleTable(struct {
fields uint32;
}) -> (resource struct {
value HandleTable;
});
GetHandleTableStruct(struct {
fields uint32;
}) -> (resource struct {
value HandleTableStruct;
});
GetOptionalHandleStruct(struct {
defined bool;
}) -> (resource struct {
value box<HandleStruct>;
});
GetOptionalHandleUnion(struct {
field int32;
}) -> (resource struct {
value HandleUnion:optional;
});
GetOptionalHandleUnionStruct(struct {
defined bool;
field int32;
}) -> (resource struct {
value box<HandleUnionStruct>;
});
GetOptionalHandleTableStruct(struct {
defined bool;
fields uint32;
}) -> (resource struct {
value box<HandleTableStruct>;
});
GetHandleStructOptionalStruct(struct {
defined bool;
}) -> (resource struct {
value HandleStructOptionalStruct;
});
GetHandleUnionOptionalStruct(struct {
defined bool;
field int32;
}) -> (resource struct {
value HandleUnionOptionalStruct;
});
GetVectorOfHandle(struct {
count uint32;
}) -> (resource struct {
value vector<zx.handle:EVENT>;
});
GetVectorOfVectorOfHandle(struct {
count1 uint32;
count2 uint32;
}) -> (resource struct {
value vector<vector<zx.handle:EVENT>>;
});
GetVectorOfVectorOfVectorOfHandle(struct {
count1 uint32;
count2 uint32;
count3 uint32;
}) -> (resource struct {
value vector<vector<vector<zx.handle:EVENT>>>;
});
GetVectorOfHandleStruct(struct {
count uint32;
}) -> (resource struct {
value vector<HandleStruct>;
});
GetVectorOfVectorOfHandleStruct(struct {
count1 uint32;
count2 uint32;
}) -> (resource struct {
value vector<vector<HandleStruct>>;
});
GetVectorOfVectorOfVectorOfHandleStruct(struct {
count1 uint32;
count2 uint32;
count3 uint32;
}) -> (resource struct {
value vector<vector<vector<HandleStruct>>>;
});
GetArrayOfHandle() -> (resource struct {
value array<zx.handle:EVENT, 2>;
});
GetArrayOfArrayOfHandle() -> (resource struct {
value array<array<zx.handle:EVENT, 2>, 3>;
});
GetArrayOfArrayOfArrayOfHandle() -> (resource struct {
value array<array<array<zx.handle:EVENT, 2>, 3>, 4>;
});
GetArrayOfHandleStruct() -> (resource struct {
value array<HandleStruct, 2>;
});
GetArrayOfArrayOfHandleStruct() -> (resource struct {
value array<array<HandleStruct, 2>, 3>;
});
GetArrayOfArrayOfArrayOfHandleStruct() -> (resource struct {
value array<array<array<HandleStruct, 2>, 3>, 4>;
});
GetMixed1(struct {
count uint32;
}) -> (resource struct {
value array<vector<zx.handle:EVENT>, 2>;
});
GetMixed2(struct {
count uint32;
}) -> (resource struct {
value vector<array<zx.handle:EVENT, 2>>;
});
};