///////////////////////////////////////////////////////////////////////
// File: tesscallback.h
// Description: classes and functions to replace pointer-to-functions
// Author: Samuel Charron
//
// (C) Copyright 2006, Google Inc.
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
///////////////////////////////////////////////////////////////////////
#ifndef TESS_CALLBACK_SPECIALIZATIONS_H_
#define TESS_CALLBACK_SPECIALIZATIONS_H_
#include "host.h" // For NULL.
struct TessCallbackUtils_ {
static void FailIsRepeatable(const char* name);
};
class TessClosure {
public:
virtual ~TessClosure() { }
virtual void Run() = 0;
};
template <class R>
class TessResultCallback {
public:
virtual ~TessResultCallback() { }
virtual R Run() = 0;
};
template <bool del, class R, class T>
class _ConstTessMemberResultCallback_0_0 : public TessResultCallback<R> {
public:
typedef TessResultCallback<R> base;
typedef R (T::*MemberSignature)() const;
private:
const T* object_;
MemberSignature member_;
public:
inline _ConstTessMemberResultCallback_0_0(
const T* object, MemberSignature member)
: object_(object),
member_(member) {
}
virtual R Run() {
if (!del) {
R result = (object_->*member_)();
return result;
} else {
R result = (object_->*member_)();
// zero out the pointer to ensure segfault if used again
member_ = NULL;
delete this;
return result;
}
}
};
template <bool del, class T>
class _ConstTessMemberResultCallback_0_0<del, void, T>
: public TessClosure {
public:
typedef TessClosure base;
typedef void (T::*MemberSignature)() const;
private:
const T* object_;
MemberSignature member_;
public:
inline _ConstTessMemberResultCallback_0_0(
const T* object, MemberSignature member)
: object_(object),
member_(member) {
}
virtual void Run() {
if (!del) {
(object_->*member_)();
} else {
(object_->*member_)();
// zero out the pointer to ensure segfault if used again
member_ = NULL;
delete this;
}
}
};
#ifndef SWIG
template <class T1, class T2, class R>
inline typename _ConstTessMemberResultCallback_0_0<true,R,T1>::base*
NewTessCallback(
const T1* obj, R (T2::*member)() const) {
return new _ConstTessMemberResultCallback_0_0<true,R,T1>(
obj, member);
}
#endif
#ifndef SWIG
template <class T1, class T2, class R>
inline typename _ConstTessMemberResultCallback_0_0<false,R,T1>::base*
NewPermanentTessCallback(
const T1* obj, R (T2::*member)() const) {
return new _ConstTessMemberResultCallback_0_0<false,R,T1>(
obj, member);
}
#endif
template <bool del, class R, class T>
class _TessMemberResultCallback_0_0 : public TessResultCallback<R> {
public:
typedef TessResultCallback<R> base;
typedef R (T::*MemberSignature)() ;
private:
T* object_;
MemberSignature member_;
public:
inline _TessMemberResultCallback_0_0(
T* object, MemberSignature member)
: object_(object),
member_(member) {
}
virtual R Run() {
if (!del) {
R result = (object_->*member_)();
return result;
} else {
R result = (object_->*member_)();
// zero out the pointer to ensure segfault if used again
member_ = NULL;
delete this;
return result;
}
}
};
template <bool del, class T>
class _TessMemberResultCallback_0_0<del, void, T>
: public TessClosure {
public:
typedef TessClosure base;
typedef void (T::*MemberSignature)() ;
private:
T* object_;
MemberSignature member_;
public:
inline _TessMemberResultCallback_0_0(
T* object, MemberSignature member)
: object_(object),
member_(member) {
}
virtual void Run() {
if (!del) {
(object_->*member_)();
} else {
(object_->*member_)();
// zero out the pointer to ensure segfault if used again
member_ = NULL;
delete this;
}
}
};
#ifndef SWIG
template <class T1, class T2, class R>
inline typename _TessMemberResultCallback_0_0<true,R,T1>::base*
NewTessCallback(
T1* obj, R (T2::*member)() ) {
return new _TessMemberResultCallback_0_0<true,R,T1>(
obj, member);
}
#endif
#ifndef SWIG
template <class T1, class T2, class R>
inline typename _TessMemberResultCallback_0_0<false,R,T1>::base*
NewPermanentTessCallback(
T1* obj, R (T2::*member)() ) {
return new _TessMemberResultCallback_0_0<false,R,T1>(
obj, member);
}
#endif
template <bool del, class R>
class _TessFunctionResultCallback_0_0 : public TessResultCallback<R> {
public:
typedef TessResultCallback<R> base;
typedef R (*FunctionSignature)();
private:
FunctionSignature function_;
public:
inline _TessFunctionResultCallback_0_0(
FunctionSignature function)
: function_(function) {
}
virtual R Run() {
if (!del) {
R result = (*function_)();
return result;
} else {
R result = (*function_)();
// zero out the pointer to ensure segfault if used again
function_ = NULL;
delete this;
return result;
}
}
};
template <bool del>
class _TessFunctionResultCallback_0_0<del, void>
: public TessClosure {
public:
typedef TessClosure base;
typedef void (*FunctionSignature)();
private:
FunctionSignature function_;
public:
inline _TessFunctionResultCallback_0_0(
FunctionSignature function)
: function_(function) {
}
virtual void Run() {
if (!del) {
(*function_)();
} else {
(*function_)();
// zero out the pointer to ensure segfault if used again
function_ = NULL;
delete this;
}
}
};
template <class R>
inline typename _TessFunctionResultCallback_0_0<true,R>::base*
NewTessCallback(R (*function)()) {
return new _TessFunctionResultCallback_0_0<true,R>(function);
}
template <class R>
inline typename _TessFunctionResultCallback_0_0<false,R>::base*
NewPermanentTessCallback(R (*function)()) {
return new _TessFunctionResultCallback_0_0<false,R>(function);
}
// Specified by TR1 [4.7.2] Reference modifications.
template <class T> struct remove_reference;
template<typename T> struct remove_reference { typedef T type; };
template<typename T> struct remove_reference<T&> { typedef T type; };
// Identity<T>::type is a typedef of T. Useful for preventing the
// compiler from inferring the type of an argument in templates.
template <typename T>
struct Identity {
typedef T type;
};
template <bool del, class R, class T, class P1>
class _ConstTessMemberResultCallback_1_0 : public TessResultCallback<R> {
public:
typedef TessResultCallback<R> base;
typedef R (T::*MemberSignature)(P1) const;
private:
const T* object_;
MemberSignature member_;
typename remove_reference<P1>::type p1_;
public:
inline _ConstTessMemberResultCallback_1_0(const T* object, MemberSignature member, P1 p1)
: object_(object),
member_(member), p1_(p1) { }
virtual R Run() {
if (!del) {
R result = (object_->*member_)(p1_);
return result;
} else {
R result = (object_->*member_)(p1_);
// zero out the pointer to ensure segfault if used again
member_ = NULL;
delete this;
return result;
}
}
};
template <bool del, class T, class P1>
class _ConstTessMemberResultCallback_1_0<del, void, T, P1> : public TessClosure {
public:
typedef TessClosure base;
typedef void (T::*MemberSignature)(P1) const;
private:
const T* object_;
MemberSignature member_;
typename remov
没有合适的资源?快使用搜索试试~ 我知道了~
tesseract4.0+vs2015+win764位编译后的库
共138个文件
h:56个
lib:45个
dll:36个
5星 · 超过95%的资源 需积分: 12 225 下载量 193 浏览量
2017-10-30
14:38:29
上传
评论 4
收藏 12.15MB RAR 举报
温馨提示
该资源是基于tesseract4.0+vs2015+win764位编译后的库,时候调用
资源推荐
资源详情
资源评论
收起资源包目录
tesseract4.0+vs2015+win764位编译后的库 (138个子文件)
libtesseract-4.dll 8.61MB
tesseract400d.dll 6.91MB
pvt.cppan.demo.danbloomberg.leptonica-1.74.1.dll 4.66MB
pvt.cppan.demo.danbloomberg.leptonica-1.74.1.dll 3.42MB
libtesseract-4.dll 3.03MB
pvt.cppan.demo.google.tesseract.libtesseract-master.dll 2.49MB
pvt.cppan.demo.danbloomberg.leptonica-1.74.1.dll 2.41MB
pvt.cppan.demo.danbloomberg.leptonica-1.74.1.dll 1.84MB
pvt.cppan.demo.webp-0.6.0.dll 1.2MB
pvt.cppan.demo.webp-0.6.0.dll 916KB
pvt.cppan.demo.tiff-4.0.7.dll 885KB
pvt.cppan.demo.tiff-4.0.7.dll 689KB
pvt.cppan.demo.openjpeg.openjp2-2.1.2.dll 591KB
pvt.cppan.demo.jpeg-9.2.0.dll 538KB
pvt.cppan.demo.webp-0.6.0.dll 511KB
pvt.cppan.demo.openjpeg.openjp2-2.1.2.dll 469KB
pvt.cppan.demo.xz_utils.lzma-5.2.2.dll 446KB
pvt.cppan.demo.webp-0.6.0.dll 419KB
pvt.cppan.demo.png-1.6.28.dll 412KB
pvt.cppan.demo.jpeg-9.2.0.dll 401KB
pvt.cppan.demo.tiff-4.0.7.dll 374KB
pvt.cppan.demo.xz_utils.lzma-5.2.2.dll 335KB
pvt.cppan.demo.tiff-4.0.7.dll 326KB
pvt.cppan.demo.png-1.6.28.dll 301KB
pvt.cppan.demo.jpeg-9.2.0.dll 247KB
pvt.cppan.demo.jpeg-9.2.0.dll 239KB
pvt.cppan.demo.madler.zlib-1.2.11.dll 204KB
pvt.cppan.demo.openjpeg.openjp2-2.1.2.dll 194KB
pvt.cppan.demo.png-1.6.28.dll 187KB
pvt.cppan.demo.openjpeg.openjp2-2.1.2.dll 157KB
pvt.cppan.demo.png-1.6.28.dll 155KB
pvt.cppan.demo.zlib-1.2.11.dll 152KB
pvt.cppan.demo.xz_utils.lzma-5.2.2.dll 148KB
pvt.cppan.demo.xz_utils.lzma-5.2.2.dll 128KB
pvt.cppan.demo.madler.zlib-1.2.11.dll 85KB
pvt.cppan.demo.zlib-1.2.11.dll 73KB
pvt.cppan.demo.google.tesseract.tesseract-master.exe 29KB
tesscallback.h 351KB
allheaders.h 252KB
pix.h 58KB
bmfdata.h 46KB
unicharset.h 40KB
genericvector.h 36KB
baseapi.h 35KB
capi.h 22KB
environ.h 21KB
recog.h 15KB
pageiterator.h 15KB
publictypes.h 12KB
readbarcode.h 11KB
params.h 11KB
dewarp.h 11KB
arrayaccess.h 11KB
imageio.h 11KB
morph.h 9KB
ltrresultiterator.h 9KB
resultiterator.h 9KB
thresholder.h 8KB
jbclass.h 7KB
bilateral.h 6KB
strngs.h 6KB
helpers.h 6KB
regutils.h 6KB
unichar.h 6KB
host.h 6KB
array.h 6KB
ccbord.h 5KB
bmp.h 4KB
heap.h 4KB
gplot.h 4KB
serialis.h 4KB
errcode.h 4KB
rbtree.h 4KB
ptra.h 4KB
list.h 3KB
watershed.h 3KB
queue.h 3KB
sudoku.h 3KB
bmf.h 3KB
stack.h 3KB
unicharmap.h 3KB
stringcode.h 3KB
bbuffer.h 3KB
alltypes.h 2KB
platform.h 2KB
leptwin.h 2KB
memry.h 2KB
fileerr.h 1KB
apitypes.h 1KB
basedir.h 1KB
ndminx.h 1KB
endianness.h 237B
config_auto.h 0B
libtesseract-4.lib 8.73MB
tesseract400d.lib 8.57MB
pvt.cppan.demo.google.tesseract.libtesseract-master.lib 2.99MB
libtesseract-4.lib 2.78MB
pvt.cppan.demo.danbloomberg.leptonica-1.74.1.lib 658KB
pvt.cppan.demo.danbloomberg.leptonica-1.74.1.lib 658KB
pvt.cppan.demo.danbloomberg.leptonica-1.74.1.lib 645KB
共 138 条
- 1
- 2
蓉城视觉小菜鸟
- 粉丝: 397
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页