MCPcopy Create free account
hub / github.com/ml-explore/mlx / deserialize

Function deserialize

mlx/export.cpp:146–181  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

144
145template <typename T>
146T deserialize(Reader& is) {
147 if constexpr (std::is_arithmetic_v<T>) {
148 T v;
149 is.read(reinterpret_cast<char*>(&v), sizeof(T));
150 if (is_big_endian()) {
151 reverse_bytes(v);
152 }
153 return v;
154 } else if constexpr (std::is_enum_v<T>) {
155 return static_cast<T>(deserialize<int>(is));
156 } else if constexpr (std::is_same_v<T, std::nullptr_t>) {
157 return nullptr;
158 } else if constexpr (is_iterable<T>) {
159 T v;
160 auto size = deserialize<uint64_t>(is);
161 v.reserve(size);
162 for (int i = 0; i < size; ++i) {
163 v.push_back(deserialize<typename T::value_type>(is));
164 }
165 return v;
166 } else if constexpr (is_pair<T> || is_tuple<T>) {
167 return deserialize_tuple<T>(
168 is, std::make_index_sequence<std::tuple_size_v<std::decay_t<T>>>{});
169 } else if constexpr (is_optional<T>) {
170 auto has_value = deserialize<bool>(is);
171 if (has_value) {
172 return T{deserialize<typename T::value_type>(is)};
173 } else {
174 return std::nullopt;
175 }
176 } else if constexpr (is_variant<T>) {
177 return deserialize_variant<T>(is);
178 } else {
179 NotDeserializable<T>();
180 }
181}
182
183enum class VariantType { Int = 0, Float = 1, Bool = 2 };
184

Callers

nothing calls this directly

Calls 9

reverse_bytesFunction · 0.85
StreamFunction · 0.85
reserveMethod · 0.80
push_backMethod · 0.80
is_big_endianFunction · 0.70
DeviceFunction · 0.70
DtypeClass · 0.70
arrayFunction · 0.70
readMethod · 0.45

Tested by

no test coverage detected