diff --git a/src/pvxs/sharedArray.h b/src/pvxs/sharedArray.h index a44fe39..f60603d 100644 --- a/src/pvxs/sharedArray.h +++ b/src/pvxs/sharedArray.h @@ -48,6 +48,7 @@ PVXS_API size_t elementSize(ArrayType type); //! Return a void array usable for the given storage type +PVXS_API shared_array allocArray(ArrayType type, size_t count); namespace detail { diff --git a/test/testshared.cpp b/test/testshared.cpp index e060f4c..16c873e 100644 --- a/test/testshared.cpp +++ b/test/testshared.cpp @@ -196,6 +196,20 @@ void testFromVector() testEq(V.size(), 3u); } +void testElemAlloc() +{ + testDiag("%s", __func__); + + testEq(elementSize(ArrayType::UInt8), 1u); + testEq(elementSize(ArrayType::UInt16), 2u); + testEq(elementSize(ArrayType::UInt32), 4u); + testEq(elementSize(ArrayType::UInt64), 8u); + + auto varr = allocArray(ArrayType::UInt32, 3u); + testEq(varr.size(), 3u); + testEq(varr.original_type(), ArrayType::UInt32); +} + void testConvert() { testDiag("%s", __func__); @@ -228,7 +242,7 @@ void testConvert() MAIN(testshared) { - testPlan(104); + testPlan(110); testSetup(); testEmpty(); testEmpty(); @@ -243,6 +257,7 @@ MAIN(testshared) testComplex(); testCast(); testFromVector(); + testElemAlloc(); testConvert(); return testDone(); }