#ifndef _TRANSLATOR_H
#define _TRANSLATOR_H
#include <Archivable.h>
#include <TranslationDefs.h>
#include <TranslatorRoster.h>
class BTranslator : public BArchivable {
public:
BTranslator();
BTranslator* Acquire();
BTranslator* Release();
int32 ReferenceCount();
virtual const char* TranslatorName() const = 0;
virtual const char* TranslatorInfo() const = 0;
virtual int32 TranslatorVersion() const = 0;
virtual const translation_format* InputFormats(int32* _count) const = 0;
virtual const translation_format* OutputFormats(int32* _count) const = 0;
virtual status_t Identify(BPositionIO* source,
const translation_format* format,
BMessage* extension, translator_info* info,
uint32 outType) = 0;
virtual status_t Translate(BPositionIO* source,
const translator_info* info,
BMessage* extension, uint32 outType,
BPositionIO* destination) = 0;
virtual status_t MakeConfigurationView(BMessage* extension,
BView** _view, BRect* _extent);
virtual status_t GetConfigurationMessage(BMessage* extension);
protected:
virtual ~BTranslator();
private:
friend class BTranslatorRoster::Private;
virtual status_t _Reserved_Translator_0(int32, void*);
virtual status_t _Reserved_Translator_1(int32, void*);
virtual status_t _Reserved_Translator_2(int32, void*);
virtual status_t _Reserved_Translator_3(int32, void*);
virtual status_t _Reserved_Translator_4(int32, void*);
virtual status_t _Reserved_Translator_5(int32, void*);
virtual status_t _Reserved_Translator_6(int32, void*);
virtual status_t _Reserved_Translator_7(int32, void*);
BTranslatorRoster::Private* fOwningRoster;
translator_id fID;
int32 fRefCount;
uint32 _reserved[7];
};
extern "C" BTranslator* make_nth_translator(int32 n, image_id you,
uint32 flags, ...);
#endif