xref: /aosp_15_r20/external/armnn/include/armnnSerializer/ISerializer.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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