From df78e3d16e807781e933adf007b727f3fa8a4715 Mon Sep 17 00:00:00 2001 From: modehua Date: Sun, 29 Jan 2023 15:25:24 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=BC=96=E8=AF=91linux=20=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E8=AF=AD=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/CMakeLists.txt | 5 +++-- hgdriver/wrapper/CMakeLists.txt | 3 +++ hgsane/CMakeLists.txt | 1 + hgsane/sane_hg_mdw.cpp | 18 +++++++++--------- hgsane/sane_hg_mdw.h | 2 +- 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/hgdriver/hgdev/CMakeLists.txt b/hgdriver/hgdev/CMakeLists.txt index 89eff29..3fda67e 100644 --- a/hgdriver/hgdev/CMakeLists.txt +++ b/hgdriver/hgdev/CMakeLists.txt @@ -50,9 +50,10 @@ target_link_libraries(${PROJECT_NAME} PRIVATE usb-1.0) target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/../3rdparty/nick ${PROJECT_SOURCE_DIR}/../ImageProcess - ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/include + ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/include ${PROJECT_SOURCE_DIR}/../3rdparty/tiff/include - ${PROJECT_SOURCE_DIR}/../../../sdk/include + ${PROJECT_SOURCE_DIR}/../../../sdk/include + ${PROJECT_SOURCE_DIR}/../wrapper ) set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../../../build) diff --git a/hgdriver/wrapper/CMakeLists.txt b/hgdriver/wrapper/CMakeLists.txt index 17bb5f9..79bb56c 100644 --- a/hgdriver/wrapper/CMakeLists.txt +++ b/hgdriver/wrapper/CMakeLists.txt @@ -36,6 +36,7 @@ endif() target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/../../../build/libgdev.a ${PROJECT_SOURCE_DIR}/../../../build/libgimgproc.a + ${PROJECT_SOURCE_DIR}/../../../release/uos/${CMAKE_SYSTEM_PROCESSOR}/liblang.so ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/libopencv_imgproc.a ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/libopencv_imgcodecs.a ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/libopencv_highgui.a @@ -49,6 +50,7 @@ target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/libquirc.a ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/libzlib.a ${PROJECT_SOURCE_DIR}/../3rdparty/opencv/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/liblibwebp.a + ${PROJECT_SOURCE_DIR}/../../../sdk/lib/uos/${CMAKE_SYSTEM_PROCESSOR}/libusb-1.0.a #uos下放的先后顺序不对可能会导致库链接不上 udev pthread dl m) @@ -95,6 +97,7 @@ target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/../3rdparty/tiff/include ${PROJECT_SOURCE_DIR}/../ImageProcess ${PROJECT_SOURCE_DIR}/../hgdev + ${PROJECT_SOURCE_DIR}/../wrapper ${PROJECT_SOURCE_DIR}/../../../sdk/include ) set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../../../release/uos/${CMAKE_SYSTEM_PROCESSOR}) diff --git a/hgsane/CMakeLists.txt b/hgsane/CMakeLists.txt index de2991f..ca9f5ae 100644 --- a/hgsane/CMakeLists.txt +++ b/hgsane/CMakeLists.txt @@ -18,6 +18,7 @@ link_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/../../release/uos/${CMAKE_SYSTEM_PROCESSOR} ) target_link_libraries(${PROJECT_NAME} PRIVATE hgdriver + ${PROJECT_SOURCE_DIR}/../../release/uos/${CMAKE_SYSTEM_PROCESSOR}/liblang.so ${PROJECT_SOURCE_DIR}/../../release/uos/${CMAKE_SYSTEM_PROCESSOR}/libhgdriver.so ) diff --git a/hgsane/sane_hg_mdw.cpp b/hgsane/sane_hg_mdw.cpp index 82dc360..623c544 100644 --- a/hgsane/sane_hg_mdw.cpp +++ b/hgsane/sane_hg_mdw.cpp @@ -171,7 +171,7 @@ namespace local_utility return str > bgn; } - // 暂不支持科学计数?1.2e+10 + // 暂不支持科学计数�?1.2e+10 bool get_number(const char*& str, double& val) { const char* bgn = str; @@ -555,7 +555,7 @@ SANE_Option_Descriptor* hg_sane_middleware::string_option_to_SANE_descriptor(con sod->unit = SANE_UNIT_NONE; sod->size = values.size(); sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项 - | SANE_CAP_AUTOMATIC; // 硬件可设置默认? + | SANE_CAP_AUTOMATIC; // 硬件可设置默认�? if (values.size()) { sod->constraint_type = SANE_CONSTRAINT_STRING_LIST; @@ -676,7 +676,7 @@ SANE_Option_Descriptor* hg_sane_middleware::number_option_to_SANE_descriptor(con sod->unit = SANE_UNIT_NONE; sod->size = sizeof(SANE_Word); sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项 - /*| SANE_CAP_AUTOMATIC*/; // 硬件可设置默认? + /*| SANE_CAP_AUTOMATIC*/; // 硬件可设置默认�? if (values.size()) { @@ -726,7 +726,7 @@ SANE_Option_Descriptor* hg_sane_middleware::number_option_to_SANE_descriptor(con sod->unit = SANE_UNIT_NONE; sod->size = sizeof(SANE_Word); sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项 - /*| SANE_CAP_AUTOMATIC*/; // 硬件可设置默认? + /*| SANE_CAP_AUTOMATIC*/; // 硬件可设置默认�? if (values.size()) { @@ -1002,7 +1002,7 @@ SANE_Option_Descriptor* hg_sane_middleware::from_json(scanner_handle h, const st //if (jsn->get_value("enable", enabled) && !enabled) // ret->cap |= SANE_CAP_INACTIVE; - // 关联? + // 关联�? json* depend = NULL; SLAVEOP so; if (jsn->get_value("depend_or", depend)) @@ -1129,10 +1129,10 @@ SANE_Option_Descriptor* hg_sane_middleware::find_stored_descriptor(scanner_handl if (IS_PTR_NUMBER(option)) { if (id) - *id = (int)option; + *id = (SANE_Int)(long long)option; for (const auto& v : (*it)->opts) { - if (v.option_no == (int)option) + if (v.option_no == (SANE_Int)(long long)option) return v.desc; } } @@ -1349,7 +1349,7 @@ SANE_Status hg_sane_middleware::get_devices(const SANE_Device*** device_list, SA if (hgerr == SCANNER_ERR_INSUFFICIENT_MEMORY) { - count += 4; // 为两次hg_scanner_enum间隙可能新增的设备预留空? + count += 4; // 为两次hg_scanner_enum间隙可能新增的设备预留空�? dev = (ScannerInfo*)local_utility::acquire_memory(sizeof(ScannerInfo) * count, "hg_sane_middleware::get_devices"); hgerr = hg_scanner_enum(dev, &count, local_only); if (hgerr != SCANNER_ERR_OK) @@ -1727,7 +1727,7 @@ bool hg_sane_middleware::is_ready(void) } /// -/// 关联项处? +/// 关联项处�? bool hg_sane_middleware::compare_val_equal(const char* cur_val, const char* limit_l, const char* limit_r) { return strcmp(cur_val, limit_l) == 0; diff --git a/hgsane/sane_hg_mdw.h b/hgsane/sane_hg_mdw.h index 9d7ac2e..140489f 100644 --- a/hgsane/sane_hg_mdw.h +++ b/hgsane/sane_hg_mdw.h @@ -89,7 +89,7 @@ typedef struct _dev_inst return dev == h; } - struct _dev_inst() + _dev_inst() { dev = nullptr; name = ""; From e8b627744c0d65d14a8dd6f45c8c1481d6a7cc8a Mon Sep 17 00:00:00 2001 From: 13038267101 Date: Sun, 29 Jan 2023 15:41:05 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hgdriver/hgdev/common_setting.h | 153 +------------------------------- 1 file changed, 1 insertion(+), 152 deletions(-) diff --git a/hgdriver/hgdev/common_setting.h b/hgdriver/hgdev/common_setting.h index cb24cc9..f613aa5 100644 --- a/hgdriver/hgdev/common_setting.h +++ b/hgdriver/hgdev/common_setting.h @@ -1168,155 +1168,4 @@ namespace setting3399 {PAPER_MAX_SIZE, TwSS::MaxSize, setting3288dsp::G400_MAXSIZE}, {PAPER_TRIGEMINY, TwSS::MaxSize, setting3288dsp::G400_LONGLETTER}, }; - static std::mapjson_name = - { - { SANE_STD_OPT_NAME_RESTORE ,ID_OPTION_TITLE_HFMRSZ }, - { SANE_STD_OPT_NAME_HELP ,ID_OPTION_TITLE_BZ }, - { SANE_STD_OPT_NAME_IS_MULTI_OUT ,ID_OPTION_TITLE_DLSC }, - { SANE_STD_OPT_NAME_MULTI_OUT_TYPE ,ID_OPTION_TITLE_DLSCLX }, - { SANE_STD_OPT_NAME_COLOR_MODE ,ID_OPTION_TITLE_YSMS }, - { SANE_STD_OPT_NAME_BINARY_THRESHOLD ,ID_OPTION_TITLE_HBTXYZ }, - { SANE_STD_OPT_NAME_REVERSE_01 ,ID_OPTION_TITLE_HBTXFSSC }, - { SANE_STD_OPT_NAME_FILTER ,ID_OPTION_TITLE_HDHHBTX_CSYZQ }, - { SANE_STD_OPT_NAME_RID_MULTIOUT_RED ,ID_OPTION_TITLE_24WCSTX_DLSCCH }, - { SANE_STD_OPT_NAME_RID_ANSWER_SHEET_RED ,ID_OPTION_TITLE_24WCSTX_DTKCH }, - { SANE_STD_OPT_NAME_ERASE_BACKGROUND ,ID_OPTION_TITLE_BJYC }, - { SANE_STD_OPT_NAME_BKG_COLOR_RANGE ,ID_OPTION_TITLE_BJSCFDFW }, - { SANE_STD_OPT_NAME_SHARPEN ,ID_OPTION_TITLE_RHYMH }, - { SANE_STD_OPT_NAME_RID_MORR ,ID_OPTION_TITLE_QCMW }, - { SANE_STD_OPT_NAME_RID_GRID ,ID_OPTION_TITLE_CWW }, - { SANE_STD_OPT_NAME_ERROR_EXTENSION ,ID_OPTION_TITLE_CWKS }, - { SANE_STD_OPT_NAME_NOISE_OPTIMIZE ,ID_OPTION_TITLE_HBTXZDYH }, - { SANE_STD_OPT_NAME_NOISE_SIZE ,ID_OPTION_TITLE_ZDYHCC }, - { SANE_STD_OPT_NAME_PAPER ,ID_OPTION_TITLE_ZZCC }, - { SANE_STD_OPT_NAME_CUSTOM_AREA ,ID_OPTION_TITLE_ZDYSMQY }, - { SANE_STD_OPT_NAME_CUSTOM_AREA_LEFT ,ID_OPTION_TITLE_SMQYZCmm }, - { SANE_STD_OPT_NAME_CUSTOM_AREA_RIGHT ,ID_OPTION_TITLE_SMQYYCmm }, - { SANE_STD_OPT_NAME_CUSTOM_AREA_TOP ,ID_OPTION_TITLE_SMQYSCmm }, - { SANE_STD_OPT_NAME_CUSTOM_AREA_BOTTOM ,ID_OPTION_TITLE_SMQYXCmm }, - { SANE_STD_OPT_NAME_SIZE_CHECK ,ID_OPTION_TITLE_CCJC }, - { SANE_STD_OPT_NAME_PAGE ,ID_OPTION_TITLE_SMYM }, - { SANE_STD_OPT_NAME_DISCARD_BLANK_SENS ,ID_OPTION_TITLE_TGKBYLMD }, - { SANE_STD_OPT_NAME_RESOLUTION ,ID_OPTION_TITLE_FBL }, - { SANE_STD_OPT_NAME_TIME_TO_SLEEP ,ID_OPTION_TITLE_XMSJ }, - { SANE_STD_OPT_NAME_IMAGE_QUALITY ,ID_OPTION_TITLE_HZ }, - { SANE_STD_OPT_NAME_EXCHANGE ,ID_OPTION_TITLE_JHZFM }, - { SANE_STD_OPT_NAME_SPLIT ,ID_OPTION_TITLE_TXCF }, - { SANE_STD_OPT_NAME_ANTI_SKEW ,ID_OPTION_TITLE_ZDJP }, - { SANE_STD_OPT_NAME_IS_CUSTOM_GAMMA ,ID_OPTION_TITLE_QYSDQX }, - { SANE_STD_OPT_NAME_GAMMA ,ID_OPTION_TITLE_JMZ }, - { SANE_STD_OPT_NAME_BRIGHTNESS ,ID_OPTION_TITLE_LDZ }, - { SANE_STD_OPT_NAME_CONTRAST ,ID_OPTION_TITLE_DBD }, - { SANE_STD_OPT_NAME_IS_PHOTO_MODE ,ID_OPTION_TITLE_ZPMS }, - { SANE_STD_OPT_NAME_ERASE_BLACK_FRAME ,ID_OPTION_TITLE_XCHK }, - { SANE_STD_OPT_NAME_DARK_SAMPLE ,ID_OPTION_TITLE_SSYZ }, - { SANE_STD_OPT_NAME_THRESHOLD ,ID_OPTION_TITLE_YZ }, - { SANE_STD_OPT_NAME_ANTI_NOISE_LEVEL ,ID_OPTION_TITLE_BJKZDJ }, - { SANE_STD_OPT_NAME_MARGIN ,ID_OPTION_TITLE_BYSJ }, - { SANE_STD_OPT_NAME_FILL_BKG_MODE ,ID_OPTION_TITLE_BJTCFS }, - { SANE_STD_OPT_NAME_IS_ANTI_PERMEATE ,ID_OPTION_TITLE_FZST }, - { SANE_STD_OPT_NAME_ANTI_PERMEATE_LEVEL ,ID_OPTION_TITLE_FZSTDJ }, - { SANE_STD_OPT_NAME_RID_HOLE ,ID_OPTION_TITLE_CKYC }, - { SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE ,ID_OPTION_TITLE_CKSSFWZFMBL }, - { SANE_STD_OPT_NAME_RID_HOLE_L ,ID_OPTION_TITLE_CKYCZC }, - { SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_L ,ID_OPTION_TITLE_ZCCKSSFWZFMBL }, - { SANE_STD_OPT_NAME_RID_HOLE_R ,ID_OPTION_TITLE_CKYCYC }, - { SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_R ,ID_OPTION_TITLE_YCCKSSFWZFMBL }, - { SANE_STD_OPT_NAME_RID_HOLE_T ,ID_OPTION_TITLE_CKYCSC }, - { SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_T ,ID_OPTION_TITLE_SCCKSSFWZFMBL }, - { SANE_STD_OPT_NAME_RID_HOLE_B ,ID_OPTION_TITLE_CKYCXC }, - { SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_B ,ID_OPTION_TITLE_XCCKSSFWZFMBL }, - { SANE_STD_OPT_NAME_IS_FILL_COLOR ,ID_OPTION_TITLE_SCTC }, - { SANE_STD_OPT_NAME_IS_ULTROSONIC_CHECK ,ID_OPTION_TITLE_CSBJC }, - { SANE_STD_OPT_NAME_DOUBLE_FEED_HANDLE ,ID_OPTION_TITLE_SZTPCL }, - { SANE_STD_OPT_NAME_IS_CHECK_STAPLE ,ID_OPTION_TITLE_ZDJC }, - { SANE_STD_OPT_NAME_SCAN_MODE ,ID_OPTION_TITLE_SMZS }, - { SANE_STD_OPT_NAME_SCAN_COUNT ,ID_OPTION_TITLE_SMSL }, - { SANE_STD_OPT_NAME_TEXT_DIRECTION ,ID_OPTION_TITLE_WGFX }, - { SANE_STD_OPT_NAME_IS_ROTATE_BKG_180 ,ID_OPTION_TITLE_BMXZ180 }, - { SANE_STD_OPT_NAME_IS_CHECK_DOG_EAR ,ID_OPTION_TITLE_ZJJC }, - { SANE_STD_OPT_NAME_DOG_EAR_SIZE ,ID_OPTION_TITLE_ZJDX }, - { SANE_STD_OPT_NAME_IS_CHECK_ASKEW ,ID_OPTION_TITLE_WXJC }, - { SANE_STD_OPT_NAME_ASKEW_RANGE ,ID_OPTION_TITLE_WXRRD }, - { SANE_STD_OPT_NAME_FEED_STRENGTH ,ID_OPTION_TITLE_FZQD }, - { SANE_STD_OPT_NAME_IS_AUTO_FEED_STRENGTH ,ID_OPTION_TITLE_ZDFZQD }, - { SANE_STD_OPT_NAME_FEED_STRENGTH_VALUE ,ID_OPTION_TITLE_JZSBL }, - { SANE_STD_OPT_NAME_WAIT_TO_SCAN ,ID_OPTION_TITLE_DZSM }, - { SANE_STD_OPT_NAME_FOLD_TYPE ,ID_OPTION_TITLE_DZMS }, - }; - static std::vectorjson_name_ - { - SANE_STD_OPT_NAME_RESTORE, - SANE_STD_OPT_NAME_HELP, - SANE_STD_OPT_NAME_IS_MULTI_OUT, - SANE_STD_OPT_NAME_MULTI_OUT_TYPE, - SANE_STD_OPT_NAME_COLOR_MODE, - SANE_STD_OPT_NAME_BINARY_THRESHOLD, - SANE_STD_OPT_NAME_REVERSE_01 , - SANE_STD_OPT_NAME_FILTER, - SANE_STD_OPT_NAME_RID_MULTIOUT_RED, - SANE_STD_OPT_NAME_RID_ANSWER_SHEET_RED, - SANE_STD_OPT_NAME_ERASE_BACKGROUND, - SANE_STD_OPT_NAME_BKG_COLOR_RANGE, - SANE_STD_OPT_NAME_SHARPEN, - SANE_STD_OPT_NAME_RID_MORR, - SANE_STD_OPT_NAME_RID_GRID, - SANE_STD_OPT_NAME_ERROR_EXTENSION, - SANE_STD_OPT_NAME_NOISE_OPTIMIZE, - SANE_STD_OPT_NAME_NOISE_SIZE, - SANE_STD_OPT_NAME_PAPER, - SANE_STD_OPT_NAME_CUSTOM_AREA, - SANE_STD_OPT_NAME_CUSTOM_AREA_LEFT, - SANE_STD_OPT_NAME_CUSTOM_AREA_RIGHT, - SANE_STD_OPT_NAME_CUSTOM_AREA_TOP, - SANE_STD_OPT_NAME_CUSTOM_AREA_BOTTOM, - SANE_STD_OPT_NAME_SIZE_CHECK, - SANE_STD_OPT_NAME_PAGE, - SANE_STD_OPT_NAME_DISCARD_BLANK_SENS, - SANE_STD_OPT_NAME_RESOLUTION, - SANE_STD_OPT_NAME_TIME_TO_SLEEP, - SANE_STD_OPT_NAME_IMAGE_QUALITY, - SANE_STD_OPT_NAME_EXCHANGE, - SANE_STD_OPT_NAME_SPLIT, - SANE_STD_OPT_NAME_ANTI_SKEW, - SANE_STD_OPT_NAME_IS_CUSTOM_GAMMA, - SANE_STD_OPT_NAME_GAMMA, - SANE_STD_OPT_NAME_BRIGHTNESS, - SANE_STD_OPT_NAME_CONTRAST, - SANE_STD_OPT_NAME_IS_PHOTO_MODE, - SANE_STD_OPT_NAME_ERASE_BLACK_FRAME, - SANE_STD_OPT_NAME_DARK_SAMPLE, - SANE_STD_OPT_NAME_THRESHOLD, - SANE_STD_OPT_NAME_ANTI_NOISE_LEVEL, - SANE_STD_OPT_NAME_MARGIN, - SANE_STD_OPT_NAME_FILL_BKG_MODE, - SANE_STD_OPT_NAME_IS_ANTI_PERMEATE, - SANE_STD_OPT_NAME_ANTI_PERMEATE_LEVEL, - SANE_STD_OPT_NAME_RID_HOLE, - SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE, - SANE_STD_OPT_NAME_RID_HOLE_L, - SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_L, - SANE_STD_OPT_NAME_RID_HOLE_R, - SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_R, - SANE_STD_OPT_NAME_RID_HOLE_T, - SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_T, - SANE_STD_OPT_NAME_RID_HOLE_B, - SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_B, - SANE_STD_OPT_NAME_IS_FILL_COLOR, - SANE_STD_OPT_NAME_IS_ULTROSONIC_CHECK, - SANE_STD_OPT_NAME_DOUBLE_FEED_HANDLE, - SANE_STD_OPT_NAME_IS_CHECK_STAPLE, - SANE_STD_OPT_NAME_SCAN_MODE, - SANE_STD_OPT_NAME_SCAN_COUNT, - SANE_STD_OPT_NAME_TEXT_DIRECTION, - SANE_STD_OPT_NAME_IS_ROTATE_BKG_180, - SANE_STD_OPT_NAME_IS_CHECK_DOG_EAR, - SANE_STD_OPT_NAME_DOG_EAR_SIZE, - SANE_STD_OPT_NAME_IS_CHECK_ASKEW, - SANE_STD_OPT_NAME_ASKEW_RANGE, - SANE_STD_OPT_NAME_FEED_STRENGTH, - SANE_STD_OPT_NAME_IS_AUTO_FEED_STRENGTH, - SANE_STD_OPT_NAME_FEED_STRENGTH_VALUE, - SANE_STD_OPT_NAME_WAIT_TO_SCAN, - SANE_STD_OPT_NAME_FOLD_TYPE - }; \ No newline at end of file +