⛏️ index : haiku.git

/*
 * Copyright 2009, Haiku, Inc. All rights reserved.
 * Distributed under the terms of the MIT License.
 */
#ifndef _FILE_INTERFACE_H
#define _FILE_INTERFACE_H


#include <MediaNode.h>


struct entry_ref;


class BFileInterface : public virtual BMediaNode {
protected:
	virtual						~BFileInterface();

protected:
								BFileInterface();

	virtual	status_t			HandleMessage(int32 message, const void* data,
									size_t size);

	virtual	status_t			GetNextFileFormat(int32* cookie,
									media_file_format* _format) = 0;
	virtual	void				DisposeFileFormatCookie(int32 cookie) = 0;

	virtual	status_t			GetDuration(bigtime_t* _time) = 0;
	virtual	status_t			SniffRef(const entry_ref& file,
									char* _mimeType, // 256 bytes
									float* _quality) = 0;
	virtual	status_t			SetRef(const entry_ref& file,
									bool create, bigtime_t* _time) = 0;
	virtual	status_t			GetRef(entry_ref* _ref, char* _mimeType) = 0;

	// TODO: Needs a Perform() virtual method!

private:
	// FBC padding and forbidden methods
	friend class BMediaNode;

								BFileInterface(const BFileInterface& other);
			BFileInterface&		operator=(const BFileInterface& other);

	virtual	status_t			_Reserved_FileInterface_0(void*);
	virtual	status_t			_Reserved_FileInterface_1(void*);
	virtual	status_t			_Reserved_FileInterface_2(void*);
	virtual	status_t			_Reserved_FileInterface_3(void*);
	virtual	status_t			_Reserved_FileInterface_4(void*);
	virtual	status_t			_Reserved_FileInterface_5(void*);
	virtual	status_t			_Reserved_FileInterface_6(void*);
	virtual	status_t			_Reserved_FileInterface_7(void*);
	virtual	status_t			_Reserved_FileInterface_8(void*);
	virtual	status_t			_Reserved_FileInterface_9(void*);
	virtual	status_t			_Reserved_FileInterface_10(void*);
	virtual	status_t			_Reserved_FileInterface_11(void*);
	virtual	status_t			_Reserved_FileInterface_12(void*);
	virtual	status_t			_Reserved_FileInterface_13(void*);
	virtual	status_t			_Reserved_FileInterface_14(void*);
	virtual	status_t			_Reserved_FileInterface_15(void*);

			uint32				_reserved_file_interface_[16];
};

#endif // _FILE_INTERFACE_H