本文整理汇总了C++中LVStreamRef::Read方法的典型用法代码示例。如果您正苦于以下问题:C++ LVStreamRef::Read方法的具体用法?C++ LVStreamRef::Read怎么用?C++ LVStreamRef::Read使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LVStreamRef
的用法示例。
在下文中一共展示了LVStreamRef::Read方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DetectEpubFormat
bool DetectEpubFormat( LVStreamRef stream )
{
LVContainerRef m_arc = LVOpenArchieve( stream );
if ( m_arc.isNull() )
return false; // not a ZIP archive
//dumpZip( m_arc );
// read "mimetype" file contents from root of archive
lString16 mimeType;
{
LVStreamRef mtStream = m_arc->OpenStream(L"mimetype", LVOM_READ );
if ( !mtStream.isNull() ) {
int size = mtStream->GetSize();
if ( size>4 && size<100 ) {
LVArray<char> buf( size+1, '\0' );
if ( mtStream->Read( buf.get(), size, NULL )==LVERR_OK ) {
for ( int i=0; i<size; i++ )
if ( buf[i]<32 || ((unsigned char)buf[i])>127 )
buf[i] = 0;
buf[size] = 0;
if ( buf[0] )
mimeType = Utf8ToUnicode( lString8( buf.get() ) );
}
}
}
}
if ( mimeType != L"application/epub+zip" )
return false;
return true;
}
示例2: read
bool read( LVStreamRef stream ) {
// TODO: byte order support
lvsize_t bytesRead = 0;
if ( stream->Read(this, sizeof(PDBHdr), &bytesRead )!=LVERR_OK )
return false;
if ( bytesRead!=sizeof(PDBHdr) )
return false;
lvByteOrderConv cnv;
if ( cnv.lsf() )
{
cnv.rev(&attributes);
cnv.rev(&version);
cnv.rev(&creationDate);
cnv.rev(&modificationDate);
cnv.rev(&lastBackupDate);
cnv.rev(&modificationNumber);
cnv.rev(&appInfoID);
cnv.rev(&sortInfoID);
cnv.rev(&uniqueIDSeed);
cnv.rev(&nextRecordList);
cnv.rev(&recordCount);
cnv.rev(&firstEntry);
}
return true;
}
示例3: readFileToString
lString8 readFileToString( const char * fname )
{
lString8 buf;
LVStreamRef stream = LVOpenFileStream(fname, LVOM_READ);
if (!stream)
return buf;
int sz = stream->GetSize();
if (sz>0)
{
buf.insert( 0, sz, ' ' );
stream->Read( buf.modify(), sz, NULL );
}
return buf;
}
示例4: streamToJByteArray
jbyteArray CRJNIEnv::streamToJByteArray( LVStreamRef stream )
{
if ( stream.isNull() )
return NULL;
unsigned sz = stream->GetSize();
if ( sz<10 || sz>2000000 )
return NULL;
jbyteArray array = env->NewByteArray(sz);
lUInt8 * array_data = (lUInt8 *)env->GetByteArrayElements(array, 0);
lvsize_t bytesRead = 0;
stream->Read(array_data, sz, &bytesRead);
env->ReleaseByteArrayElements(array, (jbyte*)array_data, 0);
if (bytesRead != sz)
return NULL;
return array;
}
示例5: LVOpenFileStream
void V3DocViewWin::showHelpDialog()
{
LVStreamRef stream = LVOpenFileStream( _helpFile.c_str(), LVOM_READ );
lString8 help;
if ( stream.isNull() ) {
// show warning
lString8 body;
body << "<title><p>" << _("No manual currently available for this language, sorry!") << "</p></title>";
help = CRViewDialog::makeFb2Xml( body );
} else {
int len = stream->GetSize();
if ( len>100 && len <1000000 ) {
help.append( len, ' ' );
stream->Read( help.modify(), len, NULL );
}
}
//lString8 help = UnicodeToUtf8( LVReadTextFile( _helpFile ) );
if ( !help.empty() ) {
CRViewDialog * dlg = new CRViewDialog( _wm, lString16(_("Help")), help, lvRect(), true, true );
_wm->activateWindow( dlg );
}
}
示例6: load
bool TexHyph::load( LVStreamRef stream )
{
int w = isCorrectHyphFile(stream.get());
int patternCount = 0;
if (w) {
_hash = stream->crc32();
int i;
lvsize_t dw;
lvByteOrderConv cnv;
int hyph_count = w;
thyph hyph;
lvpos_t p = 78 + (hyph_count * 8 + 2);
stream->SetPos(p);
if ( stream->SetPos(p)!=p )
return false;
lChar16 charMap[256];
unsigned char buf[0x10000];
memset( charMap, 0, sizeof( charMap ) );
// make char map table
for (i=0; i<hyph_count; i++)
{
if ( stream->Read( &hyph, 522, &dw )!=LVERR_OK || dw!=522 )
return false;
cnv.msf( &hyph.len ); //rword(_main_hyph[i].len);
lvpos_t newPos;
if ( stream->Seek( hyph.len, LVSEEK_CUR, &newPos )!=LVERR_OK )
return false;
cnv.msf( hyph.wl );
cnv.msf( hyph.wu );
charMap[ (unsigned char)hyph.al ] = hyph.wl;
charMap[ (unsigned char)hyph.au ] = hyph.wu;
// lChar16 ch = hyph.wl;
// CRLog::debug("wl=%s mask=%c%c", LCSTR(lString16(&ch, 1)), hyph.mask0[0], hyph.mask0[1]);
if (hyph.mask0[0]!='0'||hyph.mask0[1]!='0') {
unsigned char pat[4];
pat[0] = hyph.al;
pat[1] = hyph.mask0[0];
pat[2] = hyph.mask0[1];
pat[3] = 0;
TexPattern * pattern = new TexPattern(pat, 1, charMap);
#if DUMP_PATTERNS==1
CRLog::debug("Pattern: '%s' - %s", LCSTR(lString16(pattern->word)), pattern->attr );
#endif
addPattern( pattern );
patternCount++;
}
}
if ( stream->SetPos(p)!=p )
return false;
for (i=0; i<hyph_count; i++)
{
stream->Read( &hyph, 522, &dw );
if (dw!=522)
return false;
cnv.msf( &hyph.len );
stream->Read(buf, hyph.len, &dw);
if (dw!=hyph.len)
return false;
unsigned char * p = buf;
unsigned char * end_p = p + hyph.len;
while ( p < end_p ) {
lUInt8 sz = *p++;
if ( p + sz > end_p )
break;
TexPattern * pattern = new TexPattern( p, sz, charMap );
#if DUMP_PATTERNS==1
CRLog::debug("Pattern: '%s' - %s", LCSTR(lString16(pattern->word)), pattern->attr);
#endif
addPattern( pattern );
patternCount++;
p += sz + sz + 1;
}
}
return patternCount>0;
} else {
// tex xml format as for FBReader
lString16Collection data;
HyphPatternReader reader( data );
LVXMLParser parser( stream, &reader );
if ( !parser.CheckFormat() )
return false;
if ( !parser.Parse() )
return false;
if ( !data.length() )
return false;
for ( int i=0; i<(int)data.length(); i++ ) {
data[i].lowercase();
TexPattern * pattern = new TexPattern( data[i] );
#if DUMP_PATTERNS==1
CRLog::debug("Pattern: (%s) '%s' - %s", LCSTR(data[i]), LCSTR(lString16(pattern->word)), pattern->attr);
#endif
//.........这里部分代码省略.........
示例7: GetBookProperties
int GetBookProperties(char *name, struct BookProperties* pBookProps, int localLanguage)
{
CRLog::trace("GetBookProperties( %s )", name);
memset(pBookProps, 0, sizeof(BookProperties) );
// open stream
LVStreamRef stream = LVOpenFileStream(name, LVOM_READ);
if (!stream) {
CRLog::error("cannot open file %s", name);
return 0;
}
// check archieve
#ifdef USE_ZLIB
LVContainerRef arc;
//printf("start opening arc\n");
//for ( int i=0; i<1000; i++ )
//for ( int kk=0; kk<1000; kk++)
{
arc = LVOpenArchieve( stream );
//printf("end opening arc\n");
if (!arc.isNull())
{
CRLog::trace("%s is archive with %d items", name, arc->GetObjectCount());
// archieve
const LVContainerItemInfo * bestitem = NULL;
const LVContainerItemInfo * fb2item = NULL;
const LVContainerItemInfo * fbditem = NULL;
for (int i=0; i<arc->GetObjectCount(); i++)
{
const LVContainerItemInfo * item = arc->GetObjectInfo(i);
if (item)
{
if ( !item->IsContainer() )
{
lString16 name( item->GetName() );
if ( name.length() > 5 )
{
name.lowercase();
const lChar16 * pext = name.c_str() + name.length() - 4;
if ( pext[0]=='.' && pext[1]=='f' && pext[2]=='b' && pext[3]=='2') {
fb2item = item;
} else if ( pext[0]=='.' && pext[1]=='f' && pext[2]=='b' && pext[3]=='d') {
fbditem = item;
}
}
}
}
}
bestitem = fb2item;
if ( fbditem )
bestitem = fbditem;
if ( !bestitem )
return 0;
CRLog::trace( "opening item %s from archive", UnicodeToUtf8(bestitem->GetName()).c_str() );
//printf("start opening stream\n");
//for ( int k=0; k<1000; k++ ) {
stream = arc->OpenStream( bestitem->GetName(), LVOM_READ );
char buf[8192];
stream->Read(buf, 8192, NULL );
//}
//printf("end opening stream\n");
if ( stream.isNull() )
return 0;
CRLog::trace( "stream created" );
// opened archieve stream
}
}
#endif //USE_ZLIB
// read document
#if COMPACT_DOM==1
ldomDocument doc(stream, 0);
#else
ldomDocument doc;
#endif
ldomDocumentWriter writer(&doc, true);
doc.setNodeTypes( fb2_elem_table );
doc.setAttributeTypes( fb2_attr_table );
doc.setNameSpaceTypes( fb2_ns_table );
LVXMLParser parser( stream, &writer );
CRLog::trace( "checking format..." );
if ( !parser.CheckFormat() ) {
return 0;
}
CRLog::trace( "parsing..." );
if ( !parser.Parse() ) {
return 0;
}
CRLog::trace( "parsed" );
#if 0
char ofname[512];
sprintf(ofname, "%s.xml", name);
CRLog::trace(" writing to file %s", ofname);
LVStreamRef out = LVOpenFileStream(ofname, LVOM_WRITE);
doc.saveToStream(out, "utf16");
#endif
lString16 authors = extractDocAuthors( &doc );
lString16 title = extractDocTitle( &doc );
lString16 series = extractDocSeriesReverse( &doc );
//.........这里部分代码省略.........