1 // 2 // Copyright © 2017 Arm Ltd. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 #pragma once 6 7 #include "armnn/INetwork.hpp" 8 #include "armnn/NetworkFwd.hpp" 9 #include "armnn/Types.hpp" 10 11 namespace armnnSerializer 12 { 13 14 class ISerializer; 15 using ISerializerPtr = std::unique_ptr<ISerializer, void(*)(ISerializer* serializer)>; 16 17 class ISerializer 18 { 19 public: 20 static ISerializer* CreateRaw(); 21 static ISerializerPtr Create(); 22 static void Destroy(ISerializer* serializer); 23 24 /// Serializes the network to ArmNN SerializedGraph. 25 /// @param [in] inNetwork The network to be serialized. 26 void Serialize(const armnn::INetwork& inNetwork); 27 28 /// Serializes the SerializedGraph to the stream. 29 /// @param [stream] the stream to save to 30 /// @return true if graph is Serialized to the Stream, false otherwise 31 bool SaveSerializedToStream(std::ostream& stream); 32 33 private: 34 ISerializer(); 35 ~ISerializer(); 36 37 class SerializerImpl; 38 std::unique_ptr<SerializerImpl> pSerializerImpl; 39 }; 40 41 } //namespace armnnSerializer 42