├── client
├── imagedemo
│ └── curlclient
│ │ ├── build
│ │ ├── CMakeFiles
│ │ │ ├── progress.marks
│ │ │ ├── client.dir
│ │ │ │ ├── progress.make
│ │ │ │ ├── main.cpp.o
│ │ │ │ ├── link.txt
│ │ │ │ ├── flags.make
│ │ │ │ ├── cmake_clean.cmake
│ │ │ │ ├── DependInfo.cmake
│ │ │ │ ├── depend.internal
│ │ │ │ ├── depend.make
│ │ │ │ └── build.make
│ │ │ ├── TargetDirectories.txt
│ │ │ ├── cmake.check_cache
│ │ │ ├── 2.8.12.2
│ │ │ │ ├── CompilerIdC
│ │ │ │ │ └── a.out
│ │ │ │ ├── CompilerIdCXX
│ │ │ │ │ └── a.out
│ │ │ │ ├── CMakeDetermineCompilerABI_C.bin
│ │ │ │ ├── CMakeDetermineCompilerABI_CXX.bin
│ │ │ │ ├── CMakeSystem.cmake
│ │ │ │ ├── CMakeCCompiler.cmake
│ │ │ │ └── CMakeCXXCompiler.cmake
│ │ │ ├── CMakeDirectoryInformation.cmake
│ │ │ ├── Makefile.cmake
│ │ │ └── Makefile2
│ │ ├── cmake_install.cmake
│ │ └── Makefile
│ │ ├── 2.jpg
│ │ ├── 123.jpg
│ │ ├── bin
│ │ └── client
│ │ ├── .hello.cpp.swp
│ │ ├── README
│ │ ├── CMakeLists.txt
│ │ ├── build.sh
│ │ ├── inc
│ │ ├── internal
│ │ │ ├── swap.h
│ │ │ ├── strfunc.h
│ │ │ ├── ieee754.h
│ │ │ └── pow10.h
│ │ ├── ostreamwrapper.h
│ │ ├── memorybuffer.h
│ │ ├── memorystream.h
│ │ ├── filereadstream.h
│ │ ├── filewritestream.h
│ │ ├── error
│ │ │ └── en.h
│ │ ├── istreamwrapper.h
│ │ ├── stringbuffer.h
│ │ ├── fwd.h
│ │ └── stream.h
│ │ ├── rapidjson
│ │ ├── internal
│ │ │ ├── swap.h
│ │ │ ├── strfunc.h
│ │ │ ├── ieee754.h
│ │ │ └── pow10.h
│ │ ├── ostreamwrapper.h
│ │ ├── memorybuffer.h
│ │ ├── memorystream.h
│ │ ├── filereadstream.h
│ │ ├── filewritestream.h
│ │ ├── error
│ │ │ └── en.h
│ │ ├── istreamwrapper.h
│ │ ├── stringbuffer.h
│ │ └── fwd.h
│ │ └── main.cpp
└── ObjectDetector
│ ├── resource
│ └── detector.ico
│ ├── resource.qrc
│ ├── main.cpp
│ ├── imagedealthread.cpp
│ ├── imagedealthread.h
│ ├── imagedeal.h
│ ├── streamdealthread.h
│ ├── streamdealthread.cpp
│ ├── Include.h
│ ├── rapidjson
│ ├── internal
│ │ ├── swap.h
│ │ ├── strfunc.h
│ │ ├── ieee754.h
│ │ └── pow10.h
│ ├── ostreamwrapper.h
│ ├── memorybuffer.h
│ ├── memorystream.h
│ ├── filereadstream.h
│ ├── filewritestream.h
│ ├── error
│ │ └── en.h
│ ├── istreamwrapper.h
│ ├── stringbuffer.h
│ ├── fwd.h
│ └── stream.h
│ ├── StreamDeal.h
│ ├── mainwindow.h
│ ├── ObjectDetector.pro
│ └── imagedeal.cpp
├── server
├── image
│ ├── eventserver.h
│ ├── Makefile
│ └── eventserver.c
└── video
│ └── Makefile
├── README
├── README.md~
├── README~
└── README.md
/client/imagedemo/curlclient/build/CMakeFiles/progress.marks:
--------------------------------------------------------------------------------
1 | 1
2 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/client.dir/progress.make:
--------------------------------------------------------------------------------
1 | CMAKE_PROGRESS_1 = 1
2 |
3 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tla001/OnlineDetector/HEAD/client/imagedemo/curlclient/2.jpg
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/123.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tla001/OnlineDetector/HEAD/client/imagedemo/curlclient/123.jpg
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/bin/client:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tla001/OnlineDetector/HEAD/client/imagedemo/curlclient/bin/client
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/TargetDirectories.txt:
--------------------------------------------------------------------------------
1 | /home/tla001/myworks/cworks/curlclient/build/CMakeFiles/client.dir
2 |
--------------------------------------------------------------------------------
/client/ObjectDetector/resource/detector.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tla001/OnlineDetector/HEAD/client/ObjectDetector/resource/detector.ico
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/.hello.cpp.swp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tla001/OnlineDetector/HEAD/client/imagedemo/curlclient/.hello.cpp.swp
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/cmake.check_cache:
--------------------------------------------------------------------------------
1 | # This file is generated by cmake for dependency checking of the CMakeCache.txt file
2 |
--------------------------------------------------------------------------------
/client/ObjectDetector/resource.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | resource/detector.ico
4 |
5 |
6 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/client.dir/main.cpp.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tla001/OnlineDetector/HEAD/client/imagedemo/curlclient/build/CMakeFiles/client.dir/main.cpp.o
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/2.8.12.2/CompilerIdC/a.out:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tla001/OnlineDetector/HEAD/client/imagedemo/curlclient/build/CMakeFiles/2.8.12.2/CompilerIdC/a.out
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/2.8.12.2/CompilerIdCXX/a.out:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tla001/OnlineDetector/HEAD/client/imagedemo/curlclient/build/CMakeFiles/2.8.12.2/CompilerIdCXX/a.out
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_C.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tla001/OnlineDetector/HEAD/client/imagedemo/curlclient/build/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_C.bin
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/client.dir/link.txt:
--------------------------------------------------------------------------------
1 | g++ -O0 -g -Wall -ggdb CMakeFiles/client.dir/main.cpp.o -o ../bin/client -L/usr/local/libcurl/lib -rdynamic -lcurl -Wl,-rpath,/usr/local/libcurl/lib
2 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_CXX.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tla001/OnlineDetector/HEAD/client/imagedemo/curlclient/build/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_CXX.bin
--------------------------------------------------------------------------------
/client/ObjectDetector/main.cpp:
--------------------------------------------------------------------------------
1 | #include "mainwindow.h"
2 | #include
3 | MainWindow *w;
4 | int main(int argc, char *argv[])
5 | {
6 | QApplication a(argc, argv);
7 |
8 | w=new MainWindow();
9 | w->show();
10 |
11 | return a.exec();
12 | }
13 |
--------------------------------------------------------------------------------
/server/image/eventserver.h:
--------------------------------------------------------------------------------
1 | /*
2 | * evnetserver.h
3 | *
4 | * Created on: Jun 13, 2017
5 | * Author: tla001
6 | */
7 |
8 | #ifndef EVNETSERVER_H_
9 | #define EVNETSERVER_H_
10 | void ServerRun();
11 |
12 |
13 |
14 |
15 |
16 |
17 | #endif /* EVNETSERVER_H_ */
18 |
--------------------------------------------------------------------------------
/client/ObjectDetector/imagedealthread.cpp:
--------------------------------------------------------------------------------
1 | #include "imagedealthread.h"
2 |
3 | ImageDealThread::ImageDealThread(){
4 |
5 | }
6 | void ImageDealThread::init(string url, string fileName, int timeout){
7 | image.init(url,fileName,timeout);
8 | }
9 | void ImageDealThread::run(){
10 | image.doWork();
11 | }
12 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/client.dir/flags.make:
--------------------------------------------------------------------------------
1 | # CMAKE generated file: DO NOT EDIT!
2 | # Generated by "Unix Makefiles" Generator, CMake Version 2.8
3 |
4 | # compile CXX with g++
5 | CXX_FLAGS = -O0 -g -Wall -ggdb -I/home/tla001/myworks/cworks/curlclient/. -I/usr/local/libcurl/include
6 |
7 | CXX_DEFINES =
8 |
9 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/client.dir/cmake_clean.cmake:
--------------------------------------------------------------------------------
1 | FILE(REMOVE_RECURSE
2 | "CMakeFiles/client.dir/main.cpp.o"
3 | "../bin/client.pdb"
4 | "../bin/client"
5 | )
6 |
7 | # Per-language clean rules from dependency scanning.
8 | FOREACH(lang CXX)
9 | INCLUDE(CMakeFiles/client.dir/cmake_clean_${lang}.cmake OPTIONAL)
10 | ENDFOREACH(lang)
11 |
--------------------------------------------------------------------------------
/client/ObjectDetector/imagedealthread.h:
--------------------------------------------------------------------------------
1 | #ifndef IMAGEDEALTHREAD_H
2 | #define IMAGEDEALTHREAD_H
3 | #include
4 | #include "imagedeal.h"
5 |
6 | class ImageDealThread : public QThread
7 | {
8 | Q_OBJECT
9 | public:
10 | ImageDealThread();
11 |
12 | void init(string url,string fileName,int timeout);
13 | void run();
14 |
15 | private:
16 | ImageDeal image;
17 | };
18 |
19 | #endif // IMAGEDEALTHREAD_H
20 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/README:
--------------------------------------------------------------------------------
1 | 1.put main.cpp under root path
2 | 2.put your depend code under src folder,as this template do,
3 | you need add CMakeLists.txt to every sub folder,and
4 | you can write .txt as this template do
5 | 3.you can modify CMakeLists.txt under root path, you can change project name,
6 | the target name,and you libs name,and so on...
7 | 4.after you do the work mentioned, you can run ./build.sh, this script
8 | will auto mkdir some folders ,then cmake and make
9 |
10 |
--------------------------------------------------------------------------------
/client/ObjectDetector/imagedeal.h:
--------------------------------------------------------------------------------
1 | #ifndef IMAGEDEAL_H
2 | #define IMAGEDEAL_H
3 |
4 | #include "Include.h"
5 |
6 | class ImageDeal
7 | {
8 | public:
9 | ImageDeal();
10 | virtual ~ImageDeal();
11 |
12 | void init(string _url,string _fileName,int _timeout);
13 | void doWork();
14 |
15 |
16 | private:
17 | CURL *pCurl;
18 | CURLcode code;
19 | string url;
20 | string fileName;
21 | int timeout;
22 |
23 | char buff[1000];
24 |
25 | };
26 |
27 | #endif // IMAGEDEAL_H
28 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/2.8.12.2/CMakeSystem.cmake:
--------------------------------------------------------------------------------
1 | set(CMAKE_HOST_SYSTEM "Linux-3.13.0-119-generic")
2 | set(CMAKE_HOST_SYSTEM_NAME "Linux")
3 | set(CMAKE_HOST_SYSTEM_VERSION "3.13.0-119-generic")
4 | set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
5 |
6 |
7 |
8 | set(CMAKE_SYSTEM "Linux-3.13.0-119-generic")
9 | set(CMAKE_SYSTEM_NAME "Linux")
10 | set(CMAKE_SYSTEM_VERSION "3.13.0-119-generic")
11 | set(CMAKE_SYSTEM_PROCESSOR "x86_64")
12 |
13 | set(CMAKE_CROSSCOMPILING "FALSE")
14 |
15 | set(CMAKE_SYSTEM_LOADED 1)
16 |
--------------------------------------------------------------------------------
/client/ObjectDetector/streamdealthread.h:
--------------------------------------------------------------------------------
1 | #ifndef STREAMDEALTHREAD_H
2 | #define STREAMDEALTHREAD_H
3 | #include
4 | #include "StreamDeal.h"
5 |
6 | class StreamDealThread : public QThread
7 | {
8 | Q_OBJECT
9 | public:
10 | StreamDealThread();
11 | void run();
12 | void init(char *infile, char *outfile, int fps, int bits, int gop,
13 | int dispEnable, char *_winname);
14 | void doStop();
15 | void setId(int id);
16 |
17 | private:
18 | StreamDeal stream;
19 | };
20 |
21 | #endif // STREAMDEALTHREAD_H
22 |
--------------------------------------------------------------------------------
/client/ObjectDetector/streamdealthread.cpp:
--------------------------------------------------------------------------------
1 | #include "streamdealthread.h"
2 | #include
3 | StreamDealThread::StreamDealThread(){
4 |
5 | }
6 | void StreamDealThread::run(){
7 | stream.doInitWork();
8 | stream.doWork();
9 | }
10 | void StreamDealThread::init(char *infile, char *outfile, int fps, int bits, int gop, int dispEnable, char *_winname){
11 | stream.init(infile,outfile,fps,bits,gop,dispEnable,_winname);
12 | }
13 | void StreamDealThread::doStop(){
14 | stream.doStop();
15 | while(this->isRunning()){
16 | usleep(1000);
17 | }
18 | stream.doRealse();
19 | }
20 | void StreamDealThread::setId(int _id){
21 | stream.setId(_id);
22 | }
23 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/CMakeDirectoryInformation.cmake:
--------------------------------------------------------------------------------
1 | # CMAKE generated file: DO NOT EDIT!
2 | # Generated by "Unix Makefiles" Generator, CMake Version 2.8
3 |
4 | # Relative path conversion top directories.
5 | SET(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/tla001/myworks/cworks/curlclient")
6 | SET(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/tla001/myworks/cworks/curlclient/build")
7 |
8 | # Force unix paths in dependencies.
9 | SET(CMAKE_FORCE_UNIX_PATHS 1)
10 |
11 |
12 | # The C and CXX include file regular expressions for this directory.
13 | SET(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
14 | SET(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
15 | SET(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
16 | SET(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})
17 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/client.dir/DependInfo.cmake:
--------------------------------------------------------------------------------
1 | # The set of languages for which implicit dependencies are needed:
2 | SET(CMAKE_DEPENDS_LANGUAGES
3 | "CXX"
4 | )
5 | # The set of files for implicit dependencies of each language:
6 | SET(CMAKE_DEPENDS_CHECK_CXX
7 | "/home/tla001/myworks/cworks/curlclient/main.cpp" "/home/tla001/myworks/cworks/curlclient/build/CMakeFiles/client.dir/main.cpp.o"
8 | )
9 | SET(CMAKE_CXX_COMPILER_ID "GNU")
10 |
11 | # Targets to which this target links.
12 | SET(CMAKE_TARGET_LINKED_INFO_FILES
13 | )
14 |
15 | # The include file search paths:
16 | SET(CMAKE_C_TARGET_INCLUDE_PATH
17 | "../."
18 | "/usr/local/libcurl/include"
19 | )
20 | SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
21 | SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
22 | SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
23 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | #设置工程名称
2 | PROJECT(CMAKEDemo)
3 | #自己定制
4 | SET(MY_TARGET client)
5 | SET(MY_LINK curl)
6 | SET(MY_INC . /usr/local/libcurl/include)
7 | SET(MY_LINK_INC /usr/local/libcurl/lib)
8 |
9 |
10 | #设置CMAKE最小版本
11 | CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
12 | #设置编译器
13 | SET(CMAKE_CXX_COMPILER "g++")
14 | #设置构建类型,及相应的编译选项
15 | SET(CMAKE_BUILD_TYPE "Debug")
16 | SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -g -Wall -ggdb")
17 | SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
18 |
19 | #设置执行文件输出目录
20 | SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
21 | #设置库输出路径
22 | SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
23 |
24 | MESSAGE("++++++++++++++Start Build+++++++++++++++++")
25 |
26 | #当前目录的文件
27 | AUX_SOURCE_DIRECTORY(. SRC_LIST)
28 | #添加子目录
29 | #ADD_SUBDIRECTORY(src)
30 |
31 | #头文件搜索目录
32 | INCLUDE_DIRECTORIES(${MY_INC})
33 | #链接库搜索路径
34 | LINK_DIRECTORIES(${MY_LINK_INC})
35 | #设置链接库
36 | #SET(EXTRA_LIBS ${EXTRA_LIBS} test1 test2)
37 | SET(EXTRA_LIBS ${EXTRA_LIBS} ${MY_LINK})
38 |
39 | #生成可执行文件
40 | ADD_EXECUTABLE(${MY_TARGET} ${SRC_LIST})
41 | #执行文件链接属性
42 | TARGET_LINK_LIBRARIES(${MY_TARGET} ${EXTRA_LIBS})
43 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -e
4 |
5 | PROJ_ROOT=$PWD
6 | BUILD_ROOT=$PROJ_ROOT
7 | echo -e "\033[31m Current Build Root: $BUILD_ROOT \033[0m"
8 |
9 |
10 |
11 | BIN_PATH=$BUILD_ROOT/bin
12 |
13 | if [ -d $BIN_PATH ];then
14 | cd $BIN_PATH
15 | rm -rf *
16 | cd ..
17 | else
18 | mkdir -p $BIN_PATH
19 | fi
20 |
21 | INC_PATH=$BUILD_ROOT/inc
22 |
23 | if [ -d $INC_PATH ];then
24 | cd $INC_PATH
25 | rm -rf *
26 | cd ..
27 | else
28 | mkdir -p $INC_PATH
29 | fi
30 |
31 | #cp without path
32 | #find ./src/ -name "*.h" |xargs -i cp {} ./inc/
33 | DEST_PATH="./inc/"
34 |
35 | headers=`find . -name *.h`
36 | #echo $headers
37 |
38 | for file in $headers
39 | do
40 | #echo $file
41 | temp=${file#*/}
42 | temp=${temp#*/}
43 | dstfile=$DEST_PATH$temp
44 | dstpath=${dstfile%/*}
45 | #echo $dstpath
46 | [ -d $dstpath ] || mkdir -p $dstpath
47 |
48 | cp -R $file $dstfile
49 |
50 | done
51 |
52 | LIB_PATH=$BUILD_ROOT/lib
53 |
54 | if [ -d $LIB_PATH ];then
55 | cd $LIB_PATH
56 | rm -rf *
57 | cd ..
58 | else
59 | mkdir -p $LIB_PATH
60 | fi
61 |
62 | BUILD_PATH=$BUILD_ROOT/build
63 |
64 | if [ -d $BUILD_PATH ];then
65 | cd $BUILD_PATH
66 | rm -rf *
67 | else
68 | mkdir -p $BUILD_PATH
69 | cd $BUILD_PATH
70 | fi
71 |
72 | cmake $PROJ_ROOT
73 | make -j4
74 |
--------------------------------------------------------------------------------
/client/ObjectDetector/Include.h:
--------------------------------------------------------------------------------
1 | #ifndef __INCLUDE_H_
2 | #define __INCLUDE_H_
3 |
4 | extern "C" {
5 | //linux
6 | #include
7 | #include
8 | #include
9 | #include
10 | #include
11 | #include
12 | #include
13 | #include
14 | #include
15 | #include
16 | #include
17 |
18 | //iso
19 | #include
20 | #include
21 | #include
22 |
23 | //others
24 | #include "libavutil/time.h"
25 | #include
26 | #include
27 | #include
28 | #include
29 | #include
30 | #include
31 | #include
32 | //#include
33 | #include
34 | #include
35 | #include
36 |
37 | #include "curl/curl.h"
38 |
39 | }
40 | #include
41 | #include
42 | #include
43 | #include
44 | #include
45 | #include
46 |
47 | #include
48 | #include
49 | #include
50 | #include
51 | #include "rapidjson/document.h"
52 | #include "rapidjson/stringbuffer.h"
53 | #include "rapidjson/writer.h"
54 |
55 | #define psln(x) std::cout << #x " = " << (x) << std::endl
56 |
57 | using namespace std;
58 |
59 | #endif
60 |
--------------------------------------------------------------------------------
/client/ObjectDetector/rapidjson/internal/swap.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_INTERNAL_SWAP_H_
16 | #define RAPIDJSON_INTERNAL_SWAP_H_
17 |
18 | #include "../rapidjson.h"
19 |
20 | #if defined(__clang__)
21 | RAPIDJSON_DIAG_PUSH
22 | RAPIDJSON_DIAG_OFF(c++98-compat)
23 | #endif
24 |
25 | RAPIDJSON_NAMESPACE_BEGIN
26 | namespace internal {
27 |
28 | //! Custom swap() to avoid dependency on C++ header
29 | /*! \tparam T Type of the arguments to swap, should be instantiated with primitive C++ types only.
30 | \note This has the same semantics as std::swap().
31 | */
32 | template
33 | inline void Swap(T& a, T& b) RAPIDJSON_NOEXCEPT {
34 | T tmp = a;
35 | a = b;
36 | b = tmp;
37 | }
38 |
39 | } // namespace internal
40 | RAPIDJSON_NAMESPACE_END
41 |
42 | #if defined(__clang__)
43 | RAPIDJSON_DIAG_POP
44 | #endif
45 |
46 | #endif // RAPIDJSON_INTERNAL_SWAP_H_
47 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/inc/internal/swap.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_INTERNAL_SWAP_H_
16 | #define RAPIDJSON_INTERNAL_SWAP_H_
17 |
18 | #include "../rapidjson.h"
19 |
20 | #if defined(__clang__)
21 | RAPIDJSON_DIAG_PUSH
22 | RAPIDJSON_DIAG_OFF(c++98-compat)
23 | #endif
24 |
25 | RAPIDJSON_NAMESPACE_BEGIN
26 | namespace internal {
27 |
28 | //! Custom swap() to avoid dependency on C++ header
29 | /*! \tparam T Type of the arguments to swap, should be instantiated with primitive C++ types only.
30 | \note This has the same semantics as std::swap().
31 | */
32 | template
33 | inline void Swap(T& a, T& b) RAPIDJSON_NOEXCEPT {
34 | T tmp = a;
35 | a = b;
36 | b = tmp;
37 | }
38 |
39 | } // namespace internal
40 | RAPIDJSON_NAMESPACE_END
41 |
42 | #if defined(__clang__)
43 | RAPIDJSON_DIAG_POP
44 | #endif
45 |
46 | #endif // RAPIDJSON_INTERNAL_SWAP_H_
47 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/rapidjson/internal/swap.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_INTERNAL_SWAP_H_
16 | #define RAPIDJSON_INTERNAL_SWAP_H_
17 |
18 | #include "../rapidjson.h"
19 |
20 | #if defined(__clang__)
21 | RAPIDJSON_DIAG_PUSH
22 | RAPIDJSON_DIAG_OFF(c++98-compat)
23 | #endif
24 |
25 | RAPIDJSON_NAMESPACE_BEGIN
26 | namespace internal {
27 |
28 | //! Custom swap() to avoid dependency on C++ header
29 | /*! \tparam T Type of the arguments to swap, should be instantiated with primitive C++ types only.
30 | \note This has the same semantics as std::swap().
31 | */
32 | template
33 | inline void Swap(T& a, T& b) RAPIDJSON_NOEXCEPT {
34 | T tmp = a;
35 | a = b;
36 | b = tmp;
37 | }
38 |
39 | } // namespace internal
40 | RAPIDJSON_NAMESPACE_END
41 |
42 | #if defined(__clang__)
43 | RAPIDJSON_DIAG_POP
44 | #endif
45 |
46 | #endif // RAPIDJSON_INTERNAL_SWAP_H_
47 |
--------------------------------------------------------------------------------
/client/ObjectDetector/StreamDeal.h:
--------------------------------------------------------------------------------
1 | /*
2 | * StreamDeal.h
3 | *
4 | * Created on: Jun 19, 2017
5 | * Author: tla001
6 | */
7 |
8 | #ifndef STREAMDEAL_H_
9 | #define STREAMDEAL_H_
10 |
11 | #include "Include.h"
12 |
13 |
14 | class StreamDeal {
15 | public:
16 | StreamDeal();
17 | virtual ~StreamDeal();
18 |
19 | void init(char *infile, char *outfile, int fps, int bits, int gop,
20 | int dispEnable, char *_winname);
21 | void setId(int id);
22 | void doInitWork();
23 | void doWork();
24 | void doRealse();
25 | void doStop();
26 |
27 | private:
28 | AVOutputFormat *ofmt;
29 | AVFormatContext *ifmt_ctx, *ofmt_ctx;
30 | AVCodecContext *ifcodec_ctx, *ofcodec_ctx;
31 | AVCodec *icodec, *ocodec;
32 | AVStream *out_stream;
33 | AVFrame *pFrame, *pFrameYUV420, *pFrameBGR;
34 | struct SwsContext *in_conCtx, *out_conCtx;
35 | unsigned char *in_buffer, *out_buffer;
36 | AVPacket inpkg, outpkg;
37 | char *in_filename, *out_filename;
38 | int ret;
39 | int got_picture;
40 | IplImage *image;
41 | int videoindex;
42 | int frame_index;
43 | int errFlag;
44 | int stopFlag;
45 | int dispFlag;
46 | char *winname;
47 | int fps;
48 | int bits;
49 | int gop;
50 | int id;
51 |
52 | public:
53 | static void test() {
54 | char *infile = "/dev/video0";
55 | char *outfile = "test.flv";
56 | int fps = 30;
57 | int gop = 5;
58 | int bits = 1000000;
59 | int disp = 1;
60 | char *winname = "demo";
61 | StreamDeal streamer;
62 | streamer.init(infile, outfile, fps, bits, gop, disp, winname);
63 | streamer.doInitWork();
64 | streamer.doWork();
65 |
66 | }
67 | };
68 |
69 | #endif /* STREAMDEAL_H_ */
70 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/2.8.12.2/CMakeCCompiler.cmake:
--------------------------------------------------------------------------------
1 | set(CMAKE_C_COMPILER "/usr/bin/cc")
2 | set(CMAKE_C_COMPILER_ARG1 "")
3 | set(CMAKE_C_COMPILER_ID "GNU")
4 | set(CMAKE_C_COMPILER_VERSION "4.8.4")
5 | set(CMAKE_C_PLATFORM_ID "Linux")
6 |
7 | set(CMAKE_AR "/usr/bin/ar")
8 | set(CMAKE_RANLIB "/usr/bin/ranlib")
9 | set(CMAKE_LINKER "/usr/bin/ld")
10 | set(CMAKE_COMPILER_IS_GNUCC 1)
11 | set(CMAKE_C_COMPILER_LOADED 1)
12 | set(CMAKE_C_COMPILER_WORKS TRUE)
13 | set(CMAKE_C_ABI_COMPILED TRUE)
14 | set(CMAKE_COMPILER_IS_MINGW )
15 | set(CMAKE_COMPILER_IS_CYGWIN )
16 | if(CMAKE_COMPILER_IS_CYGWIN)
17 | set(CYGWIN 1)
18 | set(UNIX 1)
19 | endif()
20 |
21 | set(CMAKE_C_COMPILER_ENV_VAR "CC")
22 |
23 | if(CMAKE_COMPILER_IS_MINGW)
24 | set(MINGW 1)
25 | endif()
26 | set(CMAKE_C_COMPILER_ID_RUN 1)
27 | set(CMAKE_C_SOURCE_FILE_EXTENSIONS c)
28 | set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
29 | set(CMAKE_C_LINKER_PREFERENCE 10)
30 |
31 | # Save compiler ABI information.
32 | set(CMAKE_C_SIZEOF_DATA_PTR "8")
33 | set(CMAKE_C_COMPILER_ABI "ELF")
34 | set(CMAKE_C_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
35 |
36 | if(CMAKE_C_SIZEOF_DATA_PTR)
37 | set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
38 | endif()
39 |
40 | if(CMAKE_C_COMPILER_ABI)
41 | set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
42 | endif()
43 |
44 | if(CMAKE_C_LIBRARY_ARCHITECTURE)
45 | set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
46 | endif()
47 |
48 |
49 |
50 |
51 | set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "c")
52 | set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/4.8;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib")
53 | set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/client/ObjectDetector/mainwindow.h:
--------------------------------------------------------------------------------
1 | #ifndef MAINWINDOW_H
2 | #define MAINWINDOW_H
3 |
4 | #include
5 | #include "streamdealthread.h"
6 | #include "imagedealthread.h"
7 | #include
8 | #include
9 | #include
10 |
11 | namespace Ui {
12 | class MainWindow;
13 | }
14 |
15 | class MainWindow : public QMainWindow
16 | {
17 | Q_OBJECT
18 |
19 | public:
20 | explicit MainWindow(QWidget *parent = 0);
21 | ~MainWindow();
22 |
23 | public slots:
24 | void doPushStart();
25 | void doPushStop();
26 | void doPullStart();
27 | void doPullStop();
28 |
29 | void doTimeUpdate();
30 | void selectVideoPage();
31 | void selectImagePage();
32 |
33 | void doDispInfo(char *info);
34 | void doDispInfoWrite(char *info);
35 | void doDispInfoUpdate();
36 |
37 |
38 | void doOpenImage();
39 | void doPushImage();
40 |
41 | private:
42 | Ui::MainWindow *ui;
43 |
44 | QTimer *timer;
45 | QTimer *timerInfo;
46 | QTimer *timerImageInfo;
47 |
48 | StreamDealThread pusher;
49 | StreamDealThread puller;
50 |
51 | string push_infile;
52 | string push_outfile;
53 | int push_fps;
54 | int push_bits;
55 | int push_gop;
56 | int push_disp;
57 | string push_win;
58 |
59 | string pull_infile;
60 | string pull_outfile;
61 | int pull_fps;
62 | int pull_bits;
63 | int pull_gop;
64 | int pull_disp;
65 | string pull_win;
66 | string infoStr;
67 | string infoStr1;
68 | string infoStrBak;
69 |
70 | bool runFlag;
71 |
72 | ImageDealThread imagepusher;
73 | string url;
74 | string filename;
75 | int timeout;
76 |
77 | public:
78 | friend class StreamDeal;
79 | friend class ImageDeal;
80 | };
81 |
82 | #endif // MAINWINDOW_H
83 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/cmake_install.cmake:
--------------------------------------------------------------------------------
1 | # Install script for directory: /home/tla001/myworks/cworks/curlclient
2 |
3 | # Set the install prefix
4 | IF(NOT DEFINED CMAKE_INSTALL_PREFIX)
5 | SET(CMAKE_INSTALL_PREFIX "/usr/local")
6 | ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX)
7 | STRING(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
8 |
9 | # Set the install configuration name.
10 | IF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
11 | IF(BUILD_TYPE)
12 | STRING(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
13 | CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
14 | ELSE(BUILD_TYPE)
15 | SET(CMAKE_INSTALL_CONFIG_NAME "Debug")
16 | ENDIF(BUILD_TYPE)
17 | MESSAGE(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
18 | ENDIF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
19 |
20 | # Set the component getting installed.
21 | IF(NOT CMAKE_INSTALL_COMPONENT)
22 | IF(COMPONENT)
23 | MESSAGE(STATUS "Install component: \"${COMPONENT}\"")
24 | SET(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
25 | ELSE(COMPONENT)
26 | SET(CMAKE_INSTALL_COMPONENT)
27 | ENDIF(COMPONENT)
28 | ENDIF(NOT CMAKE_INSTALL_COMPONENT)
29 |
30 | # Install shared libraries without execute permission?
31 | IF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
32 | SET(CMAKE_INSTALL_SO_NO_EXE "1")
33 | ENDIF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
34 |
35 | IF(CMAKE_INSTALL_COMPONENT)
36 | SET(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
37 | ELSE(CMAKE_INSTALL_COMPONENT)
38 | SET(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
39 | ENDIF(CMAKE_INSTALL_COMPONENT)
40 |
41 | FILE(WRITE "/home/tla001/myworks/cworks/curlclient/build/${CMAKE_INSTALL_MANIFEST}" "")
42 | FOREACH(file ${CMAKE_INSTALL_MANIFEST_FILES})
43 | FILE(APPEND "/home/tla001/myworks/cworks/curlclient/build/${CMAKE_INSTALL_MANIFEST}" "${file}\n")
44 | ENDFOREACH(file)
45 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/2.8.12.2/CMakeCXXCompiler.cmake:
--------------------------------------------------------------------------------
1 | set(CMAKE_CXX_COMPILER "/usr/bin/c++")
2 | set(CMAKE_CXX_COMPILER_ARG1 "")
3 | set(CMAKE_CXX_COMPILER_ID "GNU")
4 | set(CMAKE_CXX_COMPILER_VERSION "4.8.4")
5 | set(CMAKE_CXX_PLATFORM_ID "Linux")
6 |
7 | set(CMAKE_AR "/usr/bin/ar")
8 | set(CMAKE_RANLIB "/usr/bin/ranlib")
9 | set(CMAKE_LINKER "/usr/bin/ld")
10 | set(CMAKE_COMPILER_IS_GNUCXX 1)
11 | set(CMAKE_CXX_COMPILER_LOADED 1)
12 | set(CMAKE_CXX_COMPILER_WORKS TRUE)
13 | set(CMAKE_CXX_ABI_COMPILED TRUE)
14 | set(CMAKE_COMPILER_IS_MINGW )
15 | set(CMAKE_COMPILER_IS_CYGWIN )
16 | if(CMAKE_COMPILER_IS_CYGWIN)
17 | set(CYGWIN 1)
18 | set(UNIX 1)
19 | endif()
20 |
21 | set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
22 |
23 | if(CMAKE_COMPILER_IS_MINGW)
24 | set(MINGW 1)
25 | endif()
26 | set(CMAKE_CXX_COMPILER_ID_RUN 1)
27 | set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
28 | set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP)
29 | set(CMAKE_CXX_LINKER_PREFERENCE 30)
30 | set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
31 |
32 | # Save compiler ABI information.
33 | set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
34 | set(CMAKE_CXX_COMPILER_ABI "ELF")
35 | set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
36 |
37 | if(CMAKE_CXX_SIZEOF_DATA_PTR)
38 | set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
39 | endif()
40 |
41 | if(CMAKE_CXX_COMPILER_ABI)
42 | set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
43 | endif()
44 |
45 | if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
46 | set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
47 | endif()
48 |
49 |
50 |
51 |
52 | set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;c")
53 | set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/4.8;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib")
54 | set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/README:
--------------------------------------------------------------------------------
1 | Online Object Detection System Based On Deep Learning
2 | This project is a system for objects detection based on deep learning(darknet --yolo),and includes some parts:
3 | 1.video stream detect
4 | use ffmpeg,perform that:
5 | 1) get video stream from camera/file/net video stream
6 | 2) decode and display with opencv
7 | 3) encode video with h264 in flv format
8 | 4) push video through rtmp protocol to nginx stream media server or save as file
9 |
10 | the main work of ./client/ObjectDetector:
11 | pusher:
12 | get video from camera-->decode and display with opencv -->encode in h264as flv --> push stream to nginx server
13 | puller:
14 | get video from nginx server-->decode and display with opencv -->encode in h264as flv --> save as file
15 |
16 | the main work of ./server/video
17 | get video from nginx server--> decode and dislay with opencv --> detect whih yolo -->display detect results --> encode in h264 as flv --> push stream to nginx server(another channel)
18 |
19 | 2.image detect
20 | tranport image or json with http,using libevent to listen http in server,using libcurl as client
21 |
22 | the main work of ./client/imagedemo/curlclient
23 | read a image file --> transport in http with libcurl ----waiting for reback-- get json stream -->decode json
24 |
25 | the main work of ./server/image
26 | libevent as http server in child process--- wait for client --- get a request --> write image stream as file --> signal to main process and yolo read file and detect -->write detect results in a json file --> fifo to wake up child process --> read json file and sent to client with http
27 |
28 |
29 | CAUSTION:
30 | when use codes in server folder,you must configure darknet already,then you can put these files in src,and replace default Makefile with my Makefile.Also, you have to configure libs I have used.
31 |
32 | Something maybe more clear in my blog:www.cnblogs.com/tla001
33 |
34 |
--------------------------------------------------------------------------------
/README.md~:
--------------------------------------------------------------------------------
1 | # Online Object Detection System Based On Deep Learning
2 | This project is a system for objects detection based on deep learning(darknet --yolo),and includes some parts:
3 | 1.video stream detect
4 | use ffmpeg,perform that:
5 | 1) get video stream from camera/file/net video stream
6 | 2) decode and display with opencv
7 | 3) encode video with h264 in flv format
8 | 4) push video through rtmp protocol to nginx stream media server or save as file
9 |
10 | the main work of ./client/ObjectDetector:
11 | pusher:
12 | get video from camera-->decode and display with opencv -->encode in h264as flv --> push stream to nginx server
13 | puller:
14 | get video from nginx server-->decode and display with opencv -->encode in h264as flv --> save as file
15 |
16 | the main work of ./server/video
17 | get video from nginx server--> decode and dislay with opencv --> detect whih yolo -->display detect results --> encode in h264 as flv --> push stream to nginx server(another channel)
18 |
19 | 2.image detect
20 | tranport image or json with http,using libevent to listen http in server,using libcurl as client
21 |
22 | the main work of ./client/imagedemo/curlclient
23 | read a image file --> transport in http with libcurl ----waiting for reback-- get json stream -->decode json
24 |
25 | the main work of ./server/image
26 | libevent as http server in child process--- wait for client --- get a request --> write image stream as file --> signal to main process and yolo read file and detect -->write detect results in a json file --> fifo to wake up child process --> read json file and sent to client with http
27 |
28 |
29 | CAUSTION:
30 | when use codes in server folder,you must configure darknet already,then you can put these files in src,and replace default Makefile with my Makefile.Also, you have to configure libs I have used.
31 |
32 | Something maybe more clear in my blog:www.cnblogs.com/tla001
33 |
34 |
--------------------------------------------------------------------------------
/README~:
--------------------------------------------------------------------------------
1 | Online Object Detection System Based On Deep Learning
2 | This project is a system for objects detection based on deep learning(darknet --yolo),and includes some parts:
3 | 1.video stream detect
4 | use ffmpeg,perform that:
5 | 1) get video stream from camera/file/net video stream
6 | 2) decode and display with opencv
7 | 3) encode video with h264 in flv format
8 | 4) push video through rtmp protocol to nginx stream media server or save as file
9 |
10 | the main work of ./client/ObjectDetector:
11 | pusher:
12 | get video from camera-->decode and display with opencv -->encode in h264as flv --> push stream to nginx server
13 | puller:
14 | get video from nginx server-->decode and display with opencv -->encode in h264as flv --> save as file
15 |
16 | the main work of ./server/video
17 | get video from nginx server--> decode and dislay with opencv --> detect whih yolo -->display detect results --> encode in h264 as flv --> push stream to nginx server(another channel)
18 |
19 | 2.image detect
20 | tranport image or json with http,using libevent to listen http in server,using libcurl as client
21 |
22 | the main work of ./client/imagedemo/curlclient
23 | read a image file --> transport in http with libcurl ----waiting for reback-- get json stream -->decode json
24 |
25 | the main work of ./server/image
26 | libevent as http server in child process--- wait for client --- get a request --> write image stream as file --> signal to main process and yolo read file and detect -->write detect results in a json file --> fifo to wake up child process --> read json file and sent to client with http
27 |
28 |
29 | CAUSTION:
30 | when use codes in server folder,you must configure darknet already,then you can put these files in src,and replace default Makefile with my Makefile.Also, you have to configure libs I have used.
31 |
32 | Something maybe more clear in my blog:www.cnblogs.com/tla001
33 |
34 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Online Object Detection System Based On Deep Learning
2 | * This project is a system for objects detection based on deep learning(darknet --yolo),and includes some parts:
3 | ## 1.video stream detect
4 | use ffmpeg,perform that:
5 | * 1) get video stream from camera/file/net video stream
6 | * 2) decode and display with opencv
7 | * 3) encode video with h264 in flv format
8 | * 4) push video through rtmp protocol to nginx stream media server or save as file
9 |
10 | ### the main work of ./client/ObjectDetector:
11 | * pusher:
12 | get video from camera-->decode and display with opencv -->encode in h264as flv --> push stream to nginx server
13 | * puller:
14 | get video from nginx server-->decode and display with opencv -->encode in h264as flv --> save as file
15 |
16 | ### the main work of ./server/video
17 | get video from nginx server--> decode and dislay with opencv --> detect whih yolo -->display detect results --> encode in h264 as flv --> push stream to nginx server(another channel)
18 |
19 | ## 2.image detect
20 | tranport image or json with http,using libevent to listen http in server,using libcurl as client
21 |
22 | ### the main work of ./client/imagedemo/curlclient
23 | read a image file --> transport in http with libcurl ----waiting for reback-- get json stream -->decode json
24 |
25 | ### the main work of ./server/image
26 | libevent as http server in child process--- wait for client --- get a request --> write image stream as file --> signal to main process and yolo read file and detect -->write detect results in a json file --> fifo to wake up child process --> read json file and sent to client with http
27 |
28 |
29 | ## CAUSTION:
30 | when use codes in server folder,you must configure darknet already,then you can put these files in src,and replace default Makefile with my Makefile.Also, you have to configure libs I have used.
31 |
32 | ## Something maybe more clear in my blog:www.cnblogs.com/tla001
33 |
34 |
--------------------------------------------------------------------------------
/client/ObjectDetector/ObjectDetector.pro:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------
2 | #
3 | # Project created by QtCreator 2017-06-19T21:28:38
4 | #
5 | #-------------------------------------------------
6 |
7 | QT += core gui
8 |
9 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
10 |
11 | TARGET = ObjectDetector
12 | TEMPLATE = app
13 |
14 | # The following define makes your compiler emit warnings if you use
15 | # any feature of Qt which as been marked as deprecated (the exact warnings
16 | # depend on your compiler). Please consult the documentation of the
17 | # deprecated API in order to know how to port your code away from it.
18 | DEFINES += QT_DEPRECATED_WARNINGS
19 |
20 | # You can also make your code fail to compile if you use deprecated APIs.
21 | # In order to do so, uncomment the following line.
22 | # You can also select to disable deprecated APIs only up to a certain version of Qt.
23 | #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
24 |
25 | INCLUDEPATH += /usr/local/opencv-2.4.11/include
26 | INCLUDEPATH += /usr/local/opencv-2.4.11/include/opencv
27 | INCLUDEPATH += /usr/local/opencv-2.4.11/include/opencv2
28 | INCLUDEPATH += /usr/local/mediawork/ffmpeg/include
29 | INCLUDEPATH += /usr/local/libcurl/include
30 |
31 | LIBS +=-L /usr/local/opencv-2.4.11/lib \
32 | -lopencv_highgui -lopencv_core -lopencv_imgproc \
33 | -L/usr/local/mediawork/ffmpeg/lib \
34 | -lavcodec -lavfilter -lpostproc -lavformat -lswresample -lavdevice -lavutil -lswscale -lm \
35 | -L/usr/local/libcurl/lib -lcurl
36 |
37 | SOURCES += main.cpp\
38 | mainwindow.cpp \
39 | streamdealthread.cpp \
40 | StreamDeal.cpp \
41 | imagedeal.cpp \
42 | imagedealthread.cpp
43 |
44 | HEADERS += mainwindow.h \
45 | Include.h\
46 | streamdealthread.h \
47 | StreamDeal.h \
48 | imagedeal.h \
49 | imagedealthread.h
50 |
51 | FORMS += mainwindow.ui
52 |
53 | RESOURCES += \
54 | resource.qrc
55 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/client.dir/depend.internal:
--------------------------------------------------------------------------------
1 | # CMAKE generated file: DO NOT EDIT!
2 | # Generated by "Unix Makefiles" Generator, CMake Version 2.8
3 |
4 | CMakeFiles/client.dir/main.cpp.o
5 | .././rapidjson/error/error.h
6 | .././rapidjson/reader.h
7 | /home/tla001/myworks/cworks/curlclient/main.cpp
8 | /home/tla001/myworks/cworks/curlclient/rapidjson/allocators.h
9 | /home/tla001/myworks/cworks/curlclient/rapidjson/document.h
10 | /home/tla001/myworks/cworks/curlclient/rapidjson/encodedstream.h
11 | /home/tla001/myworks/cworks/curlclient/rapidjson/encodings.h
12 | /home/tla001/myworks/cworks/curlclient/rapidjson/error/error.h
13 | /home/tla001/myworks/cworks/curlclient/rapidjson/internal/biginteger.h
14 | /home/tla001/myworks/cworks/curlclient/rapidjson/internal/diyfp.h
15 | /home/tla001/myworks/cworks/curlclient/rapidjson/internal/dtoa.h
16 | /home/tla001/myworks/cworks/curlclient/rapidjson/internal/ieee754.h
17 | /home/tla001/myworks/cworks/curlclient/rapidjson/internal/itoa.h
18 | /home/tla001/myworks/cworks/curlclient/rapidjson/internal/meta.h
19 | /home/tla001/myworks/cworks/curlclient/rapidjson/internal/pow10.h
20 | /home/tla001/myworks/cworks/curlclient/rapidjson/internal/stack.h
21 | /home/tla001/myworks/cworks/curlclient/rapidjson/internal/strfunc.h
22 | /home/tla001/myworks/cworks/curlclient/rapidjson/internal/strtod.h
23 | /home/tla001/myworks/cworks/curlclient/rapidjson/internal/swap.h
24 | /home/tla001/myworks/cworks/curlclient/rapidjson/memorystream.h
25 | /home/tla001/myworks/cworks/curlclient/rapidjson/msinttypes/inttypes.h
26 | /home/tla001/myworks/cworks/curlclient/rapidjson/msinttypes/stdint.h
27 | /home/tla001/myworks/cworks/curlclient/rapidjson/rapidjson.h
28 | /home/tla001/myworks/cworks/curlclient/rapidjson/reader.h
29 | /home/tla001/myworks/cworks/curlclient/rapidjson/stream.h
30 | /home/tla001/myworks/cworks/curlclient/rapidjson/stringbuffer.h
31 | /home/tla001/myworks/cworks/curlclient/rapidjson/writer.h
32 | /usr/local/libcurl/include/curl/curl.h
33 | /usr/local/libcurl/include/curl/curlbuild.h
34 | /usr/local/libcurl/include/curl/curlrules.h
35 | /usr/local/libcurl/include/curl/curlver.h
36 | /usr/local/libcurl/include/curl/easy.h
37 | /usr/local/libcurl/include/curl/multi.h
38 | /usr/local/libcurl/include/curl/system.h
39 | /usr/local/libcurl/include/curl/typecheck-gcc.h
40 |
--------------------------------------------------------------------------------
/client/ObjectDetector/rapidjson/internal/strfunc.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_INTERNAL_STRFUNC_H_
16 | #define RAPIDJSON_INTERNAL_STRFUNC_H_
17 |
18 | #include "../stream.h"
19 | #include
20 |
21 | RAPIDJSON_NAMESPACE_BEGIN
22 | namespace internal {
23 |
24 | //! Custom strlen() which works on different character types.
25 | /*! \tparam Ch Character type (e.g. char, wchar_t, short)
26 | \param s Null-terminated input string.
27 | \return Number of characters in the string.
28 | \note This has the same semantics as strlen(), the return value is not number of Unicode codepoints.
29 | */
30 | template
31 | inline SizeType StrLen(const Ch* s) {
32 | RAPIDJSON_ASSERT(s != 0);
33 | const Ch* p = s;
34 | while (*p) ++p;
35 | return SizeType(p - s);
36 | }
37 |
38 | template <>
39 | inline SizeType StrLen(const char* s) {
40 | return SizeType(std::strlen(s));
41 | }
42 |
43 | template <>
44 | inline SizeType StrLen(const wchar_t* s) {
45 | return SizeType(std::wcslen(s));
46 | }
47 |
48 | //! Returns number of code points in a encoded string.
49 | template
50 | bool CountStringCodePoint(const typename Encoding::Ch* s, SizeType length, SizeType* outCount) {
51 | RAPIDJSON_ASSERT(s != 0);
52 | RAPIDJSON_ASSERT(outCount != 0);
53 | GenericStringStream is(s);
54 | const typename Encoding::Ch* end = s + length;
55 | SizeType count = 0;
56 | while (is.src_ < end) {
57 | unsigned codepoint;
58 | if (!Encoding::Decode(is, &codepoint))
59 | return false;
60 | count++;
61 | }
62 | *outCount = count;
63 | return true;
64 | }
65 |
66 | } // namespace internal
67 | RAPIDJSON_NAMESPACE_END
68 |
69 | #endif // RAPIDJSON_INTERNAL_STRFUNC_H_
70 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/inc/internal/strfunc.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_INTERNAL_STRFUNC_H_
16 | #define RAPIDJSON_INTERNAL_STRFUNC_H_
17 |
18 | #include "../stream.h"
19 | #include
20 |
21 | RAPIDJSON_NAMESPACE_BEGIN
22 | namespace internal {
23 |
24 | //! Custom strlen() which works on different character types.
25 | /*! \tparam Ch Character type (e.g. char, wchar_t, short)
26 | \param s Null-terminated input string.
27 | \return Number of characters in the string.
28 | \note This has the same semantics as strlen(), the return value is not number of Unicode codepoints.
29 | */
30 | template
31 | inline SizeType StrLen(const Ch* s) {
32 | RAPIDJSON_ASSERT(s != 0);
33 | const Ch* p = s;
34 | while (*p) ++p;
35 | return SizeType(p - s);
36 | }
37 |
38 | template <>
39 | inline SizeType StrLen(const char* s) {
40 | return SizeType(std::strlen(s));
41 | }
42 |
43 | template <>
44 | inline SizeType StrLen(const wchar_t* s) {
45 | return SizeType(std::wcslen(s));
46 | }
47 |
48 | //! Returns number of code points in a encoded string.
49 | template
50 | bool CountStringCodePoint(const typename Encoding::Ch* s, SizeType length, SizeType* outCount) {
51 | RAPIDJSON_ASSERT(s != 0);
52 | RAPIDJSON_ASSERT(outCount != 0);
53 | GenericStringStream is(s);
54 | const typename Encoding::Ch* end = s + length;
55 | SizeType count = 0;
56 | while (is.src_ < end) {
57 | unsigned codepoint;
58 | if (!Encoding::Decode(is, &codepoint))
59 | return false;
60 | count++;
61 | }
62 | *outCount = count;
63 | return true;
64 | }
65 |
66 | } // namespace internal
67 | RAPIDJSON_NAMESPACE_END
68 |
69 | #endif // RAPIDJSON_INTERNAL_STRFUNC_H_
70 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/rapidjson/internal/strfunc.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_INTERNAL_STRFUNC_H_
16 | #define RAPIDJSON_INTERNAL_STRFUNC_H_
17 |
18 | #include "../stream.h"
19 | #include
20 |
21 | RAPIDJSON_NAMESPACE_BEGIN
22 | namespace internal {
23 |
24 | //! Custom strlen() which works on different character types.
25 | /*! \tparam Ch Character type (e.g. char, wchar_t, short)
26 | \param s Null-terminated input string.
27 | \return Number of characters in the string.
28 | \note This has the same semantics as strlen(), the return value is not number of Unicode codepoints.
29 | */
30 | template
31 | inline SizeType StrLen(const Ch* s) {
32 | RAPIDJSON_ASSERT(s != 0);
33 | const Ch* p = s;
34 | while (*p) ++p;
35 | return SizeType(p - s);
36 | }
37 |
38 | template <>
39 | inline SizeType StrLen(const char* s) {
40 | return SizeType(std::strlen(s));
41 | }
42 |
43 | template <>
44 | inline SizeType StrLen(const wchar_t* s) {
45 | return SizeType(std::wcslen(s));
46 | }
47 |
48 | //! Returns number of code points in a encoded string.
49 | template
50 | bool CountStringCodePoint(const typename Encoding::Ch* s, SizeType length, SizeType* outCount) {
51 | RAPIDJSON_ASSERT(s != 0);
52 | RAPIDJSON_ASSERT(outCount != 0);
53 | GenericStringStream is(s);
54 | const typename Encoding::Ch* end = s + length;
55 | SizeType count = 0;
56 | while (is.src_ < end) {
57 | unsigned codepoint;
58 | if (!Encoding::Decode(is, &codepoint))
59 | return false;
60 | count++;
61 | }
62 | *outCount = count;
63 | return true;
64 | }
65 |
66 | } // namespace internal
67 | RAPIDJSON_NAMESPACE_END
68 |
69 | #endif // RAPIDJSON_INTERNAL_STRFUNC_H_
70 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/client.dir/depend.make:
--------------------------------------------------------------------------------
1 | # CMAKE generated file: DO NOT EDIT!
2 | # Generated by "Unix Makefiles" Generator, CMake Version 2.8
3 |
4 | CMakeFiles/client.dir/main.cpp.o: .././rapidjson/error/error.h
5 | CMakeFiles/client.dir/main.cpp.o: .././rapidjson/reader.h
6 | CMakeFiles/client.dir/main.cpp.o: ../main.cpp
7 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/allocators.h
8 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/document.h
9 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/encodedstream.h
10 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/encodings.h
11 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/error/error.h
12 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/internal/biginteger.h
13 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/internal/diyfp.h
14 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/internal/dtoa.h
15 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/internal/ieee754.h
16 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/internal/itoa.h
17 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/internal/meta.h
18 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/internal/pow10.h
19 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/internal/stack.h
20 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/internal/strfunc.h
21 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/internal/strtod.h
22 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/internal/swap.h
23 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/memorystream.h
24 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/msinttypes/inttypes.h
25 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/msinttypes/stdint.h
26 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/rapidjson.h
27 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/reader.h
28 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/stream.h
29 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/stringbuffer.h
30 | CMakeFiles/client.dir/main.cpp.o: ../rapidjson/writer.h
31 | CMakeFiles/client.dir/main.cpp.o: /usr/local/libcurl/include/curl/curl.h
32 | CMakeFiles/client.dir/main.cpp.o: /usr/local/libcurl/include/curl/curlbuild.h
33 | CMakeFiles/client.dir/main.cpp.o: /usr/local/libcurl/include/curl/curlrules.h
34 | CMakeFiles/client.dir/main.cpp.o: /usr/local/libcurl/include/curl/curlver.h
35 | CMakeFiles/client.dir/main.cpp.o: /usr/local/libcurl/include/curl/easy.h
36 | CMakeFiles/client.dir/main.cpp.o: /usr/local/libcurl/include/curl/multi.h
37 | CMakeFiles/client.dir/main.cpp.o: /usr/local/libcurl/include/curl/system.h
38 | CMakeFiles/client.dir/main.cpp.o: /usr/local/libcurl/include/curl/typecheck-gcc.h
39 |
40 |
--------------------------------------------------------------------------------
/client/ObjectDetector/rapidjson/ostreamwrapper.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_OSTREAMWRAPPER_H_
16 | #define RAPIDJSON_OSTREAMWRAPPER_H_
17 |
18 | #include "stream.h"
19 | #include
20 |
21 | #ifdef __clang__
22 | RAPIDJSON_DIAG_PUSH
23 | RAPIDJSON_DIAG_OFF(padded)
24 | #endif
25 |
26 | RAPIDJSON_NAMESPACE_BEGIN
27 |
28 | //! Wrapper of \c std::basic_ostream into RapidJSON's Stream concept.
29 | /*!
30 | The classes can be wrapped including but not limited to:
31 |
32 | - \c std::ostringstream
33 | - \c std::stringstream
34 | - \c std::wpstringstream
35 | - \c std::wstringstream
36 | - \c std::ifstream
37 | - \c std::fstream
38 | - \c std::wofstream
39 | - \c std::wfstream
40 |
41 | \tparam StreamType Class derived from \c std::basic_ostream.
42 | */
43 |
44 | template
45 | class BasicOStreamWrapper {
46 | public:
47 | typedef typename StreamType::char_type Ch;
48 | BasicOStreamWrapper(StreamType& stream) : stream_(stream) {}
49 |
50 | void Put(Ch c) {
51 | stream_.put(c);
52 | }
53 |
54 | void Flush() {
55 | stream_.flush();
56 | }
57 |
58 | // Not implemented
59 | char Peek() const { RAPIDJSON_ASSERT(false); return 0; }
60 | char Take() { RAPIDJSON_ASSERT(false); return 0; }
61 | size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; }
62 | char* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
63 | size_t PutEnd(char*) { RAPIDJSON_ASSERT(false); return 0; }
64 |
65 | private:
66 | BasicOStreamWrapper(const BasicOStreamWrapper&);
67 | BasicOStreamWrapper& operator=(const BasicOStreamWrapper&);
68 |
69 | StreamType& stream_;
70 | };
71 |
72 | typedef BasicOStreamWrapper OStreamWrapper;
73 | typedef BasicOStreamWrapper WOStreamWrapper;
74 |
75 | #ifdef __clang__
76 | RAPIDJSON_DIAG_POP
77 | #endif
78 |
79 | RAPIDJSON_NAMESPACE_END
80 |
81 | #endif // RAPIDJSON_OSTREAMWRAPPER_H_
82 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/inc/ostreamwrapper.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_OSTREAMWRAPPER_H_
16 | #define RAPIDJSON_OSTREAMWRAPPER_H_
17 |
18 | #include "stream.h"
19 | #include
20 |
21 | #ifdef __clang__
22 | RAPIDJSON_DIAG_PUSH
23 | RAPIDJSON_DIAG_OFF(padded)
24 | #endif
25 |
26 | RAPIDJSON_NAMESPACE_BEGIN
27 |
28 | //! Wrapper of \c std::basic_ostream into RapidJSON's Stream concept.
29 | /*!
30 | The classes can be wrapped including but not limited to:
31 |
32 | - \c std::ostringstream
33 | - \c std::stringstream
34 | - \c std::wpstringstream
35 | - \c std::wstringstream
36 | - \c std::ifstream
37 | - \c std::fstream
38 | - \c std::wofstream
39 | - \c std::wfstream
40 |
41 | \tparam StreamType Class derived from \c std::basic_ostream.
42 | */
43 |
44 | template
45 | class BasicOStreamWrapper {
46 | public:
47 | typedef typename StreamType::char_type Ch;
48 | BasicOStreamWrapper(StreamType& stream) : stream_(stream) {}
49 |
50 | void Put(Ch c) {
51 | stream_.put(c);
52 | }
53 |
54 | void Flush() {
55 | stream_.flush();
56 | }
57 |
58 | // Not implemented
59 | char Peek() const { RAPIDJSON_ASSERT(false); return 0; }
60 | char Take() { RAPIDJSON_ASSERT(false); return 0; }
61 | size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; }
62 | char* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
63 | size_t PutEnd(char*) { RAPIDJSON_ASSERT(false); return 0; }
64 |
65 | private:
66 | BasicOStreamWrapper(const BasicOStreamWrapper&);
67 | BasicOStreamWrapper& operator=(const BasicOStreamWrapper&);
68 |
69 | StreamType& stream_;
70 | };
71 |
72 | typedef BasicOStreamWrapper OStreamWrapper;
73 | typedef BasicOStreamWrapper WOStreamWrapper;
74 |
75 | #ifdef __clang__
76 | RAPIDJSON_DIAG_POP
77 | #endif
78 |
79 | RAPIDJSON_NAMESPACE_END
80 |
81 | #endif // RAPIDJSON_OSTREAMWRAPPER_H_
82 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/rapidjson/ostreamwrapper.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_OSTREAMWRAPPER_H_
16 | #define RAPIDJSON_OSTREAMWRAPPER_H_
17 |
18 | #include "stream.h"
19 | #include
20 |
21 | #ifdef __clang__
22 | RAPIDJSON_DIAG_PUSH
23 | RAPIDJSON_DIAG_OFF(padded)
24 | #endif
25 |
26 | RAPIDJSON_NAMESPACE_BEGIN
27 |
28 | //! Wrapper of \c std::basic_ostream into RapidJSON's Stream concept.
29 | /*!
30 | The classes can be wrapped including but not limited to:
31 |
32 | - \c std::ostringstream
33 | - \c std::stringstream
34 | - \c std::wpstringstream
35 | - \c std::wstringstream
36 | - \c std::ifstream
37 | - \c std::fstream
38 | - \c std::wofstream
39 | - \c std::wfstream
40 |
41 | \tparam StreamType Class derived from \c std::basic_ostream.
42 | */
43 |
44 | template
45 | class BasicOStreamWrapper {
46 | public:
47 | typedef typename StreamType::char_type Ch;
48 | BasicOStreamWrapper(StreamType& stream) : stream_(stream) {}
49 |
50 | void Put(Ch c) {
51 | stream_.put(c);
52 | }
53 |
54 | void Flush() {
55 | stream_.flush();
56 | }
57 |
58 | // Not implemented
59 | char Peek() const { RAPIDJSON_ASSERT(false); return 0; }
60 | char Take() { RAPIDJSON_ASSERT(false); return 0; }
61 | size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; }
62 | char* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
63 | size_t PutEnd(char*) { RAPIDJSON_ASSERT(false); return 0; }
64 |
65 | private:
66 | BasicOStreamWrapper(const BasicOStreamWrapper&);
67 | BasicOStreamWrapper& operator=(const BasicOStreamWrapper&);
68 |
69 | StreamType& stream_;
70 | };
71 |
72 | typedef BasicOStreamWrapper OStreamWrapper;
73 | typedef BasicOStreamWrapper WOStreamWrapper;
74 |
75 | #ifdef __clang__
76 | RAPIDJSON_DIAG_POP
77 | #endif
78 |
79 | RAPIDJSON_NAMESPACE_END
80 |
81 | #endif // RAPIDJSON_OSTREAMWRAPPER_H_
82 |
--------------------------------------------------------------------------------
/server/image/Makefile:
--------------------------------------------------------------------------------
1 | GPU=1
2 | CUDNN=1
3 | OPENCV=1
4 | DEBUG=0
5 |
6 | ARCH= -gencode arch=compute_20,code=[sm_20,sm_21] \
7 | -gencode arch=compute_30,code=sm_30 \
8 | -gencode arch=compute_35,code=sm_35 \
9 | -gencode arch=compute_50,code=[sm_50,compute_50] \
10 | -gencode arch=compute_52,code=[sm_52,compute_52]
11 |
12 | # This is what I use, uncomment if you know your arch and want to specify
13 | # ARCH= -gencode arch=compute_52,code=compute_52
14 |
15 | VPATH=./src/
16 | EXEC=myapp
17 | OBJDIR=./obj/
18 |
19 | CC=gcc
20 | NVCC=nvcc
21 | OPTS=-Ofast
22 | LDFLAGS= -lm -pthread -L/usr/local/libevent/lib -levent
23 | COMMON=-I/usr/local/libevent/include
24 | CFLAGS=-Wall -Wfatal-errors
25 |
26 | ifeq ($(DEBUG), 1)
27 | OPTS=-O0 -g
28 | endif
29 |
30 | CFLAGS+=$(OPTS)
31 |
32 | ifeq ($(OPENCV), 1)
33 | COMMON+= -DOPENCV
34 | CFLAGS+= -DOPENCV
35 | LDFLAGS+= `pkg-config --libs opencv`
36 | COMMON+= `pkg-config --cflags opencv`
37 | endif
38 |
39 | ifeq ($(GPU), 1)
40 | COMMON+= -DGPU -I/usr/local/cuda/include/
41 | CFLAGS+= -DGPU
42 | LDFLAGS+= -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand
43 | endif
44 |
45 | ifeq ($(CUDNN), 1)
46 | COMMON+= -DCUDNN
47 | CFLAGS+= -DCUDNN
48 | LDFLAGS+= -lcudnn
49 | endif
50 |
51 | OBJ=main.o eventserver.o cJSON.o gemm.o utils.o cuda.o deconvolutional_layer.o convolutional_layer.o list.o image.o activations.o im2col.o col2im.o blas.o crop_layer.o dropout_layer.o maxpool_layer.o softmax_layer.o data.o matrix.o network.o connected_layer.o cost_layer.o parser.o option_list.o detection_layer.o captcha.o route_layer.o writing.o box.o nightmare.o normalization_layer.o avgpool_layer.o coco.o dice.o yolo.o detector.o layer.o compare.o regressor.o classifier.o local_layer.o swag.o shortcut_layer.o activation_layer.o rnn_layer.o gru_layer.o rnn.o rnn_vid.o crnn_layer.o demo.o tag.o cifar.o go.o batchnorm_layer.o art.o region_layer.o reorg_layer.o lsd.o super.o voxel.o tree.o
52 | ifeq ($(GPU), 1)
53 | LDFLAGS+= -lstdc++
54 | OBJ+=convolutional_kernels.o deconvolutional_kernels.o activation_kernels.o im2col_kernels.o col2im_kernels.o blas_kernels.o crop_layer_kernels.o dropout_layer_kernels.o maxpool_layer_kernels.o network_kernels.o avgpool_layer_kernels.o
55 | endif
56 |
57 | OBJS = $(addprefix $(OBJDIR), $(OBJ))
58 | DEPS = $(wildcard src/*.h) Makefile
59 |
60 | all: obj backup results $(EXEC)
61 |
62 | $(EXEC): $(OBJS)
63 | $(CC) $(COMMON) $(CFLAGS) $^ -o $@ $(LDFLAGS)
64 |
65 | $(OBJDIR)%.o: %.c $(DEPS)
66 | $(CC) $(COMMON) $(CFLAGS) -c $< -o $@
67 |
68 | $(OBJDIR)%.o: %.cu $(DEPS)
69 | $(NVCC) $(ARCH) $(COMMON) --compiler-options "$(CFLAGS)" -c $< -o $@
70 |
71 | obj:
72 | mkdir -p obj
73 | backup:
74 | mkdir -p backup
75 | results:
76 | mkdir -p results
77 |
78 | .PHONY: clean
79 |
80 | clean:
81 | rm -rf $(OBJS) $(EXEC)
82 |
83 |
--------------------------------------------------------------------------------
/client/ObjectDetector/rapidjson/memorybuffer.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_MEMORYBUFFER_H_
16 | #define RAPIDJSON_MEMORYBUFFER_H_
17 |
18 | #include "stream.h"
19 | #include "internal/stack.h"
20 |
21 | RAPIDJSON_NAMESPACE_BEGIN
22 |
23 | //! Represents an in-memory output byte stream.
24 | /*!
25 | This class is mainly for being wrapped by EncodedOutputStream or AutoUTFOutputStream.
26 |
27 | It is similar to FileWriteBuffer but the destination is an in-memory buffer instead of a file.
28 |
29 | Differences between MemoryBuffer and StringBuffer:
30 | 1. StringBuffer has Encoding but MemoryBuffer is only a byte buffer.
31 | 2. StringBuffer::GetString() returns a null-terminated string. MemoryBuffer::GetBuffer() returns a buffer without terminator.
32 |
33 | \tparam Allocator type for allocating memory buffer.
34 | \note implements Stream concept
35 | */
36 | template
37 | struct GenericMemoryBuffer {
38 | typedef char Ch; // byte
39 |
40 | GenericMemoryBuffer(Allocator* allocator = 0, size_t capacity = kDefaultCapacity) : stack_(allocator, capacity) {}
41 |
42 | void Put(Ch c) { *stack_.template Push() = c; }
43 | void Flush() {}
44 |
45 | void Clear() { stack_.Clear(); }
46 | void ShrinkToFit() { stack_.ShrinkToFit(); }
47 | Ch* Push(size_t count) { return stack_.template Push(count); }
48 | void Pop(size_t count) { stack_.template Pop(count); }
49 |
50 | const Ch* GetBuffer() const {
51 | return stack_.template Bottom();
52 | }
53 |
54 | size_t GetSize() const { return stack_.GetSize(); }
55 |
56 | static const size_t kDefaultCapacity = 256;
57 | mutable internal::Stack stack_;
58 | };
59 |
60 | typedef GenericMemoryBuffer<> MemoryBuffer;
61 |
62 | //! Implement specialized version of PutN() with memset() for better performance.
63 | template<>
64 | inline void PutN(MemoryBuffer& memoryBuffer, char c, size_t n) {
65 | std::memset(memoryBuffer.stack_.Push(n), c, n * sizeof(c));
66 | }
67 |
68 | RAPIDJSON_NAMESPACE_END
69 |
70 | #endif // RAPIDJSON_MEMORYBUFFER_H_
71 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/inc/memorybuffer.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_MEMORYBUFFER_H_
16 | #define RAPIDJSON_MEMORYBUFFER_H_
17 |
18 | #include "stream.h"
19 | #include "internal/stack.h"
20 |
21 | RAPIDJSON_NAMESPACE_BEGIN
22 |
23 | //! Represents an in-memory output byte stream.
24 | /*!
25 | This class is mainly for being wrapped by EncodedOutputStream or AutoUTFOutputStream.
26 |
27 | It is similar to FileWriteBuffer but the destination is an in-memory buffer instead of a file.
28 |
29 | Differences between MemoryBuffer and StringBuffer:
30 | 1. StringBuffer has Encoding but MemoryBuffer is only a byte buffer.
31 | 2. StringBuffer::GetString() returns a null-terminated string. MemoryBuffer::GetBuffer() returns a buffer without terminator.
32 |
33 | \tparam Allocator type for allocating memory buffer.
34 | \note implements Stream concept
35 | */
36 | template
37 | struct GenericMemoryBuffer {
38 | typedef char Ch; // byte
39 |
40 | GenericMemoryBuffer(Allocator* allocator = 0, size_t capacity = kDefaultCapacity) : stack_(allocator, capacity) {}
41 |
42 | void Put(Ch c) { *stack_.template Push() = c; }
43 | void Flush() {}
44 |
45 | void Clear() { stack_.Clear(); }
46 | void ShrinkToFit() { stack_.ShrinkToFit(); }
47 | Ch* Push(size_t count) { return stack_.template Push(count); }
48 | void Pop(size_t count) { stack_.template Pop(count); }
49 |
50 | const Ch* GetBuffer() const {
51 | return stack_.template Bottom();
52 | }
53 |
54 | size_t GetSize() const { return stack_.GetSize(); }
55 |
56 | static const size_t kDefaultCapacity = 256;
57 | mutable internal::Stack stack_;
58 | };
59 |
60 | typedef GenericMemoryBuffer<> MemoryBuffer;
61 |
62 | //! Implement specialized version of PutN() with memset() for better performance.
63 | template<>
64 | inline void PutN(MemoryBuffer& memoryBuffer, char c, size_t n) {
65 | std::memset(memoryBuffer.stack_.Push(n), c, n * sizeof(c));
66 | }
67 |
68 | RAPIDJSON_NAMESPACE_END
69 |
70 | #endif // RAPIDJSON_MEMORYBUFFER_H_
71 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/rapidjson/memorybuffer.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_MEMORYBUFFER_H_
16 | #define RAPIDJSON_MEMORYBUFFER_H_
17 |
18 | #include "stream.h"
19 | #include "internal/stack.h"
20 |
21 | RAPIDJSON_NAMESPACE_BEGIN
22 |
23 | //! Represents an in-memory output byte stream.
24 | /*!
25 | This class is mainly for being wrapped by EncodedOutputStream or AutoUTFOutputStream.
26 |
27 | It is similar to FileWriteBuffer but the destination is an in-memory buffer instead of a file.
28 |
29 | Differences between MemoryBuffer and StringBuffer:
30 | 1. StringBuffer has Encoding but MemoryBuffer is only a byte buffer.
31 | 2. StringBuffer::GetString() returns a null-terminated string. MemoryBuffer::GetBuffer() returns a buffer without terminator.
32 |
33 | \tparam Allocator type for allocating memory buffer.
34 | \note implements Stream concept
35 | */
36 | template
37 | struct GenericMemoryBuffer {
38 | typedef char Ch; // byte
39 |
40 | GenericMemoryBuffer(Allocator* allocator = 0, size_t capacity = kDefaultCapacity) : stack_(allocator, capacity) {}
41 |
42 | void Put(Ch c) { *stack_.template Push() = c; }
43 | void Flush() {}
44 |
45 | void Clear() { stack_.Clear(); }
46 | void ShrinkToFit() { stack_.ShrinkToFit(); }
47 | Ch* Push(size_t count) { return stack_.template Push(count); }
48 | void Pop(size_t count) { stack_.template Pop(count); }
49 |
50 | const Ch* GetBuffer() const {
51 | return stack_.template Bottom();
52 | }
53 |
54 | size_t GetSize() const { return stack_.GetSize(); }
55 |
56 | static const size_t kDefaultCapacity = 256;
57 | mutable internal::Stack stack_;
58 | };
59 |
60 | typedef GenericMemoryBuffer<> MemoryBuffer;
61 |
62 | //! Implement specialized version of PutN() with memset() for better performance.
63 | template<>
64 | inline void PutN(MemoryBuffer& memoryBuffer, char c, size_t n) {
65 | std::memset(memoryBuffer.stack_.Push(n), c, n * sizeof(c));
66 | }
67 |
68 | RAPIDJSON_NAMESPACE_END
69 |
70 | #endif // RAPIDJSON_MEMORYBUFFER_H_
71 |
--------------------------------------------------------------------------------
/server/video/Makefile:
--------------------------------------------------------------------------------
1 | GPU=1
2 | CUDNN=1
3 | OPENCV=1
4 | DEBUG=0
5 |
6 | ARCH= -gencode arch=compute_20,code=[sm_20,sm_21] \
7 | -gencode arch=compute_30,code=sm_30 \
8 | -gencode arch=compute_35,code=sm_35 \
9 | -gencode arch=compute_50,code=[sm_50,compute_50] \
10 | -gencode arch=compute_52,code=[sm_52,compute_52]
11 |
12 | # This is what I use, uncomment if you know your arch and want to specify
13 | # ARCH= -gencode arch=compute_52,code=compute_52
14 |
15 | VPATH=./src/
16 | EXEC=myapp
17 | OBJDIR=./obj/
18 |
19 | CC=gcc
20 | NVCC=nvcc
21 | OPTS=-Ofast
22 | LDFLAGS= -lm -pthread -L/usr/local/mediawork/ffmpeg/lib -lavcodec -lavfilter -lpostproc -lavformat -lswresample -lavdevice -lavutil -lswscale -lm
23 | COMMON=-I/usr/local/mediawork/ffmpeg/include
24 | CFLAGS=-Wall -Wfatal-errors
25 |
26 | ifeq ($(DEBUG), 1)
27 | OPTS=-O0 -g
28 | endif
29 |
30 | CFLAGS+=$(OPTS)
31 |
32 | ifeq ($(OPENCV), 1)
33 | COMMON+= -DOPENCV
34 | CFLAGS+= -DOPENCV
35 | LDFLAGS+= `pkg-config --libs opencv`
36 | COMMON+= `pkg-config --cflags opencv`
37 | endif
38 |
39 | ifeq ($(GPU), 1)
40 | COMMON+= -DGPU -I/usr/local/cuda/include/
41 | CFLAGS+= -DGPU
42 | LDFLAGS+= -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand
43 | endif
44 |
45 | ifeq ($(CUDNN), 1)
46 | COMMON+= -DCUDNN
47 | CFLAGS+= -DCUDNN
48 | LDFLAGS+= -lcudnn
49 | endif
50 |
51 | OBJ=main.o gemm.o utils.o cuda.o deconvolutional_layer.o convolutional_layer.o list.o image.o activations.o im2col.o col2im.o blas.o crop_layer.o dropout_layer.o maxpool_layer.o softmax_layer.o data.o matrix.o network.o connected_layer.o cost_layer.o parser.o option_list.o detection_layer.o captcha.o route_layer.o writing.o box.o nightmare.o normalization_layer.o avgpool_layer.o coco.o dice.o yolo.o detector.o layer.o compare.o regressor.o classifier.o local_layer.o swag.o shortcut_layer.o activation_layer.o rnn_layer.o gru_layer.o rnn.o rnn_vid.o crnn_layer.o demo.o tag.o cifar.o go.o batchnorm_layer.o art.o region_layer.o reorg_layer.o lsd.o super.o voxel.o tree.o
52 | ifeq ($(GPU), 1)
53 | LDFLAGS+= -lstdc++
54 | OBJ+=convolutional_kernels.o deconvolutional_kernels.o activation_kernels.o im2col_kernels.o col2im_kernels.o blas_kernels.o crop_layer_kernels.o dropout_layer_kernels.o maxpool_layer_kernels.o network_kernels.o avgpool_layer_kernels.o
55 | endif
56 |
57 | OBJS = $(addprefix $(OBJDIR), $(OBJ))
58 | DEPS = $(wildcard src/*.h) Makefile
59 |
60 | all: obj backup results $(EXEC)
61 |
62 | $(EXEC): $(OBJS)
63 | $(CC) $(COMMON) $(CFLAGS) $^ -o $@ $(LDFLAGS)
64 |
65 | $(OBJDIR)%.o: %.c $(DEPS)
66 | $(CC) $(COMMON) $(CFLAGS) -c $< -o $@
67 |
68 | $(OBJDIR)%.o: %.cu $(DEPS)
69 | $(NVCC) $(ARCH) $(COMMON) --compiler-options "$(CFLAGS)" -c $< -o $@
70 |
71 | obj:
72 | mkdir -p obj
73 | backup:
74 | mkdir -p backup
75 | results:
76 | mkdir -p results
77 |
78 | .PHONY: clean
79 |
80 | clean:
81 | rm -rf $(OBJS) $(EXEC)
82 |
83 |
--------------------------------------------------------------------------------
/client/ObjectDetector/rapidjson/memorystream.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_MEMORYSTREAM_H_
16 | #define RAPIDJSON_MEMORYSTREAM_H_
17 |
18 | #include "stream.h"
19 |
20 | #ifdef __clang__
21 | RAPIDJSON_DIAG_PUSH
22 | RAPIDJSON_DIAG_OFF(unreachable-code)
23 | RAPIDJSON_DIAG_OFF(missing-noreturn)
24 | #endif
25 |
26 | RAPIDJSON_NAMESPACE_BEGIN
27 |
28 | //! Represents an in-memory input byte stream.
29 | /*!
30 | This class is mainly for being wrapped by EncodedInputStream or AutoUTFInputStream.
31 |
32 | It is similar to FileReadBuffer but the source is an in-memory buffer instead of a file.
33 |
34 | Differences between MemoryStream and StringStream:
35 | 1. StringStream has encoding but MemoryStream is a byte stream.
36 | 2. MemoryStream needs size of the source buffer and the buffer don't need to be null terminated. StringStream assume null-terminated string as source.
37 | 3. MemoryStream supports Peek4() for encoding detection. StringStream is specified with an encoding so it should not have Peek4().
38 | \note implements Stream concept
39 | */
40 | struct MemoryStream {
41 | typedef char Ch; // byte
42 |
43 | MemoryStream(const Ch *src, size_t size) : src_(src), begin_(src), end_(src + size), size_(size) {}
44 |
45 | Ch Peek() const { return RAPIDJSON_UNLIKELY(src_ == end_) ? '\0' : *src_; }
46 | Ch Take() { return RAPIDJSON_UNLIKELY(src_ == end_) ? '\0' : *src_++; }
47 | size_t Tell() const { return static_cast(src_ - begin_); }
48 |
49 | Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
50 | void Put(Ch) { RAPIDJSON_ASSERT(false); }
51 | void Flush() { RAPIDJSON_ASSERT(false); }
52 | size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
53 |
54 | // For encoding detection only.
55 | const Ch* Peek4() const {
56 | return Tell() + 4 <= size_ ? src_ : 0;
57 | }
58 |
59 | const Ch* src_; //!< Current read position.
60 | const Ch* begin_; //!< Original head of the string.
61 | const Ch* end_; //!< End of stream.
62 | size_t size_; //!< Size of the stream.
63 | };
64 |
65 | RAPIDJSON_NAMESPACE_END
66 |
67 | #ifdef __clang__
68 | RAPIDJSON_DIAG_POP
69 | #endif
70 |
71 | #endif // RAPIDJSON_MEMORYBUFFER_H_
72 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/inc/memorystream.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_MEMORYSTREAM_H_
16 | #define RAPIDJSON_MEMORYSTREAM_H_
17 |
18 | #include "stream.h"
19 |
20 | #ifdef __clang__
21 | RAPIDJSON_DIAG_PUSH
22 | RAPIDJSON_DIAG_OFF(unreachable-code)
23 | RAPIDJSON_DIAG_OFF(missing-noreturn)
24 | #endif
25 |
26 | RAPIDJSON_NAMESPACE_BEGIN
27 |
28 | //! Represents an in-memory input byte stream.
29 | /*!
30 | This class is mainly for being wrapped by EncodedInputStream or AutoUTFInputStream.
31 |
32 | It is similar to FileReadBuffer but the source is an in-memory buffer instead of a file.
33 |
34 | Differences between MemoryStream and StringStream:
35 | 1. StringStream has encoding but MemoryStream is a byte stream.
36 | 2. MemoryStream needs size of the source buffer and the buffer don't need to be null terminated. StringStream assume null-terminated string as source.
37 | 3. MemoryStream supports Peek4() for encoding detection. StringStream is specified with an encoding so it should not have Peek4().
38 | \note implements Stream concept
39 | */
40 | struct MemoryStream {
41 | typedef char Ch; // byte
42 |
43 | MemoryStream(const Ch *src, size_t size) : src_(src), begin_(src), end_(src + size), size_(size) {}
44 |
45 | Ch Peek() const { return RAPIDJSON_UNLIKELY(src_ == end_) ? '\0' : *src_; }
46 | Ch Take() { return RAPIDJSON_UNLIKELY(src_ == end_) ? '\0' : *src_++; }
47 | size_t Tell() const { return static_cast(src_ - begin_); }
48 |
49 | Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
50 | void Put(Ch) { RAPIDJSON_ASSERT(false); }
51 | void Flush() { RAPIDJSON_ASSERT(false); }
52 | size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
53 |
54 | // For encoding detection only.
55 | const Ch* Peek4() const {
56 | return Tell() + 4 <= size_ ? src_ : 0;
57 | }
58 |
59 | const Ch* src_; //!< Current read position.
60 | const Ch* begin_; //!< Original head of the string.
61 | const Ch* end_; //!< End of stream.
62 | size_t size_; //!< Size of the stream.
63 | };
64 |
65 | RAPIDJSON_NAMESPACE_END
66 |
67 | #ifdef __clang__
68 | RAPIDJSON_DIAG_POP
69 | #endif
70 |
71 | #endif // RAPIDJSON_MEMORYBUFFER_H_
72 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/rapidjson/memorystream.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_MEMORYSTREAM_H_
16 | #define RAPIDJSON_MEMORYSTREAM_H_
17 |
18 | #include "stream.h"
19 |
20 | #ifdef __clang__
21 | RAPIDJSON_DIAG_PUSH
22 | RAPIDJSON_DIAG_OFF(unreachable-code)
23 | RAPIDJSON_DIAG_OFF(missing-noreturn)
24 | #endif
25 |
26 | RAPIDJSON_NAMESPACE_BEGIN
27 |
28 | //! Represents an in-memory input byte stream.
29 | /*!
30 | This class is mainly for being wrapped by EncodedInputStream or AutoUTFInputStream.
31 |
32 | It is similar to FileReadBuffer but the source is an in-memory buffer instead of a file.
33 |
34 | Differences between MemoryStream and StringStream:
35 | 1. StringStream has encoding but MemoryStream is a byte stream.
36 | 2. MemoryStream needs size of the source buffer and the buffer don't need to be null terminated. StringStream assume null-terminated string as source.
37 | 3. MemoryStream supports Peek4() for encoding detection. StringStream is specified with an encoding so it should not have Peek4().
38 | \note implements Stream concept
39 | */
40 | struct MemoryStream {
41 | typedef char Ch; // byte
42 |
43 | MemoryStream(const Ch *src, size_t size) : src_(src), begin_(src), end_(src + size), size_(size) {}
44 |
45 | Ch Peek() const { return RAPIDJSON_UNLIKELY(src_ == end_) ? '\0' : *src_; }
46 | Ch Take() { return RAPIDJSON_UNLIKELY(src_ == end_) ? '\0' : *src_++; }
47 | size_t Tell() const { return static_cast(src_ - begin_); }
48 |
49 | Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
50 | void Put(Ch) { RAPIDJSON_ASSERT(false); }
51 | void Flush() { RAPIDJSON_ASSERT(false); }
52 | size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
53 |
54 | // For encoding detection only.
55 | const Ch* Peek4() const {
56 | return Tell() + 4 <= size_ ? src_ : 0;
57 | }
58 |
59 | const Ch* src_; //!< Current read position.
60 | const Ch* begin_; //!< Original head of the string.
61 | const Ch* end_; //!< End of stream.
62 | size_t size_; //!< Size of the stream.
63 | };
64 |
65 | RAPIDJSON_NAMESPACE_END
66 |
67 | #ifdef __clang__
68 | RAPIDJSON_DIAG_POP
69 | #endif
70 |
71 | #endif // RAPIDJSON_MEMORYBUFFER_H_
72 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/Makefile.cmake:
--------------------------------------------------------------------------------
1 | # CMAKE generated file: DO NOT EDIT!
2 | # Generated by "Unix Makefiles" Generator, CMake Version 2.8
3 |
4 | # The generator used is:
5 | SET(CMAKE_DEPENDS_GENERATOR "Unix Makefiles")
6 |
7 | # The top level Makefile was generated from the following files:
8 | SET(CMAKE_MAKEFILE_DEPENDS
9 | "CMakeCache.txt"
10 | "../CMakeLists.txt"
11 | "CMakeFiles/2.8.12.2/CMakeCCompiler.cmake"
12 | "CMakeFiles/2.8.12.2/CMakeCXXCompiler.cmake"
13 | "CMakeFiles/2.8.12.2/CMakeSystem.cmake"
14 | "/usr/share/cmake-2.8/Modules/CMakeCCompiler.cmake.in"
15 | "/usr/share/cmake-2.8/Modules/CMakeCCompilerABI.c"
16 | "/usr/share/cmake-2.8/Modules/CMakeCInformation.cmake"
17 | "/usr/share/cmake-2.8/Modules/CMakeCXXCompiler.cmake.in"
18 | "/usr/share/cmake-2.8/Modules/CMakeCXXCompilerABI.cpp"
19 | "/usr/share/cmake-2.8/Modules/CMakeCXXInformation.cmake"
20 | "/usr/share/cmake-2.8/Modules/CMakeClDeps.cmake"
21 | "/usr/share/cmake-2.8/Modules/CMakeCommonLanguageInclude.cmake"
22 | "/usr/share/cmake-2.8/Modules/CMakeDetermineCCompiler.cmake"
23 | "/usr/share/cmake-2.8/Modules/CMakeDetermineCXXCompiler.cmake"
24 | "/usr/share/cmake-2.8/Modules/CMakeDetermineCompiler.cmake"
25 | "/usr/share/cmake-2.8/Modules/CMakeDetermineCompilerABI.cmake"
26 | "/usr/share/cmake-2.8/Modules/CMakeDetermineCompilerId.cmake"
27 | "/usr/share/cmake-2.8/Modules/CMakeDetermineSystem.cmake"
28 | "/usr/share/cmake-2.8/Modules/CMakeFindBinUtils.cmake"
29 | "/usr/share/cmake-2.8/Modules/CMakeGenericSystem.cmake"
30 | "/usr/share/cmake-2.8/Modules/CMakeParseImplicitLinkInfo.cmake"
31 | "/usr/share/cmake-2.8/Modules/CMakeSystem.cmake.in"
32 | "/usr/share/cmake-2.8/Modules/CMakeSystemSpecificInformation.cmake"
33 | "/usr/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake"
34 | "/usr/share/cmake-2.8/Modules/CMakeTestCXXCompiler.cmake"
35 | "/usr/share/cmake-2.8/Modules/CMakeTestCompilerCommon.cmake"
36 | "/usr/share/cmake-2.8/Modules/CMakeUnixFindMake.cmake"
37 | "/usr/share/cmake-2.8/Modules/Compiler/GNU-C.cmake"
38 | "/usr/share/cmake-2.8/Modules/Compiler/GNU-CXX.cmake"
39 | "/usr/share/cmake-2.8/Modules/Compiler/GNU.cmake"
40 | "/usr/share/cmake-2.8/Modules/MultiArchCross.cmake"
41 | "/usr/share/cmake-2.8/Modules/Platform/Linux-CXX.cmake"
42 | "/usr/share/cmake-2.8/Modules/Platform/Linux-GNU-C.cmake"
43 | "/usr/share/cmake-2.8/Modules/Platform/Linux-GNU-CXX.cmake"
44 | "/usr/share/cmake-2.8/Modules/Platform/Linux-GNU.cmake"
45 | "/usr/share/cmake-2.8/Modules/Platform/Linux.cmake"
46 | "/usr/share/cmake-2.8/Modules/Platform/UnixPaths.cmake"
47 | )
48 |
49 | # The corresponding makefile is:
50 | SET(CMAKE_MAKEFILE_OUTPUTS
51 | "Makefile"
52 | "CMakeFiles/cmake.check_cache"
53 | )
54 |
55 | # Byproducts of CMake generate step:
56 | SET(CMAKE_MAKEFILE_PRODUCTS
57 | "CMakeFiles/2.8.12.2/CMakeSystem.cmake"
58 | "CMakeFiles/2.8.12.2/CMakeCCompiler.cmake"
59 | "CMakeFiles/2.8.12.2/CMakeCXXCompiler.cmake"
60 | "CMakeFiles/2.8.12.2/CMakeCCompiler.cmake"
61 | "CMakeFiles/2.8.12.2/CMakeCXXCompiler.cmake"
62 | "CMakeFiles/CMakeDirectoryInformation.cmake"
63 | )
64 |
65 | # Dependency information for all targets:
66 | SET(CMAKE_DEPEND_INFO_FILES
67 | "CMakeFiles/client.dir/DependInfo.cmake"
68 | )
69 |
--------------------------------------------------------------------------------
/client/ObjectDetector/rapidjson/internal/ieee754.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_IEEE754_
16 | #define RAPIDJSON_IEEE754_
17 |
18 | #include "../rapidjson.h"
19 |
20 | RAPIDJSON_NAMESPACE_BEGIN
21 | namespace internal {
22 |
23 | class Double {
24 | public:
25 | Double() {}
26 | Double(double d) : d_(d) {}
27 | Double(uint64_t u) : u_(u) {}
28 |
29 | double Value() const { return d_; }
30 | uint64_t Uint64Value() const { return u_; }
31 |
32 | double NextPositiveDouble() const {
33 | RAPIDJSON_ASSERT(!Sign());
34 | return Double(u_ + 1).Value();
35 | }
36 |
37 | bool Sign() const { return (u_ & kSignMask) != 0; }
38 | uint64_t Significand() const { return u_ & kSignificandMask; }
39 | int Exponent() const { return static_cast(((u_ & kExponentMask) >> kSignificandSize) - kExponentBias); }
40 |
41 | bool IsNan() const { return (u_ & kExponentMask) == kExponentMask && Significand() != 0; }
42 | bool IsInf() const { return (u_ & kExponentMask) == kExponentMask && Significand() == 0; }
43 | bool IsNanOrInf() const { return (u_ & kExponentMask) == kExponentMask; }
44 | bool IsNormal() const { return (u_ & kExponentMask) != 0 || Significand() == 0; }
45 | bool IsZero() const { return (u_ & (kExponentMask | kSignificandMask)) == 0; }
46 |
47 | uint64_t IntegerSignificand() const { return IsNormal() ? Significand() | kHiddenBit : Significand(); }
48 | int IntegerExponent() const { return (IsNormal() ? Exponent() : kDenormalExponent) - kSignificandSize; }
49 | uint64_t ToBias() const { return (u_ & kSignMask) ? ~u_ + 1 : u_ | kSignMask; }
50 |
51 | static int EffectiveSignificandSize(int order) {
52 | if (order >= -1021)
53 | return 53;
54 | else if (order <= -1074)
55 | return 0;
56 | else
57 | return order + 1074;
58 | }
59 |
60 | private:
61 | static const int kSignificandSize = 52;
62 | static const int kExponentBias = 0x3FF;
63 | static const int kDenormalExponent = 1 - kExponentBias;
64 | static const uint64_t kSignMask = RAPIDJSON_UINT64_C2(0x80000000, 0x00000000);
65 | static const uint64_t kExponentMask = RAPIDJSON_UINT64_C2(0x7FF00000, 0x00000000);
66 | static const uint64_t kSignificandMask = RAPIDJSON_UINT64_C2(0x000FFFFF, 0xFFFFFFFF);
67 | static const uint64_t kHiddenBit = RAPIDJSON_UINT64_C2(0x00100000, 0x00000000);
68 |
69 | union {
70 | double d_;
71 | uint64_t u_;
72 | };
73 | };
74 |
75 | } // namespace internal
76 | RAPIDJSON_NAMESPACE_END
77 |
78 | #endif // RAPIDJSON_IEEE754_
79 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/inc/internal/ieee754.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_IEEE754_
16 | #define RAPIDJSON_IEEE754_
17 |
18 | #include "../rapidjson.h"
19 |
20 | RAPIDJSON_NAMESPACE_BEGIN
21 | namespace internal {
22 |
23 | class Double {
24 | public:
25 | Double() {}
26 | Double(double d) : d_(d) {}
27 | Double(uint64_t u) : u_(u) {}
28 |
29 | double Value() const { return d_; }
30 | uint64_t Uint64Value() const { return u_; }
31 |
32 | double NextPositiveDouble() const {
33 | RAPIDJSON_ASSERT(!Sign());
34 | return Double(u_ + 1).Value();
35 | }
36 |
37 | bool Sign() const { return (u_ & kSignMask) != 0; }
38 | uint64_t Significand() const { return u_ & kSignificandMask; }
39 | int Exponent() const { return static_cast(((u_ & kExponentMask) >> kSignificandSize) - kExponentBias); }
40 |
41 | bool IsNan() const { return (u_ & kExponentMask) == kExponentMask && Significand() != 0; }
42 | bool IsInf() const { return (u_ & kExponentMask) == kExponentMask && Significand() == 0; }
43 | bool IsNanOrInf() const { return (u_ & kExponentMask) == kExponentMask; }
44 | bool IsNormal() const { return (u_ & kExponentMask) != 0 || Significand() == 0; }
45 | bool IsZero() const { return (u_ & (kExponentMask | kSignificandMask)) == 0; }
46 |
47 | uint64_t IntegerSignificand() const { return IsNormal() ? Significand() | kHiddenBit : Significand(); }
48 | int IntegerExponent() const { return (IsNormal() ? Exponent() : kDenormalExponent) - kSignificandSize; }
49 | uint64_t ToBias() const { return (u_ & kSignMask) ? ~u_ + 1 : u_ | kSignMask; }
50 |
51 | static int EffectiveSignificandSize(int order) {
52 | if (order >= -1021)
53 | return 53;
54 | else if (order <= -1074)
55 | return 0;
56 | else
57 | return order + 1074;
58 | }
59 |
60 | private:
61 | static const int kSignificandSize = 52;
62 | static const int kExponentBias = 0x3FF;
63 | static const int kDenormalExponent = 1 - kExponentBias;
64 | static const uint64_t kSignMask = RAPIDJSON_UINT64_C2(0x80000000, 0x00000000);
65 | static const uint64_t kExponentMask = RAPIDJSON_UINT64_C2(0x7FF00000, 0x00000000);
66 | static const uint64_t kSignificandMask = RAPIDJSON_UINT64_C2(0x000FFFFF, 0xFFFFFFFF);
67 | static const uint64_t kHiddenBit = RAPIDJSON_UINT64_C2(0x00100000, 0x00000000);
68 |
69 | union {
70 | double d_;
71 | uint64_t u_;
72 | };
73 | };
74 |
75 | } // namespace internal
76 | RAPIDJSON_NAMESPACE_END
77 |
78 | #endif // RAPIDJSON_IEEE754_
79 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/rapidjson/internal/ieee754.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_IEEE754_
16 | #define RAPIDJSON_IEEE754_
17 |
18 | #include "../rapidjson.h"
19 |
20 | RAPIDJSON_NAMESPACE_BEGIN
21 | namespace internal {
22 |
23 | class Double {
24 | public:
25 | Double() {}
26 | Double(double d) : d_(d) {}
27 | Double(uint64_t u) : u_(u) {}
28 |
29 | double Value() const { return d_; }
30 | uint64_t Uint64Value() const { return u_; }
31 |
32 | double NextPositiveDouble() const {
33 | RAPIDJSON_ASSERT(!Sign());
34 | return Double(u_ + 1).Value();
35 | }
36 |
37 | bool Sign() const { return (u_ & kSignMask) != 0; }
38 | uint64_t Significand() const { return u_ & kSignificandMask; }
39 | int Exponent() const { return static_cast(((u_ & kExponentMask) >> kSignificandSize) - kExponentBias); }
40 |
41 | bool IsNan() const { return (u_ & kExponentMask) == kExponentMask && Significand() != 0; }
42 | bool IsInf() const { return (u_ & kExponentMask) == kExponentMask && Significand() == 0; }
43 | bool IsNanOrInf() const { return (u_ & kExponentMask) == kExponentMask; }
44 | bool IsNormal() const { return (u_ & kExponentMask) != 0 || Significand() == 0; }
45 | bool IsZero() const { return (u_ & (kExponentMask | kSignificandMask)) == 0; }
46 |
47 | uint64_t IntegerSignificand() const { return IsNormal() ? Significand() | kHiddenBit : Significand(); }
48 | int IntegerExponent() const { return (IsNormal() ? Exponent() : kDenormalExponent) - kSignificandSize; }
49 | uint64_t ToBias() const { return (u_ & kSignMask) ? ~u_ + 1 : u_ | kSignMask; }
50 |
51 | static int EffectiveSignificandSize(int order) {
52 | if (order >= -1021)
53 | return 53;
54 | else if (order <= -1074)
55 | return 0;
56 | else
57 | return order + 1074;
58 | }
59 |
60 | private:
61 | static const int kSignificandSize = 52;
62 | static const int kExponentBias = 0x3FF;
63 | static const int kDenormalExponent = 1 - kExponentBias;
64 | static const uint64_t kSignMask = RAPIDJSON_UINT64_C2(0x80000000, 0x00000000);
65 | static const uint64_t kExponentMask = RAPIDJSON_UINT64_C2(0x7FF00000, 0x00000000);
66 | static const uint64_t kSignificandMask = RAPIDJSON_UINT64_C2(0x000FFFFF, 0xFFFFFFFF);
67 | static const uint64_t kHiddenBit = RAPIDJSON_UINT64_C2(0x00100000, 0x00000000);
68 |
69 | union {
70 | double d_;
71 | uint64_t u_;
72 | };
73 | };
74 |
75 | } // namespace internal
76 | RAPIDJSON_NAMESPACE_END
77 |
78 | #endif // RAPIDJSON_IEEE754_
79 |
--------------------------------------------------------------------------------
/client/ObjectDetector/rapidjson/filereadstream.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_FILEREADSTREAM_H_
16 | #define RAPIDJSON_FILEREADSTREAM_H_
17 |
18 | #include "stream.h"
19 | #include
20 |
21 | #ifdef __clang__
22 | RAPIDJSON_DIAG_PUSH
23 | RAPIDJSON_DIAG_OFF(padded)
24 | RAPIDJSON_DIAG_OFF(unreachable-code)
25 | RAPIDJSON_DIAG_OFF(missing-noreturn)
26 | #endif
27 |
28 | RAPIDJSON_NAMESPACE_BEGIN
29 |
30 | //! File byte stream for input using fread().
31 | /*!
32 | \note implements Stream concept
33 | */
34 | class FileReadStream {
35 | public:
36 | typedef char Ch; //!< Character type (byte).
37 |
38 | //! Constructor.
39 | /*!
40 | \param fp File pointer opened for read.
41 | \param buffer user-supplied buffer.
42 | \param bufferSize size of buffer in bytes. Must >=4 bytes.
43 | */
44 | FileReadStream(std::FILE* fp, char* buffer, size_t bufferSize) : fp_(fp), buffer_(buffer), bufferSize_(bufferSize), bufferLast_(0), current_(buffer_), readCount_(0), count_(0), eof_(false) {
45 | RAPIDJSON_ASSERT(fp_ != 0);
46 | RAPIDJSON_ASSERT(bufferSize >= 4);
47 | Read();
48 | }
49 |
50 | Ch Peek() const { return *current_; }
51 | Ch Take() { Ch c = *current_; Read(); return c; }
52 | size_t Tell() const { return count_ + static_cast(current_ - buffer_); }
53 |
54 | // Not implemented
55 | void Put(Ch) { RAPIDJSON_ASSERT(false); }
56 | void Flush() { RAPIDJSON_ASSERT(false); }
57 | Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
58 | size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
59 |
60 | // For encoding detection only.
61 | const Ch* Peek4() const {
62 | return (current_ + 4 <= bufferLast_) ? current_ : 0;
63 | }
64 |
65 | private:
66 | void Read() {
67 | if (current_ < bufferLast_)
68 | ++current_;
69 | else if (!eof_) {
70 | count_ += readCount_;
71 | readCount_ = fread(buffer_, 1, bufferSize_, fp_);
72 | bufferLast_ = buffer_ + readCount_ - 1;
73 | current_ = buffer_;
74 |
75 | if (readCount_ < bufferSize_) {
76 | buffer_[readCount_] = '\0';
77 | ++bufferLast_;
78 | eof_ = true;
79 | }
80 | }
81 | }
82 |
83 | std::FILE* fp_;
84 | Ch *buffer_;
85 | size_t bufferSize_;
86 | Ch *bufferLast_;
87 | Ch *current_;
88 | size_t readCount_;
89 | size_t count_; //!< Number of characters read
90 | bool eof_;
91 | };
92 |
93 | RAPIDJSON_NAMESPACE_END
94 |
95 | #ifdef __clang__
96 | RAPIDJSON_DIAG_POP
97 | #endif
98 |
99 | #endif // RAPIDJSON_FILESTREAM_H_
100 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/inc/filereadstream.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_FILEREADSTREAM_H_
16 | #define RAPIDJSON_FILEREADSTREAM_H_
17 |
18 | #include "stream.h"
19 | #include
20 |
21 | #ifdef __clang__
22 | RAPIDJSON_DIAG_PUSH
23 | RAPIDJSON_DIAG_OFF(padded)
24 | RAPIDJSON_DIAG_OFF(unreachable-code)
25 | RAPIDJSON_DIAG_OFF(missing-noreturn)
26 | #endif
27 |
28 | RAPIDJSON_NAMESPACE_BEGIN
29 |
30 | //! File byte stream for input using fread().
31 | /*!
32 | \note implements Stream concept
33 | */
34 | class FileReadStream {
35 | public:
36 | typedef char Ch; //!< Character type (byte).
37 |
38 | //! Constructor.
39 | /*!
40 | \param fp File pointer opened for read.
41 | \param buffer user-supplied buffer.
42 | \param bufferSize size of buffer in bytes. Must >=4 bytes.
43 | */
44 | FileReadStream(std::FILE* fp, char* buffer, size_t bufferSize) : fp_(fp), buffer_(buffer), bufferSize_(bufferSize), bufferLast_(0), current_(buffer_), readCount_(0), count_(0), eof_(false) {
45 | RAPIDJSON_ASSERT(fp_ != 0);
46 | RAPIDJSON_ASSERT(bufferSize >= 4);
47 | Read();
48 | }
49 |
50 | Ch Peek() const { return *current_; }
51 | Ch Take() { Ch c = *current_; Read(); return c; }
52 | size_t Tell() const { return count_ + static_cast(current_ - buffer_); }
53 |
54 | // Not implemented
55 | void Put(Ch) { RAPIDJSON_ASSERT(false); }
56 | void Flush() { RAPIDJSON_ASSERT(false); }
57 | Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
58 | size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
59 |
60 | // For encoding detection only.
61 | const Ch* Peek4() const {
62 | return (current_ + 4 <= bufferLast_) ? current_ : 0;
63 | }
64 |
65 | private:
66 | void Read() {
67 | if (current_ < bufferLast_)
68 | ++current_;
69 | else if (!eof_) {
70 | count_ += readCount_;
71 | readCount_ = fread(buffer_, 1, bufferSize_, fp_);
72 | bufferLast_ = buffer_ + readCount_ - 1;
73 | current_ = buffer_;
74 |
75 | if (readCount_ < bufferSize_) {
76 | buffer_[readCount_] = '\0';
77 | ++bufferLast_;
78 | eof_ = true;
79 | }
80 | }
81 | }
82 |
83 | std::FILE* fp_;
84 | Ch *buffer_;
85 | size_t bufferSize_;
86 | Ch *bufferLast_;
87 | Ch *current_;
88 | size_t readCount_;
89 | size_t count_; //!< Number of characters read
90 | bool eof_;
91 | };
92 |
93 | RAPIDJSON_NAMESPACE_END
94 |
95 | #ifdef __clang__
96 | RAPIDJSON_DIAG_POP
97 | #endif
98 |
99 | #endif // RAPIDJSON_FILESTREAM_H_
100 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/rapidjson/filereadstream.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_FILEREADSTREAM_H_
16 | #define RAPIDJSON_FILEREADSTREAM_H_
17 |
18 | #include "stream.h"
19 | #include
20 |
21 | #ifdef __clang__
22 | RAPIDJSON_DIAG_PUSH
23 | RAPIDJSON_DIAG_OFF(padded)
24 | RAPIDJSON_DIAG_OFF(unreachable-code)
25 | RAPIDJSON_DIAG_OFF(missing-noreturn)
26 | #endif
27 |
28 | RAPIDJSON_NAMESPACE_BEGIN
29 |
30 | //! File byte stream for input using fread().
31 | /*!
32 | \note implements Stream concept
33 | */
34 | class FileReadStream {
35 | public:
36 | typedef char Ch; //!< Character type (byte).
37 |
38 | //! Constructor.
39 | /*!
40 | \param fp File pointer opened for read.
41 | \param buffer user-supplied buffer.
42 | \param bufferSize size of buffer in bytes. Must >=4 bytes.
43 | */
44 | FileReadStream(std::FILE* fp, char* buffer, size_t bufferSize) : fp_(fp), buffer_(buffer), bufferSize_(bufferSize), bufferLast_(0), current_(buffer_), readCount_(0), count_(0), eof_(false) {
45 | RAPIDJSON_ASSERT(fp_ != 0);
46 | RAPIDJSON_ASSERT(bufferSize >= 4);
47 | Read();
48 | }
49 |
50 | Ch Peek() const { return *current_; }
51 | Ch Take() { Ch c = *current_; Read(); return c; }
52 | size_t Tell() const { return count_ + static_cast(current_ - buffer_); }
53 |
54 | // Not implemented
55 | void Put(Ch) { RAPIDJSON_ASSERT(false); }
56 | void Flush() { RAPIDJSON_ASSERT(false); }
57 | Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
58 | size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
59 |
60 | // For encoding detection only.
61 | const Ch* Peek4() const {
62 | return (current_ + 4 <= bufferLast_) ? current_ : 0;
63 | }
64 |
65 | private:
66 | void Read() {
67 | if (current_ < bufferLast_)
68 | ++current_;
69 | else if (!eof_) {
70 | count_ += readCount_;
71 | readCount_ = fread(buffer_, 1, bufferSize_, fp_);
72 | bufferLast_ = buffer_ + readCount_ - 1;
73 | current_ = buffer_;
74 |
75 | if (readCount_ < bufferSize_) {
76 | buffer_[readCount_] = '\0';
77 | ++bufferLast_;
78 | eof_ = true;
79 | }
80 | }
81 | }
82 |
83 | std::FILE* fp_;
84 | Ch *buffer_;
85 | size_t bufferSize_;
86 | Ch *bufferLast_;
87 | Ch *current_;
88 | size_t readCount_;
89 | size_t count_; //!< Number of characters read
90 | bool eof_;
91 | };
92 |
93 | RAPIDJSON_NAMESPACE_END
94 |
95 | #ifdef __clang__
96 | RAPIDJSON_DIAG_POP
97 | #endif
98 |
99 | #endif // RAPIDJSON_FILESTREAM_H_
100 |
--------------------------------------------------------------------------------
/client/ObjectDetector/rapidjson/filewritestream.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_FILEWRITESTREAM_H_
16 | #define RAPIDJSON_FILEWRITESTREAM_H_
17 |
18 | #include "stream.h"
19 | #include
20 |
21 | #ifdef __clang__
22 | RAPIDJSON_DIAG_PUSH
23 | RAPIDJSON_DIAG_OFF(unreachable-code)
24 | #endif
25 |
26 | RAPIDJSON_NAMESPACE_BEGIN
27 |
28 | //! Wrapper of C file stream for input using fread().
29 | /*!
30 | \note implements Stream concept
31 | */
32 | class FileWriteStream {
33 | public:
34 | typedef char Ch; //!< Character type. Only support char.
35 |
36 | FileWriteStream(std::FILE* fp, char* buffer, size_t bufferSize) : fp_(fp), buffer_(buffer), bufferEnd_(buffer + bufferSize), current_(buffer_) {
37 | RAPIDJSON_ASSERT(fp_ != 0);
38 | }
39 |
40 | void Put(char c) {
41 | if (current_ >= bufferEnd_)
42 | Flush();
43 |
44 | *current_++ = c;
45 | }
46 |
47 | void PutN(char c, size_t n) {
48 | size_t avail = static_cast(bufferEnd_ - current_);
49 | while (n > avail) {
50 | std::memset(current_, c, avail);
51 | current_ += avail;
52 | Flush();
53 | n -= avail;
54 | avail = static_cast(bufferEnd_ - current_);
55 | }
56 |
57 | if (n > 0) {
58 | std::memset(current_, c, n);
59 | current_ += n;
60 | }
61 | }
62 |
63 | void Flush() {
64 | if (current_ != buffer_) {
65 | size_t result = fwrite(buffer_, 1, static_cast(current_ - buffer_), fp_);
66 | if (result < static_cast(current_ - buffer_)) {
67 | // failure deliberately ignored at this time
68 | // added to avoid warn_unused_result build errors
69 | }
70 | current_ = buffer_;
71 | }
72 | }
73 |
74 | // Not implemented
75 | char Peek() const { RAPIDJSON_ASSERT(false); return 0; }
76 | char Take() { RAPIDJSON_ASSERT(false); return 0; }
77 | size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; }
78 | char* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
79 | size_t PutEnd(char*) { RAPIDJSON_ASSERT(false); return 0; }
80 |
81 | private:
82 | // Prohibit copy constructor & assignment operator.
83 | FileWriteStream(const FileWriteStream&);
84 | FileWriteStream& operator=(const FileWriteStream&);
85 |
86 | std::FILE* fp_;
87 | char *buffer_;
88 | char *bufferEnd_;
89 | char *current_;
90 | };
91 |
92 | //! Implement specialized version of PutN() with memset() for better performance.
93 | template<>
94 | inline void PutN(FileWriteStream& stream, char c, size_t n) {
95 | stream.PutN(c, n);
96 | }
97 |
98 | RAPIDJSON_NAMESPACE_END
99 |
100 | #ifdef __clang__
101 | RAPIDJSON_DIAG_POP
102 | #endif
103 |
104 | #endif // RAPIDJSON_FILESTREAM_H_
105 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/inc/filewritestream.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_FILEWRITESTREAM_H_
16 | #define RAPIDJSON_FILEWRITESTREAM_H_
17 |
18 | #include "stream.h"
19 | #include
20 |
21 | #ifdef __clang__
22 | RAPIDJSON_DIAG_PUSH
23 | RAPIDJSON_DIAG_OFF(unreachable-code)
24 | #endif
25 |
26 | RAPIDJSON_NAMESPACE_BEGIN
27 |
28 | //! Wrapper of C file stream for input using fread().
29 | /*!
30 | \note implements Stream concept
31 | */
32 | class FileWriteStream {
33 | public:
34 | typedef char Ch; //!< Character type. Only support char.
35 |
36 | FileWriteStream(std::FILE* fp, char* buffer, size_t bufferSize) : fp_(fp), buffer_(buffer), bufferEnd_(buffer + bufferSize), current_(buffer_) {
37 | RAPIDJSON_ASSERT(fp_ != 0);
38 | }
39 |
40 | void Put(char c) {
41 | if (current_ >= bufferEnd_)
42 | Flush();
43 |
44 | *current_++ = c;
45 | }
46 |
47 | void PutN(char c, size_t n) {
48 | size_t avail = static_cast(bufferEnd_ - current_);
49 | while (n > avail) {
50 | std::memset(current_, c, avail);
51 | current_ += avail;
52 | Flush();
53 | n -= avail;
54 | avail = static_cast(bufferEnd_ - current_);
55 | }
56 |
57 | if (n > 0) {
58 | std::memset(current_, c, n);
59 | current_ += n;
60 | }
61 | }
62 |
63 | void Flush() {
64 | if (current_ != buffer_) {
65 | size_t result = fwrite(buffer_, 1, static_cast(current_ - buffer_), fp_);
66 | if (result < static_cast(current_ - buffer_)) {
67 | // failure deliberately ignored at this time
68 | // added to avoid warn_unused_result build errors
69 | }
70 | current_ = buffer_;
71 | }
72 | }
73 |
74 | // Not implemented
75 | char Peek() const { RAPIDJSON_ASSERT(false); return 0; }
76 | char Take() { RAPIDJSON_ASSERT(false); return 0; }
77 | size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; }
78 | char* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
79 | size_t PutEnd(char*) { RAPIDJSON_ASSERT(false); return 0; }
80 |
81 | private:
82 | // Prohibit copy constructor & assignment operator.
83 | FileWriteStream(const FileWriteStream&);
84 | FileWriteStream& operator=(const FileWriteStream&);
85 |
86 | std::FILE* fp_;
87 | char *buffer_;
88 | char *bufferEnd_;
89 | char *current_;
90 | };
91 |
92 | //! Implement specialized version of PutN() with memset() for better performance.
93 | template<>
94 | inline void PutN(FileWriteStream& stream, char c, size_t n) {
95 | stream.PutN(c, n);
96 | }
97 |
98 | RAPIDJSON_NAMESPACE_END
99 |
100 | #ifdef __clang__
101 | RAPIDJSON_DIAG_POP
102 | #endif
103 |
104 | #endif // RAPIDJSON_FILESTREAM_H_
105 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/rapidjson/filewritestream.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_FILEWRITESTREAM_H_
16 | #define RAPIDJSON_FILEWRITESTREAM_H_
17 |
18 | #include "stream.h"
19 | #include
20 |
21 | #ifdef __clang__
22 | RAPIDJSON_DIAG_PUSH
23 | RAPIDJSON_DIAG_OFF(unreachable-code)
24 | #endif
25 |
26 | RAPIDJSON_NAMESPACE_BEGIN
27 |
28 | //! Wrapper of C file stream for input using fread().
29 | /*!
30 | \note implements Stream concept
31 | */
32 | class FileWriteStream {
33 | public:
34 | typedef char Ch; //!< Character type. Only support char.
35 |
36 | FileWriteStream(std::FILE* fp, char* buffer, size_t bufferSize) : fp_(fp), buffer_(buffer), bufferEnd_(buffer + bufferSize), current_(buffer_) {
37 | RAPIDJSON_ASSERT(fp_ != 0);
38 | }
39 |
40 | void Put(char c) {
41 | if (current_ >= bufferEnd_)
42 | Flush();
43 |
44 | *current_++ = c;
45 | }
46 |
47 | void PutN(char c, size_t n) {
48 | size_t avail = static_cast(bufferEnd_ - current_);
49 | while (n > avail) {
50 | std::memset(current_, c, avail);
51 | current_ += avail;
52 | Flush();
53 | n -= avail;
54 | avail = static_cast(bufferEnd_ - current_);
55 | }
56 |
57 | if (n > 0) {
58 | std::memset(current_, c, n);
59 | current_ += n;
60 | }
61 | }
62 |
63 | void Flush() {
64 | if (current_ != buffer_) {
65 | size_t result = fwrite(buffer_, 1, static_cast(current_ - buffer_), fp_);
66 | if (result < static_cast(current_ - buffer_)) {
67 | // failure deliberately ignored at this time
68 | // added to avoid warn_unused_result build errors
69 | }
70 | current_ = buffer_;
71 | }
72 | }
73 |
74 | // Not implemented
75 | char Peek() const { RAPIDJSON_ASSERT(false); return 0; }
76 | char Take() { RAPIDJSON_ASSERT(false); return 0; }
77 | size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; }
78 | char* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
79 | size_t PutEnd(char*) { RAPIDJSON_ASSERT(false); return 0; }
80 |
81 | private:
82 | // Prohibit copy constructor & assignment operator.
83 | FileWriteStream(const FileWriteStream&);
84 | FileWriteStream& operator=(const FileWriteStream&);
85 |
86 | std::FILE* fp_;
87 | char *buffer_;
88 | char *bufferEnd_;
89 | char *current_;
90 | };
91 |
92 | //! Implement specialized version of PutN() with memset() for better performance.
93 | template<>
94 | inline void PutN(FileWriteStream& stream, char c, size_t n) {
95 | stream.PutN(c, n);
96 | }
97 |
98 | RAPIDJSON_NAMESPACE_END
99 |
100 | #ifdef __clang__
101 | RAPIDJSON_DIAG_POP
102 | #endif
103 |
104 | #endif // RAPIDJSON_FILESTREAM_H_
105 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/build/CMakeFiles/Makefile2:
--------------------------------------------------------------------------------
1 | # CMAKE generated file: DO NOT EDIT!
2 | # Generated by "Unix Makefiles" Generator, CMake Version 2.8
3 |
4 | # Default target executed when no arguments are given to make.
5 | default_target: all
6 | .PHONY : default_target
7 |
8 | # The main recursive all target
9 | all:
10 | .PHONY : all
11 |
12 | # The main recursive preinstall target
13 | preinstall:
14 | .PHONY : preinstall
15 |
16 | #=============================================================================
17 | # Special targets provided by cmake.
18 |
19 | # Disable implicit rules so canonical targets will work.
20 | .SUFFIXES:
21 |
22 | # Remove some rules from gmake that .SUFFIXES does not remove.
23 | SUFFIXES =
24 |
25 | .SUFFIXES: .hpux_make_needs_suffix_list
26 |
27 | # Suppress display of executed commands.
28 | $(VERBOSE).SILENT:
29 |
30 | # A target that is always out of date.
31 | cmake_force:
32 | .PHONY : cmake_force
33 |
34 | #=============================================================================
35 | # Set environment variables for the build.
36 |
37 | # The shell in which to execute make rules.
38 | SHELL = /bin/sh
39 |
40 | # The CMake executable.
41 | CMAKE_COMMAND = /usr/bin/cmake
42 |
43 | # The command to remove a file.
44 | RM = /usr/bin/cmake -E remove -f
45 |
46 | # Escaping for special characters.
47 | EQUALS = =
48 |
49 | # The program to use to edit the cache.
50 | CMAKE_EDIT_COMMAND = /usr/bin/cmake-gui
51 |
52 | # The top-level source directory on which CMake was run.
53 | CMAKE_SOURCE_DIR = /home/tla001/myworks/cworks/curlclient
54 |
55 | # The top-level build directory on which CMake was run.
56 | CMAKE_BINARY_DIR = /home/tla001/myworks/cworks/curlclient/build
57 |
58 | #=============================================================================
59 | # Target rules for target CMakeFiles/client.dir
60 |
61 | # All Build rule for target.
62 | CMakeFiles/client.dir/all:
63 | $(MAKE) -f CMakeFiles/client.dir/build.make CMakeFiles/client.dir/depend
64 | $(MAKE) -f CMakeFiles/client.dir/build.make CMakeFiles/client.dir/build
65 | $(CMAKE_COMMAND) -E cmake_progress_report /home/tla001/myworks/cworks/curlclient/build/CMakeFiles 1
66 | @echo "Built target client"
67 | .PHONY : CMakeFiles/client.dir/all
68 |
69 | # Include target in all.
70 | all: CMakeFiles/client.dir/all
71 | .PHONY : all
72 |
73 | # Build rule for subdir invocation for target.
74 | CMakeFiles/client.dir/rule: cmake_check_build_system
75 | $(CMAKE_COMMAND) -E cmake_progress_start /home/tla001/myworks/cworks/curlclient/build/CMakeFiles 1
76 | $(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/client.dir/all
77 | $(CMAKE_COMMAND) -E cmake_progress_start /home/tla001/myworks/cworks/curlclient/build/CMakeFiles 0
78 | .PHONY : CMakeFiles/client.dir/rule
79 |
80 | # Convenience name for target.
81 | client: CMakeFiles/client.dir/rule
82 | .PHONY : client
83 |
84 | # clean rule for target.
85 | CMakeFiles/client.dir/clean:
86 | $(MAKE) -f CMakeFiles/client.dir/build.make CMakeFiles/client.dir/clean
87 | .PHONY : CMakeFiles/client.dir/clean
88 |
89 | # clean rule for target.
90 | clean: CMakeFiles/client.dir/clean
91 | .PHONY : clean
92 |
93 | #=============================================================================
94 | # Special targets to cleanup operation of make.
95 |
96 | # Special rule to run CMake to check the build system integrity.
97 | # No rule that depends on this can have commands that come from listfiles
98 | # because they might be regenerated.
99 | cmake_check_build_system:
100 | $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
101 | .PHONY : cmake_check_build_system
102 |
103 |
--------------------------------------------------------------------------------
/client/ObjectDetector/rapidjson/internal/pow10.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_POW10_
16 | #define RAPIDJSON_POW10_
17 |
18 | #include "../rapidjson.h"
19 |
20 | RAPIDJSON_NAMESPACE_BEGIN
21 | namespace internal {
22 |
23 | //! Computes integer powers of 10 in double (10.0^n).
24 | /*! This function uses lookup table for fast and accurate results.
25 | \param n non-negative exponent. Must <= 308.
26 | \return 10.0^n
27 | */
28 | inline double Pow10(int n) {
29 | static const double e[] = { // 1e-0...1e308: 309 * 8 bytes = 2472 bytes
30 | 1e+0,
31 | 1e+1, 1e+2, 1e+3, 1e+4, 1e+5, 1e+6, 1e+7, 1e+8, 1e+9, 1e+10, 1e+11, 1e+12, 1e+13, 1e+14, 1e+15, 1e+16, 1e+17, 1e+18, 1e+19, 1e+20,
32 | 1e+21, 1e+22, 1e+23, 1e+24, 1e+25, 1e+26, 1e+27, 1e+28, 1e+29, 1e+30, 1e+31, 1e+32, 1e+33, 1e+34, 1e+35, 1e+36, 1e+37, 1e+38, 1e+39, 1e+40,
33 | 1e+41, 1e+42, 1e+43, 1e+44, 1e+45, 1e+46, 1e+47, 1e+48, 1e+49, 1e+50, 1e+51, 1e+52, 1e+53, 1e+54, 1e+55, 1e+56, 1e+57, 1e+58, 1e+59, 1e+60,
34 | 1e+61, 1e+62, 1e+63, 1e+64, 1e+65, 1e+66, 1e+67, 1e+68, 1e+69, 1e+70, 1e+71, 1e+72, 1e+73, 1e+74, 1e+75, 1e+76, 1e+77, 1e+78, 1e+79, 1e+80,
35 | 1e+81, 1e+82, 1e+83, 1e+84, 1e+85, 1e+86, 1e+87, 1e+88, 1e+89, 1e+90, 1e+91, 1e+92, 1e+93, 1e+94, 1e+95, 1e+96, 1e+97, 1e+98, 1e+99, 1e+100,
36 | 1e+101,1e+102,1e+103,1e+104,1e+105,1e+106,1e+107,1e+108,1e+109,1e+110,1e+111,1e+112,1e+113,1e+114,1e+115,1e+116,1e+117,1e+118,1e+119,1e+120,
37 | 1e+121,1e+122,1e+123,1e+124,1e+125,1e+126,1e+127,1e+128,1e+129,1e+130,1e+131,1e+132,1e+133,1e+134,1e+135,1e+136,1e+137,1e+138,1e+139,1e+140,
38 | 1e+141,1e+142,1e+143,1e+144,1e+145,1e+146,1e+147,1e+148,1e+149,1e+150,1e+151,1e+152,1e+153,1e+154,1e+155,1e+156,1e+157,1e+158,1e+159,1e+160,
39 | 1e+161,1e+162,1e+163,1e+164,1e+165,1e+166,1e+167,1e+168,1e+169,1e+170,1e+171,1e+172,1e+173,1e+174,1e+175,1e+176,1e+177,1e+178,1e+179,1e+180,
40 | 1e+181,1e+182,1e+183,1e+184,1e+185,1e+186,1e+187,1e+188,1e+189,1e+190,1e+191,1e+192,1e+193,1e+194,1e+195,1e+196,1e+197,1e+198,1e+199,1e+200,
41 | 1e+201,1e+202,1e+203,1e+204,1e+205,1e+206,1e+207,1e+208,1e+209,1e+210,1e+211,1e+212,1e+213,1e+214,1e+215,1e+216,1e+217,1e+218,1e+219,1e+220,
42 | 1e+221,1e+222,1e+223,1e+224,1e+225,1e+226,1e+227,1e+228,1e+229,1e+230,1e+231,1e+232,1e+233,1e+234,1e+235,1e+236,1e+237,1e+238,1e+239,1e+240,
43 | 1e+241,1e+242,1e+243,1e+244,1e+245,1e+246,1e+247,1e+248,1e+249,1e+250,1e+251,1e+252,1e+253,1e+254,1e+255,1e+256,1e+257,1e+258,1e+259,1e+260,
44 | 1e+261,1e+262,1e+263,1e+264,1e+265,1e+266,1e+267,1e+268,1e+269,1e+270,1e+271,1e+272,1e+273,1e+274,1e+275,1e+276,1e+277,1e+278,1e+279,1e+280,
45 | 1e+281,1e+282,1e+283,1e+284,1e+285,1e+286,1e+287,1e+288,1e+289,1e+290,1e+291,1e+292,1e+293,1e+294,1e+295,1e+296,1e+297,1e+298,1e+299,1e+300,
46 | 1e+301,1e+302,1e+303,1e+304,1e+305,1e+306,1e+307,1e+308
47 | };
48 | RAPIDJSON_ASSERT(n >= 0 && n <= 308);
49 | return e[n];
50 | }
51 |
52 | } // namespace internal
53 | RAPIDJSON_NAMESPACE_END
54 |
55 | #endif // RAPIDJSON_POW10_
56 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/inc/internal/pow10.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_POW10_
16 | #define RAPIDJSON_POW10_
17 |
18 | #include "../rapidjson.h"
19 |
20 | RAPIDJSON_NAMESPACE_BEGIN
21 | namespace internal {
22 |
23 | //! Computes integer powers of 10 in double (10.0^n).
24 | /*! This function uses lookup table for fast and accurate results.
25 | \param n non-negative exponent. Must <= 308.
26 | \return 10.0^n
27 | */
28 | inline double Pow10(int n) {
29 | static const double e[] = { // 1e-0...1e308: 309 * 8 bytes = 2472 bytes
30 | 1e+0,
31 | 1e+1, 1e+2, 1e+3, 1e+4, 1e+5, 1e+6, 1e+7, 1e+8, 1e+9, 1e+10, 1e+11, 1e+12, 1e+13, 1e+14, 1e+15, 1e+16, 1e+17, 1e+18, 1e+19, 1e+20,
32 | 1e+21, 1e+22, 1e+23, 1e+24, 1e+25, 1e+26, 1e+27, 1e+28, 1e+29, 1e+30, 1e+31, 1e+32, 1e+33, 1e+34, 1e+35, 1e+36, 1e+37, 1e+38, 1e+39, 1e+40,
33 | 1e+41, 1e+42, 1e+43, 1e+44, 1e+45, 1e+46, 1e+47, 1e+48, 1e+49, 1e+50, 1e+51, 1e+52, 1e+53, 1e+54, 1e+55, 1e+56, 1e+57, 1e+58, 1e+59, 1e+60,
34 | 1e+61, 1e+62, 1e+63, 1e+64, 1e+65, 1e+66, 1e+67, 1e+68, 1e+69, 1e+70, 1e+71, 1e+72, 1e+73, 1e+74, 1e+75, 1e+76, 1e+77, 1e+78, 1e+79, 1e+80,
35 | 1e+81, 1e+82, 1e+83, 1e+84, 1e+85, 1e+86, 1e+87, 1e+88, 1e+89, 1e+90, 1e+91, 1e+92, 1e+93, 1e+94, 1e+95, 1e+96, 1e+97, 1e+98, 1e+99, 1e+100,
36 | 1e+101,1e+102,1e+103,1e+104,1e+105,1e+106,1e+107,1e+108,1e+109,1e+110,1e+111,1e+112,1e+113,1e+114,1e+115,1e+116,1e+117,1e+118,1e+119,1e+120,
37 | 1e+121,1e+122,1e+123,1e+124,1e+125,1e+126,1e+127,1e+128,1e+129,1e+130,1e+131,1e+132,1e+133,1e+134,1e+135,1e+136,1e+137,1e+138,1e+139,1e+140,
38 | 1e+141,1e+142,1e+143,1e+144,1e+145,1e+146,1e+147,1e+148,1e+149,1e+150,1e+151,1e+152,1e+153,1e+154,1e+155,1e+156,1e+157,1e+158,1e+159,1e+160,
39 | 1e+161,1e+162,1e+163,1e+164,1e+165,1e+166,1e+167,1e+168,1e+169,1e+170,1e+171,1e+172,1e+173,1e+174,1e+175,1e+176,1e+177,1e+178,1e+179,1e+180,
40 | 1e+181,1e+182,1e+183,1e+184,1e+185,1e+186,1e+187,1e+188,1e+189,1e+190,1e+191,1e+192,1e+193,1e+194,1e+195,1e+196,1e+197,1e+198,1e+199,1e+200,
41 | 1e+201,1e+202,1e+203,1e+204,1e+205,1e+206,1e+207,1e+208,1e+209,1e+210,1e+211,1e+212,1e+213,1e+214,1e+215,1e+216,1e+217,1e+218,1e+219,1e+220,
42 | 1e+221,1e+222,1e+223,1e+224,1e+225,1e+226,1e+227,1e+228,1e+229,1e+230,1e+231,1e+232,1e+233,1e+234,1e+235,1e+236,1e+237,1e+238,1e+239,1e+240,
43 | 1e+241,1e+242,1e+243,1e+244,1e+245,1e+246,1e+247,1e+248,1e+249,1e+250,1e+251,1e+252,1e+253,1e+254,1e+255,1e+256,1e+257,1e+258,1e+259,1e+260,
44 | 1e+261,1e+262,1e+263,1e+264,1e+265,1e+266,1e+267,1e+268,1e+269,1e+270,1e+271,1e+272,1e+273,1e+274,1e+275,1e+276,1e+277,1e+278,1e+279,1e+280,
45 | 1e+281,1e+282,1e+283,1e+284,1e+285,1e+286,1e+287,1e+288,1e+289,1e+290,1e+291,1e+292,1e+293,1e+294,1e+295,1e+296,1e+297,1e+298,1e+299,1e+300,
46 | 1e+301,1e+302,1e+303,1e+304,1e+305,1e+306,1e+307,1e+308
47 | };
48 | RAPIDJSON_ASSERT(n >= 0 && n <= 308);
49 | return e[n];
50 | }
51 |
52 | } // namespace internal
53 | RAPIDJSON_NAMESPACE_END
54 |
55 | #endif // RAPIDJSON_POW10_
56 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/rapidjson/internal/pow10.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_POW10_
16 | #define RAPIDJSON_POW10_
17 |
18 | #include "../rapidjson.h"
19 |
20 | RAPIDJSON_NAMESPACE_BEGIN
21 | namespace internal {
22 |
23 | //! Computes integer powers of 10 in double (10.0^n).
24 | /*! This function uses lookup table for fast and accurate results.
25 | \param n non-negative exponent. Must <= 308.
26 | \return 10.0^n
27 | */
28 | inline double Pow10(int n) {
29 | static const double e[] = { // 1e-0...1e308: 309 * 8 bytes = 2472 bytes
30 | 1e+0,
31 | 1e+1, 1e+2, 1e+3, 1e+4, 1e+5, 1e+6, 1e+7, 1e+8, 1e+9, 1e+10, 1e+11, 1e+12, 1e+13, 1e+14, 1e+15, 1e+16, 1e+17, 1e+18, 1e+19, 1e+20,
32 | 1e+21, 1e+22, 1e+23, 1e+24, 1e+25, 1e+26, 1e+27, 1e+28, 1e+29, 1e+30, 1e+31, 1e+32, 1e+33, 1e+34, 1e+35, 1e+36, 1e+37, 1e+38, 1e+39, 1e+40,
33 | 1e+41, 1e+42, 1e+43, 1e+44, 1e+45, 1e+46, 1e+47, 1e+48, 1e+49, 1e+50, 1e+51, 1e+52, 1e+53, 1e+54, 1e+55, 1e+56, 1e+57, 1e+58, 1e+59, 1e+60,
34 | 1e+61, 1e+62, 1e+63, 1e+64, 1e+65, 1e+66, 1e+67, 1e+68, 1e+69, 1e+70, 1e+71, 1e+72, 1e+73, 1e+74, 1e+75, 1e+76, 1e+77, 1e+78, 1e+79, 1e+80,
35 | 1e+81, 1e+82, 1e+83, 1e+84, 1e+85, 1e+86, 1e+87, 1e+88, 1e+89, 1e+90, 1e+91, 1e+92, 1e+93, 1e+94, 1e+95, 1e+96, 1e+97, 1e+98, 1e+99, 1e+100,
36 | 1e+101,1e+102,1e+103,1e+104,1e+105,1e+106,1e+107,1e+108,1e+109,1e+110,1e+111,1e+112,1e+113,1e+114,1e+115,1e+116,1e+117,1e+118,1e+119,1e+120,
37 | 1e+121,1e+122,1e+123,1e+124,1e+125,1e+126,1e+127,1e+128,1e+129,1e+130,1e+131,1e+132,1e+133,1e+134,1e+135,1e+136,1e+137,1e+138,1e+139,1e+140,
38 | 1e+141,1e+142,1e+143,1e+144,1e+145,1e+146,1e+147,1e+148,1e+149,1e+150,1e+151,1e+152,1e+153,1e+154,1e+155,1e+156,1e+157,1e+158,1e+159,1e+160,
39 | 1e+161,1e+162,1e+163,1e+164,1e+165,1e+166,1e+167,1e+168,1e+169,1e+170,1e+171,1e+172,1e+173,1e+174,1e+175,1e+176,1e+177,1e+178,1e+179,1e+180,
40 | 1e+181,1e+182,1e+183,1e+184,1e+185,1e+186,1e+187,1e+188,1e+189,1e+190,1e+191,1e+192,1e+193,1e+194,1e+195,1e+196,1e+197,1e+198,1e+199,1e+200,
41 | 1e+201,1e+202,1e+203,1e+204,1e+205,1e+206,1e+207,1e+208,1e+209,1e+210,1e+211,1e+212,1e+213,1e+214,1e+215,1e+216,1e+217,1e+218,1e+219,1e+220,
42 | 1e+221,1e+222,1e+223,1e+224,1e+225,1e+226,1e+227,1e+228,1e+229,1e+230,1e+231,1e+232,1e+233,1e+234,1e+235,1e+236,1e+237,1e+238,1e+239,1e+240,
43 | 1e+241,1e+242,1e+243,1e+244,1e+245,1e+246,1e+247,1e+248,1e+249,1e+250,1e+251,1e+252,1e+253,1e+254,1e+255,1e+256,1e+257,1e+258,1e+259,1e+260,
44 | 1e+261,1e+262,1e+263,1e+264,1e+265,1e+266,1e+267,1e+268,1e+269,1e+270,1e+271,1e+272,1e+273,1e+274,1e+275,1e+276,1e+277,1e+278,1e+279,1e+280,
45 | 1e+281,1e+282,1e+283,1e+284,1e+285,1e+286,1e+287,1e+288,1e+289,1e+290,1e+291,1e+292,1e+293,1e+294,1e+295,1e+296,1e+297,1e+298,1e+299,1e+300,
46 | 1e+301,1e+302,1e+303,1e+304,1e+305,1e+306,1e+307,1e+308
47 | };
48 | RAPIDJSON_ASSERT(n >= 0 && n <= 308);
49 | return e[n];
50 | }
51 |
52 | } // namespace internal
53 | RAPIDJSON_NAMESPACE_END
54 |
55 | #endif // RAPIDJSON_POW10_
56 |
--------------------------------------------------------------------------------
/client/ObjectDetector/rapidjson/error/en.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_ERROR_EN_H_
16 | #define RAPIDJSON_ERROR_EN_H_
17 |
18 | #include "error.h"
19 |
20 | #ifdef __clang__
21 | RAPIDJSON_DIAG_PUSH
22 | RAPIDJSON_DIAG_OFF(switch-enum)
23 | RAPIDJSON_DIAG_OFF(covered-switch-default)
24 | #endif
25 |
26 | RAPIDJSON_NAMESPACE_BEGIN
27 |
28 | //! Maps error code of parsing into error message.
29 | /*!
30 | \ingroup RAPIDJSON_ERRORS
31 | \param parseErrorCode Error code obtained in parsing.
32 | \return the error message.
33 | \note User can make a copy of this function for localization.
34 | Using switch-case is safer for future modification of error codes.
35 | */
36 | inline const RAPIDJSON_ERROR_CHARTYPE* GetParseError_En(ParseErrorCode parseErrorCode) {
37 | switch (parseErrorCode) {
38 | case kParseErrorNone: return RAPIDJSON_ERROR_STRING("No error.");
39 |
40 | case kParseErrorDocumentEmpty: return RAPIDJSON_ERROR_STRING("The document is empty.");
41 | case kParseErrorDocumentRootNotSingular: return RAPIDJSON_ERROR_STRING("The document root must not be followed by other values.");
42 |
43 | case kParseErrorValueInvalid: return RAPIDJSON_ERROR_STRING("Invalid value.");
44 |
45 | case kParseErrorObjectMissName: return RAPIDJSON_ERROR_STRING("Missing a name for object member.");
46 | case kParseErrorObjectMissColon: return RAPIDJSON_ERROR_STRING("Missing a colon after a name of object member.");
47 | case kParseErrorObjectMissCommaOrCurlyBracket: return RAPIDJSON_ERROR_STRING("Missing a comma or '}' after an object member.");
48 |
49 | case kParseErrorArrayMissCommaOrSquareBracket: return RAPIDJSON_ERROR_STRING("Missing a comma or ']' after an array element.");
50 |
51 | case kParseErrorStringUnicodeEscapeInvalidHex: return RAPIDJSON_ERROR_STRING("Incorrect hex digit after \\u escape in string.");
52 | case kParseErrorStringUnicodeSurrogateInvalid: return RAPIDJSON_ERROR_STRING("The surrogate pair in string is invalid.");
53 | case kParseErrorStringEscapeInvalid: return RAPIDJSON_ERROR_STRING("Invalid escape character in string.");
54 | case kParseErrorStringMissQuotationMark: return RAPIDJSON_ERROR_STRING("Missing a closing quotation mark in string.");
55 | case kParseErrorStringInvalidEncoding: return RAPIDJSON_ERROR_STRING("Invalid encoding in string.");
56 |
57 | case kParseErrorNumberTooBig: return RAPIDJSON_ERROR_STRING("Number too big to be stored in double.");
58 | case kParseErrorNumberMissFraction: return RAPIDJSON_ERROR_STRING("Miss fraction part in number.");
59 | case kParseErrorNumberMissExponent: return RAPIDJSON_ERROR_STRING("Miss exponent in number.");
60 |
61 | case kParseErrorTermination: return RAPIDJSON_ERROR_STRING("Terminate parsing due to Handler error.");
62 | case kParseErrorUnspecificSyntaxError: return RAPIDJSON_ERROR_STRING("Unspecific syntax error.");
63 |
64 | default: return RAPIDJSON_ERROR_STRING("Unknown error.");
65 | }
66 | }
67 |
68 | RAPIDJSON_NAMESPACE_END
69 |
70 | #ifdef __clang__
71 | RAPIDJSON_DIAG_POP
72 | #endif
73 |
74 | #endif // RAPIDJSON_ERROR_EN_H_
75 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/inc/error/en.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_ERROR_EN_H_
16 | #define RAPIDJSON_ERROR_EN_H_
17 |
18 | #include "error.h"
19 |
20 | #ifdef __clang__
21 | RAPIDJSON_DIAG_PUSH
22 | RAPIDJSON_DIAG_OFF(switch-enum)
23 | RAPIDJSON_DIAG_OFF(covered-switch-default)
24 | #endif
25 |
26 | RAPIDJSON_NAMESPACE_BEGIN
27 |
28 | //! Maps error code of parsing into error message.
29 | /*!
30 | \ingroup RAPIDJSON_ERRORS
31 | \param parseErrorCode Error code obtained in parsing.
32 | \return the error message.
33 | \note User can make a copy of this function for localization.
34 | Using switch-case is safer for future modification of error codes.
35 | */
36 | inline const RAPIDJSON_ERROR_CHARTYPE* GetParseError_En(ParseErrorCode parseErrorCode) {
37 | switch (parseErrorCode) {
38 | case kParseErrorNone: return RAPIDJSON_ERROR_STRING("No error.");
39 |
40 | case kParseErrorDocumentEmpty: return RAPIDJSON_ERROR_STRING("The document is empty.");
41 | case kParseErrorDocumentRootNotSingular: return RAPIDJSON_ERROR_STRING("The document root must not be followed by other values.");
42 |
43 | case kParseErrorValueInvalid: return RAPIDJSON_ERROR_STRING("Invalid value.");
44 |
45 | case kParseErrorObjectMissName: return RAPIDJSON_ERROR_STRING("Missing a name for object member.");
46 | case kParseErrorObjectMissColon: return RAPIDJSON_ERROR_STRING("Missing a colon after a name of object member.");
47 | case kParseErrorObjectMissCommaOrCurlyBracket: return RAPIDJSON_ERROR_STRING("Missing a comma or '}' after an object member.");
48 |
49 | case kParseErrorArrayMissCommaOrSquareBracket: return RAPIDJSON_ERROR_STRING("Missing a comma or ']' after an array element.");
50 |
51 | case kParseErrorStringUnicodeEscapeInvalidHex: return RAPIDJSON_ERROR_STRING("Incorrect hex digit after \\u escape in string.");
52 | case kParseErrorStringUnicodeSurrogateInvalid: return RAPIDJSON_ERROR_STRING("The surrogate pair in string is invalid.");
53 | case kParseErrorStringEscapeInvalid: return RAPIDJSON_ERROR_STRING("Invalid escape character in string.");
54 | case kParseErrorStringMissQuotationMark: return RAPIDJSON_ERROR_STRING("Missing a closing quotation mark in string.");
55 | case kParseErrorStringInvalidEncoding: return RAPIDJSON_ERROR_STRING("Invalid encoding in string.");
56 |
57 | case kParseErrorNumberTooBig: return RAPIDJSON_ERROR_STRING("Number too big to be stored in double.");
58 | case kParseErrorNumberMissFraction: return RAPIDJSON_ERROR_STRING("Miss fraction part in number.");
59 | case kParseErrorNumberMissExponent: return RAPIDJSON_ERROR_STRING("Miss exponent in number.");
60 |
61 | case kParseErrorTermination: return RAPIDJSON_ERROR_STRING("Terminate parsing due to Handler error.");
62 | case kParseErrorUnspecificSyntaxError: return RAPIDJSON_ERROR_STRING("Unspecific syntax error.");
63 |
64 | default: return RAPIDJSON_ERROR_STRING("Unknown error.");
65 | }
66 | }
67 |
68 | RAPIDJSON_NAMESPACE_END
69 |
70 | #ifdef __clang__
71 | RAPIDJSON_DIAG_POP
72 | #endif
73 |
74 | #endif // RAPIDJSON_ERROR_EN_H_
75 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/rapidjson/error/en.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_ERROR_EN_H_
16 | #define RAPIDJSON_ERROR_EN_H_
17 |
18 | #include "error.h"
19 |
20 | #ifdef __clang__
21 | RAPIDJSON_DIAG_PUSH
22 | RAPIDJSON_DIAG_OFF(switch-enum)
23 | RAPIDJSON_DIAG_OFF(covered-switch-default)
24 | #endif
25 |
26 | RAPIDJSON_NAMESPACE_BEGIN
27 |
28 | //! Maps error code of parsing into error message.
29 | /*!
30 | \ingroup RAPIDJSON_ERRORS
31 | \param parseErrorCode Error code obtained in parsing.
32 | \return the error message.
33 | \note User can make a copy of this function for localization.
34 | Using switch-case is safer for future modification of error codes.
35 | */
36 | inline const RAPIDJSON_ERROR_CHARTYPE* GetParseError_En(ParseErrorCode parseErrorCode) {
37 | switch (parseErrorCode) {
38 | case kParseErrorNone: return RAPIDJSON_ERROR_STRING("No error.");
39 |
40 | case kParseErrorDocumentEmpty: return RAPIDJSON_ERROR_STRING("The document is empty.");
41 | case kParseErrorDocumentRootNotSingular: return RAPIDJSON_ERROR_STRING("The document root must not be followed by other values.");
42 |
43 | case kParseErrorValueInvalid: return RAPIDJSON_ERROR_STRING("Invalid value.");
44 |
45 | case kParseErrorObjectMissName: return RAPIDJSON_ERROR_STRING("Missing a name for object member.");
46 | case kParseErrorObjectMissColon: return RAPIDJSON_ERROR_STRING("Missing a colon after a name of object member.");
47 | case kParseErrorObjectMissCommaOrCurlyBracket: return RAPIDJSON_ERROR_STRING("Missing a comma or '}' after an object member.");
48 |
49 | case kParseErrorArrayMissCommaOrSquareBracket: return RAPIDJSON_ERROR_STRING("Missing a comma or ']' after an array element.");
50 |
51 | case kParseErrorStringUnicodeEscapeInvalidHex: return RAPIDJSON_ERROR_STRING("Incorrect hex digit after \\u escape in string.");
52 | case kParseErrorStringUnicodeSurrogateInvalid: return RAPIDJSON_ERROR_STRING("The surrogate pair in string is invalid.");
53 | case kParseErrorStringEscapeInvalid: return RAPIDJSON_ERROR_STRING("Invalid escape character in string.");
54 | case kParseErrorStringMissQuotationMark: return RAPIDJSON_ERROR_STRING("Missing a closing quotation mark in string.");
55 | case kParseErrorStringInvalidEncoding: return RAPIDJSON_ERROR_STRING("Invalid encoding in string.");
56 |
57 | case kParseErrorNumberTooBig: return RAPIDJSON_ERROR_STRING("Number too big to be stored in double.");
58 | case kParseErrorNumberMissFraction: return RAPIDJSON_ERROR_STRING("Miss fraction part in number.");
59 | case kParseErrorNumberMissExponent: return RAPIDJSON_ERROR_STRING("Miss exponent in number.");
60 |
61 | case kParseErrorTermination: return RAPIDJSON_ERROR_STRING("Terminate parsing due to Handler error.");
62 | case kParseErrorUnspecificSyntaxError: return RAPIDJSON_ERROR_STRING("Unspecific syntax error.");
63 |
64 | default: return RAPIDJSON_ERROR_STRING("Unknown error.");
65 | }
66 | }
67 |
68 | RAPIDJSON_NAMESPACE_END
69 |
70 | #ifdef __clang__
71 | RAPIDJSON_DIAG_POP
72 | #endif
73 |
74 | #endif // RAPIDJSON_ERROR_EN_H_
75 |
--------------------------------------------------------------------------------
/client/ObjectDetector/rapidjson/istreamwrapper.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_ISTREAMWRAPPER_H_
16 | #define RAPIDJSON_ISTREAMWRAPPER_H_
17 |
18 | #include "stream.h"
19 | #include
20 |
21 | #ifdef __clang__
22 | RAPIDJSON_DIAG_PUSH
23 | RAPIDJSON_DIAG_OFF(padded)
24 | #endif
25 |
26 | #ifdef _MSC_VER
27 | RAPIDJSON_DIAG_PUSH
28 | RAPIDJSON_DIAG_OFF(4351) // new behavior: elements of array 'array' will be default initialized
29 | #endif
30 |
31 | RAPIDJSON_NAMESPACE_BEGIN
32 |
33 | //! Wrapper of \c std::basic_istream into RapidJSON's Stream concept.
34 | /*!
35 | The classes can be wrapped including but not limited to:
36 |
37 | - \c std::istringstream
38 | - \c std::stringstream
39 | - \c std::wistringstream
40 | - \c std::wstringstream
41 | - \c std::ifstream
42 | - \c std::fstream
43 | - \c std::wifstream
44 | - \c std::wfstream
45 |
46 | \tparam StreamType Class derived from \c std::basic_istream.
47 | */
48 |
49 | template
50 | class BasicIStreamWrapper {
51 | public:
52 | typedef typename StreamType::char_type Ch;
53 | BasicIStreamWrapper(StreamType& stream) : stream_(stream), count_(), peekBuffer_() {}
54 |
55 | Ch Peek() const {
56 | typename StreamType::int_type c = stream_.peek();
57 | return RAPIDJSON_LIKELY(c != StreamType::traits_type::eof()) ? static_cast(c) : static_cast('\0');
58 | }
59 |
60 | Ch Take() {
61 | typename StreamType::int_type c = stream_.get();
62 | if (RAPIDJSON_LIKELY(c != StreamType::traits_type::eof())) {
63 | count_++;
64 | return static_cast(c);
65 | }
66 | else
67 | return '\0';
68 | }
69 |
70 | // tellg() may return -1 when failed. So we count by ourself.
71 | size_t Tell() const { return count_; }
72 |
73 | Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
74 | void Put(Ch) { RAPIDJSON_ASSERT(false); }
75 | void Flush() { RAPIDJSON_ASSERT(false); }
76 | size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
77 |
78 | // For encoding detection only.
79 | const Ch* Peek4() const {
80 | RAPIDJSON_ASSERT(sizeof(Ch) == 1); // Only usable for byte stream.
81 | int i;
82 | bool hasError = false;
83 | for (i = 0; i < 4; ++i) {
84 | typename StreamType::int_type c = stream_.get();
85 | if (c == StreamType::traits_type::eof()) {
86 | hasError = true;
87 | stream_.clear();
88 | break;
89 | }
90 | peekBuffer_[i] = static_cast(c);
91 | }
92 | for (--i; i >= 0; --i)
93 | stream_.putback(peekBuffer_[i]);
94 | return !hasError ? peekBuffer_ : 0;
95 | }
96 |
97 | private:
98 | BasicIStreamWrapper(const BasicIStreamWrapper&);
99 | BasicIStreamWrapper& operator=(const BasicIStreamWrapper&);
100 |
101 | StreamType& stream_;
102 | size_t count_; //!< Number of characters read. Note:
103 | mutable Ch peekBuffer_[4];
104 | };
105 |
106 | typedef BasicIStreamWrapper IStreamWrapper;
107 | typedef BasicIStreamWrapper WIStreamWrapper;
108 |
109 | #if defined(__clang__) || defined(_MSC_VER)
110 | RAPIDJSON_DIAG_POP
111 | #endif
112 |
113 | RAPIDJSON_NAMESPACE_END
114 |
115 | #endif // RAPIDJSON_ISTREAMWRAPPER_H_
116 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/inc/istreamwrapper.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_ISTREAMWRAPPER_H_
16 | #define RAPIDJSON_ISTREAMWRAPPER_H_
17 |
18 | #include "stream.h"
19 | #include
20 |
21 | #ifdef __clang__
22 | RAPIDJSON_DIAG_PUSH
23 | RAPIDJSON_DIAG_OFF(padded)
24 | #endif
25 |
26 | #ifdef _MSC_VER
27 | RAPIDJSON_DIAG_PUSH
28 | RAPIDJSON_DIAG_OFF(4351) // new behavior: elements of array 'array' will be default initialized
29 | #endif
30 |
31 | RAPIDJSON_NAMESPACE_BEGIN
32 |
33 | //! Wrapper of \c std::basic_istream into RapidJSON's Stream concept.
34 | /*!
35 | The classes can be wrapped including but not limited to:
36 |
37 | - \c std::istringstream
38 | - \c std::stringstream
39 | - \c std::wistringstream
40 | - \c std::wstringstream
41 | - \c std::ifstream
42 | - \c std::fstream
43 | - \c std::wifstream
44 | - \c std::wfstream
45 |
46 | \tparam StreamType Class derived from \c std::basic_istream.
47 | */
48 |
49 | template
50 | class BasicIStreamWrapper {
51 | public:
52 | typedef typename StreamType::char_type Ch;
53 | BasicIStreamWrapper(StreamType& stream) : stream_(stream), count_(), peekBuffer_() {}
54 |
55 | Ch Peek() const {
56 | typename StreamType::int_type c = stream_.peek();
57 | return RAPIDJSON_LIKELY(c != StreamType::traits_type::eof()) ? static_cast(c) : static_cast('\0');
58 | }
59 |
60 | Ch Take() {
61 | typename StreamType::int_type c = stream_.get();
62 | if (RAPIDJSON_LIKELY(c != StreamType::traits_type::eof())) {
63 | count_++;
64 | return static_cast(c);
65 | }
66 | else
67 | return '\0';
68 | }
69 |
70 | // tellg() may return -1 when failed. So we count by ourself.
71 | size_t Tell() const { return count_; }
72 |
73 | Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
74 | void Put(Ch) { RAPIDJSON_ASSERT(false); }
75 | void Flush() { RAPIDJSON_ASSERT(false); }
76 | size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
77 |
78 | // For encoding detection only.
79 | const Ch* Peek4() const {
80 | RAPIDJSON_ASSERT(sizeof(Ch) == 1); // Only usable for byte stream.
81 | int i;
82 | bool hasError = false;
83 | for (i = 0; i < 4; ++i) {
84 | typename StreamType::int_type c = stream_.get();
85 | if (c == StreamType::traits_type::eof()) {
86 | hasError = true;
87 | stream_.clear();
88 | break;
89 | }
90 | peekBuffer_[i] = static_cast(c);
91 | }
92 | for (--i; i >= 0; --i)
93 | stream_.putback(peekBuffer_[i]);
94 | return !hasError ? peekBuffer_ : 0;
95 | }
96 |
97 | private:
98 | BasicIStreamWrapper(const BasicIStreamWrapper&);
99 | BasicIStreamWrapper& operator=(const BasicIStreamWrapper&);
100 |
101 | StreamType& stream_;
102 | size_t count_; //!< Number of characters read. Note:
103 | mutable Ch peekBuffer_[4];
104 | };
105 |
106 | typedef BasicIStreamWrapper IStreamWrapper;
107 | typedef BasicIStreamWrapper WIStreamWrapper;
108 |
109 | #if defined(__clang__) || defined(_MSC_VER)
110 | RAPIDJSON_DIAG_POP
111 | #endif
112 |
113 | RAPIDJSON_NAMESPACE_END
114 |
115 | #endif // RAPIDJSON_ISTREAMWRAPPER_H_
116 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/rapidjson/istreamwrapper.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_ISTREAMWRAPPER_H_
16 | #define RAPIDJSON_ISTREAMWRAPPER_H_
17 |
18 | #include "stream.h"
19 | #include
20 |
21 | #ifdef __clang__
22 | RAPIDJSON_DIAG_PUSH
23 | RAPIDJSON_DIAG_OFF(padded)
24 | #endif
25 |
26 | #ifdef _MSC_VER
27 | RAPIDJSON_DIAG_PUSH
28 | RAPIDJSON_DIAG_OFF(4351) // new behavior: elements of array 'array' will be default initialized
29 | #endif
30 |
31 | RAPIDJSON_NAMESPACE_BEGIN
32 |
33 | //! Wrapper of \c std::basic_istream into RapidJSON's Stream concept.
34 | /*!
35 | The classes can be wrapped including but not limited to:
36 |
37 | - \c std::istringstream
38 | - \c std::stringstream
39 | - \c std::wistringstream
40 | - \c std::wstringstream
41 | - \c std::ifstream
42 | - \c std::fstream
43 | - \c std::wifstream
44 | - \c std::wfstream
45 |
46 | \tparam StreamType Class derived from \c std::basic_istream.
47 | */
48 |
49 | template
50 | class BasicIStreamWrapper {
51 | public:
52 | typedef typename StreamType::char_type Ch;
53 | BasicIStreamWrapper(StreamType& stream) : stream_(stream), count_(), peekBuffer_() {}
54 |
55 | Ch Peek() const {
56 | typename StreamType::int_type c = stream_.peek();
57 | return RAPIDJSON_LIKELY(c != StreamType::traits_type::eof()) ? static_cast(c) : static_cast('\0');
58 | }
59 |
60 | Ch Take() {
61 | typename StreamType::int_type c = stream_.get();
62 | if (RAPIDJSON_LIKELY(c != StreamType::traits_type::eof())) {
63 | count_++;
64 | return static_cast(c);
65 | }
66 | else
67 | return '\0';
68 | }
69 |
70 | // tellg() may return -1 when failed. So we count by ourself.
71 | size_t Tell() const { return count_; }
72 |
73 | Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
74 | void Put(Ch) { RAPIDJSON_ASSERT(false); }
75 | void Flush() { RAPIDJSON_ASSERT(false); }
76 | size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
77 |
78 | // For encoding detection only.
79 | const Ch* Peek4() const {
80 | RAPIDJSON_ASSERT(sizeof(Ch) == 1); // Only usable for byte stream.
81 | int i;
82 | bool hasError = false;
83 | for (i = 0; i < 4; ++i) {
84 | typename StreamType::int_type c = stream_.get();
85 | if (c == StreamType::traits_type::eof()) {
86 | hasError = true;
87 | stream_.clear();
88 | break;
89 | }
90 | peekBuffer_[i] = static_cast(c);
91 | }
92 | for (--i; i >= 0; --i)
93 | stream_.putback(peekBuffer_[i]);
94 | return !hasError ? peekBuffer_ : 0;
95 | }
96 |
97 | private:
98 | BasicIStreamWrapper(const BasicIStreamWrapper&);
99 | BasicIStreamWrapper& operator=(const BasicIStreamWrapper&);
100 |
101 | StreamType& stream_;
102 | size_t count_; //!< Number of characters read. Note:
103 | mutable Ch peekBuffer_[4];
104 | };
105 |
106 | typedef BasicIStreamWrapper IStreamWrapper;
107 | typedef BasicIStreamWrapper WIStreamWrapper;
108 |
109 | #if defined(__clang__) || defined(_MSC_VER)
110 | RAPIDJSON_DIAG_POP
111 | #endif
112 |
113 | RAPIDJSON_NAMESPACE_END
114 |
115 | #endif // RAPIDJSON_ISTREAMWRAPPER_H_
116 |
--------------------------------------------------------------------------------
/client/ObjectDetector/rapidjson/stringbuffer.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_STRINGBUFFER_H_
16 | #define RAPIDJSON_STRINGBUFFER_H_
17 |
18 | #include "stream.h"
19 | #include "internal/stack.h"
20 |
21 | #if RAPIDJSON_HAS_CXX11_RVALUE_REFS
22 | #include // std::move
23 | #endif
24 |
25 | #include "internal/stack.h"
26 |
27 | #if defined(__clang__)
28 | RAPIDJSON_DIAG_PUSH
29 | RAPIDJSON_DIAG_OFF(c++98-compat)
30 | #endif
31 |
32 | RAPIDJSON_NAMESPACE_BEGIN
33 |
34 | //! Represents an in-memory output stream.
35 | /*!
36 | \tparam Encoding Encoding of the stream.
37 | \tparam Allocator type for allocating memory buffer.
38 | \note implements Stream concept
39 | */
40 | template
41 | class GenericStringBuffer {
42 | public:
43 | typedef typename Encoding::Ch Ch;
44 |
45 | GenericStringBuffer(Allocator* allocator = 0, size_t capacity = kDefaultCapacity) : stack_(allocator, capacity) {}
46 |
47 | #if RAPIDJSON_HAS_CXX11_RVALUE_REFS
48 | GenericStringBuffer(GenericStringBuffer&& rhs) : stack_(std::move(rhs.stack_)) {}
49 | GenericStringBuffer& operator=(GenericStringBuffer&& rhs) {
50 | if (&rhs != this)
51 | stack_ = std::move(rhs.stack_);
52 | return *this;
53 | }
54 | #endif
55 |
56 | void Put(Ch c) { *stack_.template Push() = c; }
57 | void PutUnsafe(Ch c) { *stack_.template PushUnsafe() = c; }
58 | void Flush() {}
59 |
60 | void Clear() { stack_.Clear(); }
61 | void ShrinkToFit() {
62 | // Push and pop a null terminator. This is safe.
63 | *stack_.template Push() = '\0';
64 | stack_.ShrinkToFit();
65 | stack_.template Pop(1);
66 | }
67 |
68 | void Reserve(size_t count) { stack_.template Reserve(count); }
69 | Ch* Push(size_t count) { return stack_.template Push(count); }
70 | Ch* PushUnsafe(size_t count) { return stack_.template PushUnsafe(count); }
71 | void Pop(size_t count) { stack_.template Pop(count); }
72 |
73 | const Ch* GetString() const {
74 | // Push and pop a null terminator. This is safe.
75 | *stack_.template Push() = '\0';
76 | stack_.template Pop(1);
77 |
78 | return stack_.template Bottom();
79 | }
80 |
81 | //! Get the size of string in bytes in the string buffer.
82 | size_t GetSize() const { return stack_.GetSize(); }
83 |
84 | //! Get the length of string in Ch in the string buffer.
85 | size_t GetLength() const { return stack_.GetSize() / sizeof(Ch); }
86 |
87 | static const size_t kDefaultCapacity = 256;
88 | mutable internal::Stack stack_;
89 |
90 | private:
91 | // Prohibit copy constructor & assignment operator.
92 | GenericStringBuffer(const GenericStringBuffer&);
93 | GenericStringBuffer& operator=(const GenericStringBuffer&);
94 | };
95 |
96 | //! String buffer with UTF8 encoding
97 | typedef GenericStringBuffer > StringBuffer;
98 |
99 | template
100 | inline void PutReserve(GenericStringBuffer& stream, size_t count) {
101 | stream.Reserve(count);
102 | }
103 |
104 | template
105 | inline void PutUnsafe(GenericStringBuffer& stream, typename Encoding::Ch c) {
106 | stream.PutUnsafe(c);
107 | }
108 |
109 | //! Implement specialized version of PutN() with memset() for better performance.
110 | template<>
111 | inline void PutN(GenericStringBuffer >& stream, char c, size_t n) {
112 | std::memset(stream.stack_.Push(n), c, n * sizeof(c));
113 | }
114 |
115 | RAPIDJSON_NAMESPACE_END
116 |
117 | #if defined(__clang__)
118 | RAPIDJSON_DIAG_POP
119 | #endif
120 |
121 | #endif // RAPIDJSON_STRINGBUFFER_H_
122 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/inc/stringbuffer.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_STRINGBUFFER_H_
16 | #define RAPIDJSON_STRINGBUFFER_H_
17 |
18 | #include "stream.h"
19 | #include "internal/stack.h"
20 |
21 | #if RAPIDJSON_HAS_CXX11_RVALUE_REFS
22 | #include // std::move
23 | #endif
24 |
25 | #include "internal/stack.h"
26 |
27 | #if defined(__clang__)
28 | RAPIDJSON_DIAG_PUSH
29 | RAPIDJSON_DIAG_OFF(c++98-compat)
30 | #endif
31 |
32 | RAPIDJSON_NAMESPACE_BEGIN
33 |
34 | //! Represents an in-memory output stream.
35 | /*!
36 | \tparam Encoding Encoding of the stream.
37 | \tparam Allocator type for allocating memory buffer.
38 | \note implements Stream concept
39 | */
40 | template
41 | class GenericStringBuffer {
42 | public:
43 | typedef typename Encoding::Ch Ch;
44 |
45 | GenericStringBuffer(Allocator* allocator = 0, size_t capacity = kDefaultCapacity) : stack_(allocator, capacity) {}
46 |
47 | #if RAPIDJSON_HAS_CXX11_RVALUE_REFS
48 | GenericStringBuffer(GenericStringBuffer&& rhs) : stack_(std::move(rhs.stack_)) {}
49 | GenericStringBuffer& operator=(GenericStringBuffer&& rhs) {
50 | if (&rhs != this)
51 | stack_ = std::move(rhs.stack_);
52 | return *this;
53 | }
54 | #endif
55 |
56 | void Put(Ch c) { *stack_.template Push() = c; }
57 | void PutUnsafe(Ch c) { *stack_.template PushUnsafe() = c; }
58 | void Flush() {}
59 |
60 | void Clear() { stack_.Clear(); }
61 | void ShrinkToFit() {
62 | // Push and pop a null terminator. This is safe.
63 | *stack_.template Push() = '\0';
64 | stack_.ShrinkToFit();
65 | stack_.template Pop(1);
66 | }
67 |
68 | void Reserve(size_t count) { stack_.template Reserve(count); }
69 | Ch* Push(size_t count) { return stack_.template Push(count); }
70 | Ch* PushUnsafe(size_t count) { return stack_.template PushUnsafe(count); }
71 | void Pop(size_t count) { stack_.template Pop(count); }
72 |
73 | const Ch* GetString() const {
74 | // Push and pop a null terminator. This is safe.
75 | *stack_.template Push() = '\0';
76 | stack_.template Pop(1);
77 |
78 | return stack_.template Bottom();
79 | }
80 |
81 | //! Get the size of string in bytes in the string buffer.
82 | size_t GetSize() const { return stack_.GetSize(); }
83 |
84 | //! Get the length of string in Ch in the string buffer.
85 | size_t GetLength() const { return stack_.GetSize() / sizeof(Ch); }
86 |
87 | static const size_t kDefaultCapacity = 256;
88 | mutable internal::Stack stack_;
89 |
90 | private:
91 | // Prohibit copy constructor & assignment operator.
92 | GenericStringBuffer(const GenericStringBuffer&);
93 | GenericStringBuffer& operator=(const GenericStringBuffer&);
94 | };
95 |
96 | //! String buffer with UTF8 encoding
97 | typedef GenericStringBuffer > StringBuffer;
98 |
99 | template
100 | inline void PutReserve(GenericStringBuffer& stream, size_t count) {
101 | stream.Reserve(count);
102 | }
103 |
104 | template
105 | inline void PutUnsafe(GenericStringBuffer& stream, typename Encoding::Ch c) {
106 | stream.PutUnsafe(c);
107 | }
108 |
109 | //! Implement specialized version of PutN() with memset() for better performance.
110 | template<>
111 | inline void PutN(GenericStringBuffer >& stream, char c, size_t n) {
112 | std::memset(stream.stack_.Push(n), c, n * sizeof(c));
113 | }
114 |
115 | RAPIDJSON_NAMESPACE_END
116 |
117 | #if defined(__clang__)
118 | RAPIDJSON_DIAG_POP
119 | #endif
120 |
121 | #endif // RAPIDJSON_STRINGBUFFER_H_
122 |
--------------------------------------------------------------------------------
/client/imagedemo/curlclient/rapidjson/stringbuffer.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_STRINGBUFFER_H_
16 | #define RAPIDJSON_STRINGBUFFER_H_
17 |
18 | #include "stream.h"
19 | #include "internal/stack.h"
20 |
21 | #if RAPIDJSON_HAS_CXX11_RVALUE_REFS
22 | #include // std::move
23 | #endif
24 |
25 | #include "internal/stack.h"
26 |
27 | #if defined(__clang__)
28 | RAPIDJSON_DIAG_PUSH
29 | RAPIDJSON_DIAG_OFF(c++98-compat)
30 | #endif
31 |
32 | RAPIDJSON_NAMESPACE_BEGIN
33 |
34 | //! Represents an in-memory output stream.
35 | /*!
36 | \tparam Encoding Encoding of the stream.
37 | \tparam Allocator type for allocating memory buffer.
38 | \note implements Stream concept
39 | */
40 | template
41 | class GenericStringBuffer {
42 | public:
43 | typedef typename Encoding::Ch Ch;
44 |
45 | GenericStringBuffer(Allocator* allocator = 0, size_t capacity = kDefaultCapacity) : stack_(allocator, capacity) {}
46 |
47 | #if RAPIDJSON_HAS_CXX11_RVALUE_REFS
48 | GenericStringBuffer(GenericStringBuffer&& rhs) : stack_(std::move(rhs.stack_)) {}
49 | GenericStringBuffer& operator=(GenericStringBuffer&& rhs) {
50 | if (&rhs != this)
51 | stack_ = std::move(rhs.stack_);
52 | return *this;
53 | }
54 | #endif
55 |
56 | void Put(Ch c) { *stack_.template Push() = c; }
57 | void PutUnsafe(Ch c) { *stack_.template PushUnsafe() = c; }
58 | void Flush() {}
59 |
60 | void Clear() { stack_.Clear(); }
61 | void ShrinkToFit() {
62 | // Push and pop a null terminator. This is safe.
63 | *stack_.template Push() = '\0';
64 | stack_.ShrinkToFit();
65 | stack_.template Pop(1);
66 | }
67 |
68 | void Reserve(size_t count) { stack_.template Reserve(count); }
69 | Ch* Push(size_t count) { return stack_.template Push(count); }
70 | Ch* PushUnsafe(size_t count) { return stack_.template PushUnsafe(count); }
71 | void Pop(size_t count) { stack_.template Pop(count); }
72 |
73 | const Ch* GetString() const {
74 | // Push and pop a null terminator. This is safe.
75 | *stack_.template Push() = '\0';
76 | stack_.template Pop(1);
77 |
78 | return stack_.template Bottom();
79 | }
80 |
81 | //! Get the size of string in bytes in the string buffer.
82 | size_t GetSize() const { return stack_.GetSize(); }
83 |
84 | //! Get the length of string in Ch in the string buffer.
85 | size_t GetLength() const { return stack_.GetSize() / sizeof(Ch); }
86 |
87 | static const size_t kDefaultCapacity = 256;
88 | mutable internal::Stack stack_;
89 |
90 | private:
91 | // Prohibit copy constructor & assignment operator.
92 | GenericStringBuffer(const GenericStringBuffer&);
93 | GenericStringBuffer& operator=(const GenericStringBuffer&);
94 | };
95 |
96 | //! String buffer with UTF8 encoding
97 | typedef GenericStringBuffer > StringBuffer;
98 |
99 | template
100 | inline void PutReserve(GenericStringBuffer& stream, size_t count) {
101 | stream.Reserve(count);
102 | }
103 |
104 | template
105 | inline void PutUnsafe(GenericStringBuffer& stream, typename Encoding::Ch c) {
106 | stream.PutUnsafe(c);
107 | }
108 |
109 | //! Implement specialized version of PutN() with memset() for better performance.
110 | template<>
111 | inline void PutN(GenericStringBuffer >& stream, char c, size_t n) {
112 | std::memset(stream.stack_.Push(n), c, n * sizeof(c));
113 | }
114 |
115 | RAPIDJSON_NAMESPACE_END
116 |
117 | #if defined(__clang__)
118 | RAPIDJSON_DIAG_POP
119 | #endif
120 |
121 | #endif // RAPIDJSON_STRINGBUFFER_H_
122 |
--------------------------------------------------------------------------------
/server/image/eventserver.c:
--------------------------------------------------------------------------------
1 | /*
2 | * eventserver.c
3 | *
4 | * Created on: Jun 13, 2017
5 | * Author: tla001
6 | */
7 | #include
8 | #include
9 | #include
10 | #include
11 | #include
12 | #include
13 | #include
14 | #include
15 | #include
16 | #include
17 | #include
18 | #include
19 |
20 | //iso
21 | #include
22 | #include
23 | #include
24 |
25 | //others
26 | #include
27 | #include
28 | #include
29 | #include
30 | #include
31 | #include
32 | #include
33 | #include
34 | #include
35 | #include
36 |
37 | #include "cJSON.h"
38 |
39 | void test_request_cb(struct evhttp_request *req, void *arg) {
40 | int ppid=getppid();
41 | int type = evhttp_request_get_command(req);
42 | const char *requestUri = evhttp_request_get_uri(req);
43 | if (EVHTTP_REQ_GET == type) {
44 | printf("method:GET uri:%s\n", requestUri);
45 | } else if (EVHTTP_REQ_POST == type) {
46 | printf("method:POST uri:%s\n", requestUri);
47 | }
48 |
49 | char *post_data = (char *) EVBUFFER_DATA(req->input_buffer);
50 | // printf("post data: %s", post_data);
51 | size_t maxSize = 0;
52 | memcpy(&maxSize, post_data, sizeof(size_t));
53 |
54 |
55 | FILE *fp = fopen("test.jpg", "wb");
56 | fwrite(post_data + sizeof(size_t), 1, maxSize, fp);
57 | fclose(fp);
58 | kill(ppid,SIGUSR1);
59 | const char *FIFO_NAME="/tmp/myfifo";
60 | int fifo_fd=open(FIFO_NAME,O_RDONLY);
61 | char tmp=0;
62 | int res=read(fifo_fd,&tmp,1);
63 | if(res==-1){
64 | printf("read err\n");
65 | goto THISEXIT;
66 | }
67 | close(fifo_fd);
68 | printf("fifo tmp=%c\n", tmp);
69 | char *resData="rec";
70 | if(tmp=='1'){
71 | FILE *fp=fopen("res.json","rb");
72 | if(fp==NULL)
73 | goto THISEXIT;
74 | fseek(fp,0,SEEK_END);
75 | size_t size=ftell(fp);
76 | rewind(fp);
77 | resData=NULL;
78 | resData=(char*)malloc(sizeof(char)*size+1);
79 | int readSize=fread(resData,1,size,fp);
80 | if(readSize!=size){
81 | printf("read err\n");
82 | }
83 | resData[sizeof(char)*size]='\0';
84 | printf("%s\n", resData);
85 | fclose(fp);
86 | }
87 |
88 |
89 |
90 | printf("rec data len:%d\n", strlen(resData));
91 | struct evbuffer *buf1 = evbuffer_new();
92 | evbuffer_add_printf(buf1, resData);
93 | evhttp_send_reply(req, 200, "OK", buf1);
94 | if(resData&&tmp=='1')
95 | free(resData);
96 | return ;
97 | THISEXIT:
98 | kill(ppid,SIGINT);
99 |
100 | exit(-1);
101 | }
102 | void ServerRun() {
103 | int port = 5555;
104 |
105 | struct event_base *base;
106 | struct evhttp *http;
107 | struct evhttp_bound_socket *handle;
108 |
109 | if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) {
110 | printf("signal error,error[%d],error[%s]", errno, strerror(errno));
111 | exit(-1);
112 | }
113 | base = event_base_new();
114 | if (!base) {
115 | printf("create an event_base err\n");
116 | exit(-1);
117 | }
118 | http = evhttp_new(base);
119 | if (!http) {
120 | printf("create evhttp err\n");
121 | exit(-1);
122 | }
123 | evhttp_set_cb(http, "/test", test_request_cb, NULL);
124 |
125 | handle = evhttp_bind_socket_with_handle(http, "0.0.0.0", port);
126 | if (!handle) {
127 | printf("bind to port[%d] err\n", port);
128 | exit(-1);
129 | }
130 |
131 | {
132 | struct sockaddr_storage ss;
133 | evutil_socket_t fd;
134 | ev_socklen_t socklen = sizeof(ss);
135 | char addrbuf[128];
136 | void *inaddr;
137 | const char *addr;
138 | int got_port = -1;
139 | fd = evhttp_bound_socket_get_fd(handle);
140 | memset(&ss, 0, sizeof(ss));
141 | if (getsockname(fd, (struct sockaddr*) &ss, &socklen)) {
142 | perror("getsockname failed");
143 | exit(-1);
144 | }
145 | if (ss.ss_family == AF_INET) {
146 | got_port = ntohs(((struct sockaddr_in*) &ss)->sin_port);
147 | inaddr = &((struct sockaddr_in*) &ss)->sin_addr;
148 | } else if (ss.ss_family == AF_INET6) {
149 | got_port = ntohs(((struct sockaddr_in6*) &ss)->sin6_port);
150 | inaddr = &((struct sockaddr_in6*) &ss)->sin6_addr;
151 | } else {
152 | printf("Weird address family\n");
153 | exit(1);
154 | }
155 |
156 | addr = evutil_inet_ntop(ss.ss_family, inaddr, addrbuf, sizeof(addrbuf));
157 | if (addr) {
158 | printf("Listening on %s:%d\n", addr, got_port);
159 | } else {
160 | printf("evutil_inet_ntop failed\n");
161 | exit(-1);
162 | }
163 | }
164 | event_base_dispatch(base);
165 | }
166 |
--------------------------------------------------------------------------------
/client/ObjectDetector/rapidjson/fwd.h:
--------------------------------------------------------------------------------
1 | // Tencent is pleased to support the open source community by making RapidJSON available.
2 | //
3 | // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4 | //
5 | // Licensed under the MIT License (the "License"); you may not use this file except
6 | // in compliance with the License. You may obtain a copy of the License at
7 | //
8 | // http://opensource.org/licenses/MIT
9 | //
10 | // Unless required by applicable law or agreed to in writing, software distributed
11 | // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12 | // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13 | // specific language governing permissions and limitations under the License.
14 |
15 | #ifndef RAPIDJSON_FWD_H_
16 | #define RAPIDJSON_FWD_H_
17 |
18 | #include "rapidjson.h"
19 |
20 | RAPIDJSON_NAMESPACE_BEGIN
21 |
22 | // encodings.h
23 |
24 | template struct UTF8;
25 | template struct UTF16;
26 | template struct UTF16BE;
27 | template struct UTF16LE;
28 | template struct UTF32;
29 | template struct UTF32BE;
30 | template struct UTF32LE;
31 | template struct ASCII;
32 | template struct AutoUTF;
33 |
34 | template
35 | struct Transcoder;
36 |
37 | // allocators.h
38 |
39 | class CrtAllocator;
40 |
41 | template
42 | class MemoryPoolAllocator;
43 |
44 | // stream.h
45 |
46 | template
47 | struct GenericStringStream;
48 |
49 | typedef GenericStringStream > StringStream;
50 |
51 | template
52 | struct GenericInsituStringStream;
53 |
54 | typedef GenericInsituStringStream > InsituStringStream;
55 |
56 | // stringbuffer.h
57 |
58 | template
59 | class GenericStringBuffer;
60 |
61 | typedef GenericStringBuffer, CrtAllocator> StringBuffer;
62 |
63 | // filereadstream.h
64 |
65 | class FileReadStream;
66 |
67 | // filewritestream.h
68 |
69 | class FileWriteStream;
70 |
71 | // memorybuffer.h
72 |
73 | template
74 | struct GenericMemoryBuffer;
75 |
76 | typedef GenericMemoryBuffer MemoryBuffer;
77 |
78 | // memorystream.h
79 |
80 | struct MemoryStream;
81 |
82 | // reader.h
83 |
84 | template
85 | struct BaseReaderHandler;
86 |
87 | template
88 | class GenericReader;
89 |
90 | typedef GenericReader