+static inline void
+blob_set_is_located_in_attached_buffer(struct blob_descriptor *blob,
+ void *buffer, size_t size)
+{
+ blob->blob_location = BLOB_IN_ATTACHED_BUFFER;
+ blob->attached_buffer = buffer;
+ blob->size = size;
+}
+
+static inline bool
+blob_is_in_file(const struct blob_descriptor *blob)
+{
+ return blob->blob_location == BLOB_IN_FILE_ON_DISK
+#ifdef __WIN32__
+ || blob->blob_location == BLOB_IN_WINDOWS_FILE
+#endif
+ ;
+}
+
+#ifdef __WIN32__
+extern const wchar_t *
+get_windows_file_path(const struct windows_file *file);
+#endif
+
+static inline const tchar *
+blob_file_path(const struct blob_descriptor *blob)
+{
+#ifdef __WIN32__
+ if (blob->blob_location == BLOB_IN_WINDOWS_FILE)
+ return get_windows_file_path(blob->windows_file);
+#endif
+ return blob->file_on_disk;
+}
+