blob: 638769ea2114cd680695867f6d702573c9011836 [file] [log] [blame]
// 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;
};
closed protocol HandleProvider {
strict GetHandle() -> (resource struct {
value zx.Handle:EVENT;
});
strict GetHandleStruct() -> (resource struct {
value HandleStruct;
});
strict GetHandleStructStruct() -> (resource struct {
value HandleStructStruct;
});
strict GetMultiFieldStruct() -> (resource struct {
value MultiFieldStruct;
});
strict GetMultiArgs() -> (resource struct {
h1 zx.Handle:EVENT;
s HandleStruct;
h2 zx.Handle:EVENT;
});
strict GetVectorStruct(struct {
count uint32;
}) -> (resource struct {
value VectorStruct;
});
strict GetArrayStruct() -> (resource struct {
value ArrayStruct;
});
strict GetHandleUnion(struct {
field int32;
}) -> (resource struct {
value HandleUnion;
});
strict GetHandleUnionStruct(struct {
field int32;
}) -> (resource struct {
value HandleUnionStruct;
});
strict GetHandleTable(struct {
fields uint32;
}) -> (resource struct {
value HandleTable;
});
strict GetHandleTableStruct(struct {
fields uint32;
}) -> (resource struct {
value HandleTableStruct;
});
strict GetOptionalHandleStruct(struct {
defined bool;
}) -> (resource struct {
value box<HandleStruct>;
});
strict GetOptionalHandleUnion(struct {
field int32;
}) -> (resource struct {
value HandleUnion:optional;
});
strict GetOptionalHandleUnionStruct(struct {
defined bool;
field int32;
}) -> (resource struct {
value box<HandleUnionStruct>;
});
strict GetOptionalHandleTableStruct(struct {
defined bool;
fields uint32;
}) -> (resource struct {
value box<HandleTableStruct>;
});
strict GetHandleStructOptionalStruct(struct {
defined bool;
}) -> (resource struct {
value HandleStructOptionalStruct;
});
strict GetHandleUnionOptionalStruct(struct {
defined bool;
field int32;
}) -> (resource struct {
value HandleUnionOptionalStruct;
});
strict GetVectorOfHandle(struct {
count uint32;
}) -> (resource struct {
value vector<zx.Handle:EVENT>;
});
strict GetVectorOfVectorOfHandle(struct {
count1 uint32;
count2 uint32;
}) -> (resource struct {
value vector<vector<zx.Handle:EVENT>>;
});
strict GetVectorOfVectorOfVectorOfHandle(struct {
count1 uint32;
count2 uint32;
count3 uint32;
}) -> (resource struct {
value vector<vector<vector<zx.Handle:EVENT>>>;
});
strict GetVectorOfHandleStruct(struct {
count uint32;
}) -> (resource struct {
value vector<HandleStruct>;
});
strict GetVectorOfVectorOfHandleStruct(struct {
count1 uint32;
count2 uint32;
}) -> (resource struct {
value vector<vector<HandleStruct>>;
});
strict GetVectorOfVectorOfVectorOfHandleStruct(struct {
count1 uint32;
count2 uint32;
count3 uint32;
}) -> (resource struct {
value vector<vector<vector<HandleStruct>>>;
});
strict GetArrayOfHandle() -> (resource struct {
value array<zx.Handle:EVENT, 2>;
});
strict GetArrayOfArrayOfHandle() -> (resource struct {
value array<array<zx.Handle:EVENT, 2>, 3>;
});
strict GetArrayOfArrayOfArrayOfHandle() -> (resource struct {
value array<array<array<zx.Handle:EVENT, 2>, 3>, 4>;
});
strict GetArrayOfHandleStruct() -> (resource struct {
value array<HandleStruct, 2>;
});
strict GetArrayOfArrayOfHandleStruct() -> (resource struct {
value array<array<HandleStruct, 2>, 3>;
});
strict GetArrayOfArrayOfArrayOfHandleStruct() -> (resource struct {
value array<array<array<HandleStruct, 2>, 3>, 4>;
});
strict GetMixed1(struct {
count uint32;
}) -> (resource struct {
value array<vector<zx.Handle:EVENT>, 2>;
});
strict GetMixed2(struct {
count uint32;
}) -> (resource struct {
value vector<array<zx.Handle:EVENT, 2>>;
});
};