#include "libcef_dll/cpptoc/zip_reader_cpptoc.h"
#include "libcef_dll/cpptoc/stream_reader_cpptoc.h"
#include "libcef_dll/shutdown_checker.h"
CEF_EXPORT cef_zip_reader_t* cef_zip_reader_create(
cef_stream_reader_t* stream) {
shutdown_checker::AssertNotShutdown();
DCHECK(stream);
if (!stream)
return NULL;
CefRefPtr<CefZipReader> _retval =
CefZipReader::Create(CefStreamReaderCppToC::Unwrap(stream));
return CefZipReaderCppToC::Wrap(_retval);
}
namespace {
int CEF_CALLBACK zip_reader_move_to_first_file(struct _cef_zip_reader_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return 0;
bool _retval = CefZipReaderCppToC::Get(self)->MoveToFirstFile();
return _retval;
}
int CEF_CALLBACK zip_reader_move_to_next_file(struct _cef_zip_reader_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return 0;
bool _retval = CefZipReaderCppToC::Get(self)->MoveToNextFile();
return _retval;
}
int CEF_CALLBACK zip_reader_move_to_file(struct _cef_zip_reader_t* self,
const cef_string_t* fileName,
int caseSensitive) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return 0;
DCHECK(fileName);
if (!fileName)
return 0;
bool _retval = CefZipReaderCppToC::Get(self)->MoveToFile(
CefString(fileName), caseSensitive ? true : false);
return _retval;
}
int CEF_CALLBACK zip_reader_close(struct _cef_zip_reader_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return 0;
bool _retval = CefZipReaderCppToC::Get(self)->Close();
return _retval;
}
cef_string_userfree_t CEF_CALLBACK
zip_reader_get_file_name(struct _cef_zip_reader_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return NULL;
CefString _retval = CefZipReaderCppToC::Get(self)->GetFileName();
return _retval.DetachToUserFree();
}
int64 CEF_CALLBACK zip_reader_get_file_size(struct _cef_zip_reader_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return 0;
int64 _retval = CefZipReaderCppToC::Get(self)->GetFileSize();
return _retval;
}
cef_time_t CEF_CALLBACK
zip_reader_get_file_last_modified(struct _cef_zip_reader_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return CefTime();
cef_time_t _retval = CefZipReaderCppToC::Get(self)->GetFileLastModified();
return _retval;
}
int CEF_CALLBACK zip_reader_open_file(struct _cef_zip_reader_t* self,
const cef_string_t* password) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return 0;
bool _retval = CefZipReaderCppToC::Get(self)->OpenFile(CefString(password));
return _retval;
}
int CEF_CALLBACK zip_reader_close_file(struct _cef_zip_reader_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return 0;
bool _retval = CefZipReaderCppToC::Get(self)->CloseFile();
return _retval;
}
int CEF_CALLBACK zip_reader_read_file(struct _cef_zip_reader_t* self,
void* buffer,
size_t bufferSize) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return 0;
DCHECK(buffer);
if (!buffer)
return 0;
int _retval = CefZipReaderCppToC::Get(self)->ReadFile(buffer, bufferSize);
return _retval;
}
int64 CEF_CALLBACK zip_reader_tell(struct _cef_zip_reader_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return 0;
int64 _retval = CefZipReaderCppToC::Get(self)->Tell();
return _retval;
}
int CEF_CALLBACK zip_reader_eof(struct _cef_zip_reader_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return 0;
bool _retval = CefZipReaderCppToC::Get(self)->Eof();
return _retval;
}
}
CefZipReaderCppToC::CefZipReaderCppToC() {
GetStruct()->move_to_first_file = zip_reader_move_to_first_file;
GetStruct()->move_to_next_file = zip_reader_move_to_next_file;
GetStruct()->move_to_file = zip_reader_move_to_file;
GetStruct()->close = zip_reader_close;
GetStruct()->get_file_name = zip_reader_get_file_name;
GetStruct()->get_file_size = zip_reader_get_file_size;
GetStruct()->get_file_last_modified = zip_reader_get_file_last_modified;
GetStruct()->open_file = zip_reader_open_file;
GetStruct()->close_file = zip_reader_close_file;
GetStruct()->read_file = zip_reader_read_file;
GetStruct()->tell = zip_reader_tell;
GetStruct()->eof = zip_reader_eof;
}
CefZipReaderCppToC::~CefZipReaderCppToC() {
shutdown_checker::AssertNotShutdown();
}
template <>
CefRefPtr<CefZipReader>
CefCppToCRefCounted<CefZipReaderCppToC, CefZipReader, cef_zip_reader_t>::
UnwrapDerived(CefWrapperType type, cef_zip_reader_t* s) {
NOTREACHED() << "Unexpected class type: " << type;
return nullptr;
}
template <>
CefWrapperType CefCppToCRefCounted<CefZipReaderCppToC,
CefZipReader,
cef_zip_reader_t>::kWrapperType =
WT_ZIP_READER;