aboutsummaryrefslogtreecommitdiff
path: root/src/armnnSerializer
diff options
context:
space:
mode:
authorFinn Williams <Finn.Williams@arm.com>2021-01-26 22:30:06 +0000
committerfinn.williams <finn.williams@arm.com>2021-02-01 10:28:32 +0000
commit85d3671618f0d40b71ebbc80373389140390c2cd (patch)
tree9c8ae5bdfdb871a828069943df4373a812ba959d /src/armnnSerializer
parent244b5bf11ee077b4c3bddd3786bdb80361fc2833 (diff)
downloadarmnn-85d3671618f0d40b71ebbc80373389140390c2cd.tar.gz
IVGCVSW-5593 Implement Pimpl Idiom for serialization classes
Signed-off-by: Finn Williams <Finn.Williams@arm.com> Change-Id: I01c7bd314219e58f71505dcb787d606dbded914a
Diffstat (limited to 'src/armnnSerializer')
-rw-r--r--src/armnnSerializer/Serializer.cpp54
-rw-r--r--src/armnnSerializer/Serializer.hpp10
-rw-r--r--src/armnnSerializer/test/ActivationSerializationTests.cpp7
-rw-r--r--src/armnnSerializer/test/SerializerTests.cpp7
4 files changed, 47 insertions, 31 deletions
diff --git a/src/armnnSerializer/Serializer.cpp b/src/armnnSerializer/Serializer.cpp
index 379cce2109..a0c99b9cca 100644
--- a/src/armnnSerializer/Serializer.cpp
+++ b/src/armnnSerializer/Serializer.cpp
@@ -12,8 +12,6 @@
#include <iostream>
-#include <flatbuffers/util.h>
-
#include "SerializerUtils.hpp"
using namespace armnn;
@@ -23,6 +21,37 @@ namespace serializer = armnnSerializer;
namespace armnnSerializer
{
+ISerializer::ISerializer() : pSerializerImpl(new SerializerImpl())
+{
+}
+
+ISerializer::~ISerializer() = default;
+
+ISerializer* ISerializer::CreateRaw()
+{
+ return new ISerializer();
+}
+
+ISerializerPtr ISerializer::Create()
+{
+ return ISerializerPtr(CreateRaw(), &ISerializer::Destroy);
+}
+
+void ISerializer::Destroy(ISerializer* serializer)
+{
+ delete serializer;
+}
+
+void ISerializer::Serialize(const armnn::INetwork& inNetwork)
+{
+ pSerializerImpl->Serialize(inNetwork);
+}
+
+bool ISerializer::SaveSerializedToStream(std::ostream& stream)
+{
+ return pSerializerImpl->SaveSerializedToStream(stream);
+}
+
serializer::ActivationFunction GetFlatBufferActivationFunction(armnn::ActivationFunction function)
{
switch (function)
@@ -1729,23 +1758,7 @@ std::vector<fb::Offset<serializer::OutputSlot>>
return outputSlots;
}
-
-ISerializer* ISerializer::CreateRaw()
-{
- return new Serializer();
-}
-
-ISerializerPtr ISerializer::Create()
-{
- return ISerializerPtr(CreateRaw(), &ISerializer::Destroy);
-}
-
-void ISerializer::Destroy(ISerializer* serializer)
-{
- delete serializer;
-}
-
-void Serializer::Serialize(const INetwork& inNetwork)
+void ISerializer::SerializerImpl::Serialize(const INetwork& inNetwork)
{
// Iterate through to network
inNetwork.Accept(m_SerializerVisitor);
@@ -1763,7 +1776,7 @@ void Serializer::Serialize(const INetwork& inNetwork)
fbBuilder.Finish(serializedGraph);
}
-bool Serializer::SaveSerializedToStream(std::ostream& stream)
+bool ISerializer::SerializerImpl::SaveSerializedToStream(std::ostream& stream)
{
flatbuffers::FlatBufferBuilder& fbBuilder = m_SerializerVisitor.GetFlatBufferBuilder();
@@ -1772,4 +1785,5 @@ bool Serializer::SaveSerializedToStream(std::ostream& stream)
return !stream.bad();
}
+
} // namespace armnnSerializer
diff --git a/src/armnnSerializer/Serializer.hpp b/src/armnnSerializer/Serializer.hpp
index 8c44ced72f..f28be09036 100644
--- a/src/armnnSerializer/Serializer.hpp
+++ b/src/armnnSerializer/Serializer.hpp
@@ -345,20 +345,20 @@ private:
uint32_t m_layerId;
};
-class Serializer : public ISerializer
+class ISerializer::SerializerImpl
{
public:
- Serializer() {}
- ~Serializer() {}
+ SerializerImpl() = default;
+ ~SerializerImpl() = default;
/// Serializes the network to ArmNN SerializedGraph.
/// @param [in] inNetwork The network to be serialized.
- void Serialize(const armnn::INetwork& inNetwork) override;
+ void Serialize(const armnn::INetwork& inNetwork);
/// Serializes the SerializedGraph to the stream.
/// @param [stream] the stream to save to
/// @return true if graph is Serialized to the Stream, false otherwise
- bool SaveSerializedToStream(std::ostream& stream) override;
+ bool SaveSerializedToStream(std::ostream& stream);
private:
diff --git a/src/armnnSerializer/test/ActivationSerializationTests.cpp b/src/armnnSerializer/test/ActivationSerializationTests.cpp
index abc63ae64d..1645731413 100644
--- a/src/armnnSerializer/test/ActivationSerializationTests.cpp
+++ b/src/armnnSerializer/test/ActivationSerializationTests.cpp
@@ -54,11 +54,12 @@ BOOST_AUTO_TEST_CASE(ActivationSerialization)
activationLayer->GetOutputSlot(0).Connect(outputLayer->GetInputSlot(0));
activationLayer->GetOutputSlot(0).SetTensorInfo(outputInfo);
- armnnSerializer::Serializer serializer;
- serializer.Serialize(*network);
+ armnnSerializer::ISerializerPtr serializer = armnnSerializer::ISerializer::Create();
+
+ serializer->Serialize(*network);
std::stringstream stream;
- serializer.SaveSerializedToStream(stream);
+ serializer->SaveSerializedToStream(stream);
std::string const serializerString{stream.str()};
std::vector<std::uint8_t> const serializerVector{serializerString.begin(), serializerString.end()};
diff --git a/src/armnnSerializer/test/SerializerTests.cpp b/src/armnnSerializer/test/SerializerTests.cpp
index 6866391e0f..11177f5d04 100644
--- a/src/armnnSerializer/test/SerializerTests.cpp
+++ b/src/armnnSerializer/test/SerializerTests.cpp
@@ -237,11 +237,12 @@ armnn::INetworkPtr DeserializeNetwork(const std::string& serializerString)
std::string SerializeNetwork(const armnn::INetwork& network)
{
- armnnSerializer::Serializer serializer;
- serializer.Serialize(network);
+ armnnSerializer::ISerializerPtr serializer = armnnSerializer::ISerializer::Create();
+
+ serializer->Serialize(network);
std::stringstream stream;
- serializer.SaveSerializedToStream(stream);
+ serializer->SaveSerializedToStream(stream);
std::string serializerString{stream.str()};
return serializerString;