12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #ifndef _SVC_STRINGCONVERTER_H
- #define _SVC_STRINGCONVERTER_H
- #include <bfc/dispatch.h>
- #include <api/service/services.h>
- #include <api/service/svcs/svc_stringtypes.h>
- class NOVTABLE svc_stringConverter : public Dispatchable {
- public:
- static FOURCC getServiceType() { return WaSvc::STRINGCONVERTER; }
-
- int canConvert(FOURCC encoding_type);
-
-
- int convertToUTF8(FOURCC encoding_type, const void *in_buffer, int size_in_bytes, char *out_buffer, int size_out_bytes);
- int preflightToUTF8(FOURCC encoding_type, const void *in_buffer, int size_in_bytes);
- int convertFromUTF8(FOURCC encoding_type, const char *in_buffer, int size_in_bytes, void *out_buffer, int size_out_bytes);
- int preflightFromUTF8(FOURCC encoding_type, const char *in_buffer, int size_in_bytes);
- protected:
- enum {
- CANCONVERT,
- CONVERTTOUTF8,
- PREFLIGHTTOUTF8,
- CONVERTFROMUTF8,
- PREFLIGHTFROMUTF8
- };
- };
- inline
- int svc_stringConverter::canConvert(FOURCC encoding_type) {
- return _call(CANCONVERT, (int)0, encoding_type);
- }
- inline
- int svc_stringConverter::convertToUTF8(FOURCC encoding_type, const void *in_buffer, int size_in_bytes, char *out_buffer, int size_out_bytes) {
- return _call(CONVERTTOUTF8, (int)0, encoding_type, in_buffer, size_in_bytes, out_buffer, size_out_bytes);
- }
- inline
- int svc_stringConverter::preflightToUTF8(FOURCC encoding_type, const void *in_buffer, int size_in_bytes) {
- return _call(PREFLIGHTTOUTF8, (int)0, encoding_type, in_buffer, size_in_bytes);
- }
- inline
- int svc_stringConverter::convertFromUTF8(FOURCC encoding_type, const char *in_buffer, int size_in_bytes, void *out_buffer, int size_out_bytes) {
- return _call(CONVERTFROMUTF8, (int)0, encoding_type, in_buffer, size_in_bytes, out_buffer, size_out_bytes);
- }
- inline
- int svc_stringConverter::preflightFromUTF8(FOURCC encoding_type, const char *in_buffer, int size_in_bytes) {
- return _call(PREFLIGHTFROMUTF8, (int)0, encoding_type, in_buffer, size_in_bytes);
- }
- class NOVTABLE svc_stringConverterI : public svc_stringConverter {
- public:
-
- virtual int canConvert(FOURCC encoding_type) = 0;
- virtual int convertToUTF8(FOURCC encoding_type, const void *in_buffer, int size_in_bytes, char *out_buffer, int size_out_bytes) = 0;
- virtual int preflightToUTF8(FOURCC encoding_type, const void *in_buffer, int size_in_bytes) = 0;
- virtual int convertFromUTF8(FOURCC encoding_type, const char *in_buffer, int size_in_bytes, void *out_buffer, int size_out_bytes) = 0;
- virtual int preflightFromUTF8(FOURCC encoding_type, const char *in_buffer, int size_in_bytes) = 0;
- protected:
- RECVS_DISPATCH;
- };
- #include <api/service/svc_enum.h>
- class StringConverterEnum : public SvcEnumT<svc_stringConverter> {
- public:
- StringConverterEnum(FOURCC enc_type) : encoding_type(enc_type) {}
- protected:
- virtual int testService(svc_stringConverter *svc) {
- return (svc->canConvert(encoding_type));
- }
- private:
- FOURCC encoding_type;
- };
- #endif
|