hikyuu 2.6.8__py3-none-manylinux2014_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hikyuu/LICENSE.txt +21 -0
- hikyuu/__init__.py +577 -0
- hikyuu/__init__.pyi +872 -0
- hikyuu/analysis/__init__.py +14 -0
- hikyuu/analysis/__init__.pyi +572 -0
- hikyuu/analysis/analysis.py +151 -0
- hikyuu/analysis/analysis.pyi +602 -0
- hikyuu/config/__init__.py +1 -0
- hikyuu/config/block/__init__.py +0 -0
- hikyuu/config/block/dybk.ini +5357 -0
- hikyuu/config/block/gnbk.ini +50024 -0
- hikyuu/config/block/hybk.ini +5464 -0
- hikyuu/config/block/self.ini +10 -0
- hikyuu/config/block/zsbk.ini +65543 -0
- hikyuu/core.py +27 -0
- hikyuu/core.pyi +567 -0
- hikyuu/cpp/__init__.py +1 -0
- hikyuu/cpp/__init__.pyi +3 -0
- hikyuu/cpp/core310.pyi +14179 -0
- hikyuu/cpp/core310.so +0 -0
- hikyuu/cpp/core311.pyi +14179 -0
- hikyuu/cpp/core311.so +0 -0
- hikyuu/cpp/core312.pyi +14179 -0
- hikyuu/cpp/core312.so +0 -0
- hikyuu/cpp/core313.pyi +14158 -0
- hikyuu/cpp/core313.so +0 -0
- hikyuu/cpp/core39.pyi +14179 -0
- hikyuu/cpp/core39.so +0 -0
- hikyuu/cpp/i18n/__init__.py +0 -0
- hikyuu/cpp/i18n/zh_CN/__init__.py +0 -0
- hikyuu/cpp/i18n/zh_CN/hikyuu.mo +0 -0
- hikyuu/cpp/libcrypto.so.3 +0 -0
- hikyuu/cpp/libhikyuu.so +0 -0
- hikyuu/cpp/libhku_hdf5.so +0 -0
- hikyuu/cpp/libhku_hdf5.so.200 +0 -0
- hikyuu/cpp/libhku_hdf5.so.200.2.0 +0 -0
- hikyuu/cpp/libhku_hdf5_cpp.so +0 -0
- hikyuu/cpp/libhku_hdf5_cpp.so.200 +0 -0
- hikyuu/cpp/libhku_hdf5_cpp.so.200.2.0 +0 -0
- hikyuu/cpp/libhku_hdf5_hl.so +0 -0
- hikyuu/cpp/libhku_hdf5_hl.so.200 +0 -0
- hikyuu/cpp/libhku_hdf5_hl.so.200.1.0 +0 -0
- hikyuu/cpp/libhku_hdf5_hl_cpp.so +0 -0
- hikyuu/cpp/libhku_hdf5_hl_cpp.so.200 +0 -0
- hikyuu/cpp/libhku_hdf5_hl_cpp.so.200.1.0 +0 -0
- hikyuu/cpp/libhku_hdf5_tools.so +0 -0
- hikyuu/cpp/libhku_hdf5_tools.so.200 +0 -0
- hikyuu/cpp/libhku_hdf5_tools.so.200.1.1 +0 -0
- hikyuu/cpp/libmysqlclient.so +0 -0
- hikyuu/cpp/libmysqlclient.so.21 +0 -0
- hikyuu/cpp/libmysqlclient.so.21.2.32 +0 -0
- hikyuu/cpp/libresolv.so.2 +0 -0
- hikyuu/cpp/libsqlite3.so +0 -0
- hikyuu/cpp/libssl.so.3 +0 -0
- hikyuu/cpp/libzstd.so.1 +0 -0
- hikyuu/data/__init__.py +1 -0
- hikyuu/data/clickhouse_upgrade/__init__.py +1 -0
- hikyuu/data/clickhouse_upgrade/createdb.sql +1085 -0
- hikyuu/data/common.py +248 -0
- hikyuu/data/common_clickhouse.py +465 -0
- hikyuu/data/common_h5.py +398 -0
- hikyuu/data/common_mysql.py +521 -0
- hikyuu/data/common_pytdx.py +126 -0
- hikyuu/data/common_sqlite3.py +141 -0
- hikyuu/data/em_block_to_clickhouse.py +120 -0
- hikyuu/data/em_block_to_mysql.py +121 -0
- hikyuu/data/em_block_to_sqlite.py +122 -0
- hikyuu/data/hku_config_template.py +335 -0
- hikyuu/data/mysql_upgrade/0001.sql +5 -0
- hikyuu/data/mysql_upgrade/0002.sql +3 -0
- hikyuu/data/mysql_upgrade/0003.sql +9 -0
- hikyuu/data/mysql_upgrade/0004.sql +26 -0
- hikyuu/data/mysql_upgrade/0005.sql +3 -0
- hikyuu/data/mysql_upgrade/0006.sql +2 -0
- hikyuu/data/mysql_upgrade/0007.sql +20 -0
- hikyuu/data/mysql_upgrade/0008.sql +6 -0
- hikyuu/data/mysql_upgrade/0009.sql +36 -0
- hikyuu/data/mysql_upgrade/0010.sql +5 -0
- hikyuu/data/mysql_upgrade/0011.sql +5 -0
- hikyuu/data/mysql_upgrade/0012.sql +5 -0
- hikyuu/data/mysql_upgrade/0013.sql +2389 -0
- hikyuu/data/mysql_upgrade/0014.sql +3 -0
- hikyuu/data/mysql_upgrade/0015.sql +4 -0
- hikyuu/data/mysql_upgrade/0016.sql +4 -0
- hikyuu/data/mysql_upgrade/0017.sql +5 -0
- hikyuu/data/mysql_upgrade/0018.sql +2 -0
- hikyuu/data/mysql_upgrade/0019.sql +6 -0
- hikyuu/data/mysql_upgrade/0020.sql +4 -0
- hikyuu/data/mysql_upgrade/0021.sql +4 -0
- hikyuu/data/mysql_upgrade/0022.sql +5 -0
- hikyuu/data/mysql_upgrade/0023.sql +4 -0
- hikyuu/data/mysql_upgrade/0024.sql +2 -0
- hikyuu/data/mysql_upgrade/0025.sql +61 -0
- hikyuu/data/mysql_upgrade/0026.sql +9 -0
- hikyuu/data/mysql_upgrade/0027.sql +6 -0
- hikyuu/data/mysql_upgrade/0028.sql +95 -0
- hikyuu/data/mysql_upgrade/__init__.py +1 -0
- hikyuu/data/mysql_upgrade/createdb.sql +265 -0
- hikyuu/data/pytdx_finance_to_clickhouse.py +107 -0
- hikyuu/data/pytdx_finance_to_mysql.py +129 -0
- hikyuu/data/pytdx_finance_to_sqlite.py +162 -0
- hikyuu/data/pytdx_to_clickhouse.py +841 -0
- hikyuu/data/pytdx_to_h5.py +705 -0
- hikyuu/data/pytdx_to_mysql.py +839 -0
- hikyuu/data/pytdx_to_taos.py +736 -0
- hikyuu/data/pytdx_weight_to_clickhouse.py +191 -0
- hikyuu/data/pytdx_weight_to_mysql.py +196 -0
- hikyuu/data/pytdx_weight_to_sqlite.py +192 -0
- hikyuu/data/sqlite_mem.py +84 -0
- hikyuu/data/sqlite_mem_sql/__init__.py +1 -0
- hikyuu/data/sqlite_mem_sql/createdb.sql +126 -0
- hikyuu/data/sqlite_upgrade/0001.sql +4 -0
- hikyuu/data/sqlite_upgrade/0002.sql +48 -0
- hikyuu/data/sqlite_upgrade/0003.sql +18 -0
- hikyuu/data/sqlite_upgrade/0004.sql +11 -0
- hikyuu/data/sqlite_upgrade/0005.sql +28 -0
- hikyuu/data/sqlite_upgrade/0006.sql +5 -0
- hikyuu/data/sqlite_upgrade/0007.sql +4 -0
- hikyuu/data/sqlite_upgrade/0008.sql +22 -0
- hikyuu/data/sqlite_upgrade/0009.sql +8 -0
- hikyuu/data/sqlite_upgrade/0010.sql +5 -0
- hikyuu/data/sqlite_upgrade/0011.sql +16 -0
- hikyuu/data/sqlite_upgrade/0012.sql +15 -0
- hikyuu/data/sqlite_upgrade/0013.sql +9 -0
- hikyuu/data/sqlite_upgrade/0014.sql +607 -0
- hikyuu/data/sqlite_upgrade/0015.sql +7 -0
- hikyuu/data/sqlite_upgrade/0016.sql +8 -0
- hikyuu/data/sqlite_upgrade/0017.sql +16 -0
- hikyuu/data/sqlite_upgrade/0018.sql +5 -0
- hikyuu/data/sqlite_upgrade/0019.sql +4 -0
- hikyuu/data/sqlite_upgrade/0020.sql +4 -0
- hikyuu/data/sqlite_upgrade/0021.sql +6 -0
- hikyuu/data/sqlite_upgrade/0022.sql +6 -0
- hikyuu/data/sqlite_upgrade/0023.sql +7 -0
- hikyuu/data/sqlite_upgrade/0024.sql +22 -0
- hikyuu/data/sqlite_upgrade/0025.sql +63 -0
- hikyuu/data/sqlite_upgrade/0026.sql +10 -0
- hikyuu/data/sqlite_upgrade/0027.sql +8 -0
- hikyuu/data/sqlite_upgrade/0028.sql +97 -0
- hikyuu/data/sqlite_upgrade/__init__.py +1 -0
- hikyuu/data/sqlite_upgrade/createdb.sql +61 -0
- hikyuu/data/tdx_to_clickhouse.py +448 -0
- hikyuu/data/tdx_to_h5.py +464 -0
- hikyuu/data/tdx_to_mysql.py +464 -0
- hikyuu/data/weight_to_mysql.py +72 -0
- hikyuu/data/weight_to_sqlite.py +70 -0
- hikyuu/data/zh_bond10_to_clickhouse.py +49 -0
- hikyuu/data/zh_bond10_to_mysql.py +30 -0
- hikyuu/data/zh_bond10_to_sqlite.py +42 -0
- hikyuu/data_driver/__init__.py +49 -0
- hikyuu/data_driver/jqdata_data_driver.py +277 -0
- hikyuu/data_driver/pytdx_data_driver.py +292 -0
- hikyuu/draw/__init__.py +65 -0
- hikyuu/draw/__init__.pyi +35 -0
- hikyuu/draw/drawplot/__init__.py +309 -0
- hikyuu/draw/drawplot/__init__.pyi +139 -0
- hikyuu/draw/drawplot/bokeh_draw.py +583 -0
- hikyuu/draw/drawplot/bokeh_draw.pyi +872 -0
- hikyuu/draw/drawplot/common.py +89 -0
- hikyuu/draw/drawplot/common.pyi +10 -0
- hikyuu/draw/drawplot/echarts_draw.py +598 -0
- hikyuu/draw/drawplot/echarts_draw.pyi +758 -0
- hikyuu/draw/drawplot/icon/1.png +0 -0
- hikyuu/draw/drawplot/icon/10.png +0 -0
- hikyuu/draw/drawplot/icon/11.png +0 -0
- hikyuu/draw/drawplot/icon/12.png +0 -0
- hikyuu/draw/drawplot/icon/13.png +0 -0
- hikyuu/draw/drawplot/icon/14.png +0 -0
- hikyuu/draw/drawplot/icon/15.png +0 -0
- hikyuu/draw/drawplot/icon/16.png +0 -0
- hikyuu/draw/drawplot/icon/17.png +0 -0
- hikyuu/draw/drawplot/icon/18.png +0 -0
- hikyuu/draw/drawplot/icon/19.png +0 -0
- hikyuu/draw/drawplot/icon/2.png +0 -0
- hikyuu/draw/drawplot/icon/20.png +0 -0
- hikyuu/draw/drawplot/icon/21.png +0 -0
- hikyuu/draw/drawplot/icon/22.png +0 -0
- hikyuu/draw/drawplot/icon/23.png +0 -0
- hikyuu/draw/drawplot/icon/24.png +0 -0
- hikyuu/draw/drawplot/icon/25.png +0 -0
- hikyuu/draw/drawplot/icon/26.png +0 -0
- hikyuu/draw/drawplot/icon/27.png +0 -0
- hikyuu/draw/drawplot/icon/28.png +0 -0
- hikyuu/draw/drawplot/icon/29.png +0 -0
- hikyuu/draw/drawplot/icon/3.png +0 -0
- hikyuu/draw/drawplot/icon/30.png +0 -0
- hikyuu/draw/drawplot/icon/31.png +0 -0
- hikyuu/draw/drawplot/icon/32.png +0 -0
- hikyuu/draw/drawplot/icon/33.png +0 -0
- hikyuu/draw/drawplot/icon/34.png +0 -0
- hikyuu/draw/drawplot/icon/35.png +0 -0
- hikyuu/draw/drawplot/icon/36.png +0 -0
- hikyuu/draw/drawplot/icon/37.png +0 -0
- hikyuu/draw/drawplot/icon/38.png +0 -0
- hikyuu/draw/drawplot/icon/39.png +0 -0
- hikyuu/draw/drawplot/icon/4.png +0 -0
- hikyuu/draw/drawplot/icon/40.png +0 -0
- hikyuu/draw/drawplot/icon/41.png +0 -0
- hikyuu/draw/drawplot/icon/42.png +0 -0
- hikyuu/draw/drawplot/icon/43.png +0 -0
- hikyuu/draw/drawplot/icon/44.png +0 -0
- hikyuu/draw/drawplot/icon/45.png +0 -0
- hikyuu/draw/drawplot/icon/46.png +0 -0
- hikyuu/draw/drawplot/icon/47.png +0 -0
- hikyuu/draw/drawplot/icon/48.png +0 -0
- hikyuu/draw/drawplot/icon/49.png +0 -0
- hikyuu/draw/drawplot/icon/5.png +0 -0
- hikyuu/draw/drawplot/icon/6.png +0 -0
- hikyuu/draw/drawplot/icon/7.png +0 -0
- hikyuu/draw/drawplot/icon/8.png +0 -0
- hikyuu/draw/drawplot/icon/9.png +0 -0
- hikyuu/draw/drawplot/icon/__init__.py +0 -0
- hikyuu/draw/drawplot/matplotlib_draw.py +1620 -0
- hikyuu/draw/drawplot/matplotlib_draw.pyi +1234 -0
- hikyuu/draw/elder.py +135 -0
- hikyuu/draw/elder.pyi +44 -0
- hikyuu/draw/kaufman.py +192 -0
- hikyuu/draw/kaufman.pyi +38 -0
- hikyuu/draw/volume.py +122 -0
- hikyuu/draw/volume.pyi +31 -0
- hikyuu/examples/Turtle_SG.py +47 -0
- hikyuu/examples/__init__.py +1 -0
- hikyuu/examples/examples_init.py +33 -0
- hikyuu/examples/notebook/000-Index.ipynb +76 -0
- hikyuu/examples/notebook/001-overview.ipynb +325 -0
- hikyuu/examples/notebook/002-HowToGetStock.ipynb +484 -0
- hikyuu/examples/notebook/003-HowToGetKDataAndDraw.ipynb +383 -0
- hikyuu/examples/notebook/004-IndicatorOverview.ipynb +568 -0
- hikyuu/examples/notebook/005-Drawplot.ipynb +350 -0
- hikyuu/examples/notebook/006-TradeManager.ipynb +1128 -0
- hikyuu/examples/notebook/007-SystemDetails.ipynb +394 -0
- hikyuu/examples/notebook/008-Pickle.ipynb +127 -0
- hikyuu/examples/notebook/009-RealData.ipynb +110 -0
- hikyuu/examples/notebook/010-Portfolio.ipynb +968 -0
- hikyuu/examples/notebook/Demo/Demo1.ipynb +623 -0
- hikyuu/examples/notebook/Demo/Demo2.ipynb +665 -0
- hikyuu/examples/notebook/Demo/__init__.py +1 -0
- hikyuu/examples/notebook/README.md +1 -0
- hikyuu/examples/notebook/__init__.py +1 -0
- hikyuu/examples/notebook/images/002_01_block_config.png +0 -0
- hikyuu/examples/notebook/images/008_01_tocsv.png +0 -0
- hikyuu/examples/notebook/images/008_02_tocsv_look.png +0 -0
- hikyuu/examples/notebook/images/008_03_pickle.png +0 -0
- hikyuu/examples/notebook/images/__init__.py +1 -0
- hikyuu/examples/quick_crtsg.py +40 -0
- hikyuu/extend.py +289 -0
- hikyuu/extend.pyi +658 -0
- hikyuu/fetcher/__init__.py +8 -0
- hikyuu/fetcher/proxy/__init__.py +12 -0
- hikyuu/fetcher/proxy/proxy.py +39 -0
- hikyuu/fetcher/proxy/zhima.py +63 -0
- hikyuu/fetcher/stock/__init__.py +8 -0
- hikyuu/fetcher/stock/zh_block_em.py +562 -0
- hikyuu/fetcher/stock/zh_stock_a_huatai.py +51 -0
- hikyuu/fetcher/stock/zh_stock_a_pytdx.py +129 -0
- hikyuu/fetcher/stock/zh_stock_a_qmt.py +57 -0
- hikyuu/fetcher/stock/zh_stock_a_sina_qq.py +185 -0
- hikyuu/flat/Spot.py +336 -0
- hikyuu/flat/SpotList.py +74 -0
- hikyuu/flat/__init__.py +4 -0
- hikyuu/gui/HikyuuTDX.py +1062 -0
- hikyuu/gui/__init__.py +1 -0
- hikyuu/gui/data/CollectSpotThread.py +43 -0
- hikyuu/gui/data/CollectToMemThread.py +123 -0
- hikyuu/gui/data/CollectToMySQLThread.py +178 -0
- hikyuu/gui/data/EscapetimeThread.py +32 -0
- hikyuu/gui/data/ImportBlockInfoTask.py +67 -0
- hikyuu/gui/data/ImportHistoryFinanceTask.py +161 -0
- hikyuu/gui/data/ImportPytdxTimeToH5Task.py +106 -0
- hikyuu/gui/data/ImportPytdxToH5Task.py +112 -0
- hikyuu/gui/data/ImportPytdxTransToH5Task.py +106 -0
- hikyuu/gui/data/ImportQmtToH5Task.py +209 -0
- hikyuu/gui/data/ImportTdxToH5Task.py +130 -0
- hikyuu/gui/data/ImportWeightToSqliteTask.py +128 -0
- hikyuu/gui/data/ImportZhBond10Task.py +59 -0
- hikyuu/gui/data/MainWindow.py +1003 -0
- hikyuu/gui/data/SchedImportThread.py +62 -0
- hikyuu/gui/data/UsePytdxImportToH5Thread.py +394 -0
- hikyuu/gui/data/UseQmtImportToH5Thread.py +317 -0
- hikyuu/gui/data/UseTdxImportToH5Thread.py +357 -0
- hikyuu/gui/data/__init__.py +1 -0
- hikyuu/gui/data/tool.py +43 -0
- hikyuu/gui/dataserver.py +33 -0
- hikyuu/gui/hikyuu.ico +0 -0
- hikyuu/gui/images/hikyuu_small.png +0 -0
- hikyuu/gui/images/star.png +0 -0
- hikyuu/gui/importdata.py +166 -0
- hikyuu/gui/spot_server.py +326 -0
- hikyuu/gui/start_huatai_insight.py +510 -0
- hikyuu/gui/start_qmt.py +139 -0
- hikyuu/hub.py +771 -0
- hikyuu/hub.pyi +295 -0
- hikyuu/include/__init__.py +1 -0
- hikyuu/include/hikyuu/Block.h +193 -0
- hikyuu/include/hikyuu/DataType.h +179 -0
- hikyuu/include/hikyuu/GlobalInitializer.h +46 -0
- hikyuu/include/hikyuu/HistoryFinanceInfo.h +35 -0
- hikyuu/include/hikyuu/KData.h +334 -0
- hikyuu/include/hikyuu/KDataImp.h +83 -0
- hikyuu/include/hikyuu/KDataPrivatedBufferImp.h +73 -0
- hikyuu/include/hikyuu/KDataSharedBufferImp.h +69 -0
- hikyuu/include/hikyuu/KQuery.h +289 -0
- hikyuu/include/hikyuu/KRecord.h +97 -0
- hikyuu/include/hikyuu/MarketInfo.h +138 -0
- hikyuu/include/hikyuu/Stock.h +376 -0
- hikyuu/include/hikyuu/StockManager.h +418 -0
- hikyuu/include/hikyuu/StockMapIterator.h +72 -0
- hikyuu/include/hikyuu/StockTypeInfo.h +133 -0
- hikyuu/include/hikyuu/StockWeight.h +148 -0
- hikyuu/include/hikyuu/StrategyContext.h +116 -0
- hikyuu/include/hikyuu/TimeLineRecord.h +71 -0
- hikyuu/include/hikyuu/TransRecord.h +73 -0
- hikyuu/include/hikyuu/ZhBond10.h +36 -0
- hikyuu/include/hikyuu/__init__.py +1 -0
- hikyuu/include/hikyuu/analysis/__init__.py +1 -0
- hikyuu/include/hikyuu/analysis/analysis_sys.h +76 -0
- hikyuu/include/hikyuu/analysis/combinate.h +115 -0
- hikyuu/include/hikyuu/config.h +51 -0
- hikyuu/include/hikyuu/data_driver/BaseInfoDriver.h +236 -0
- hikyuu/include/hikyuu/data_driver/BlockInfoDriver.h +108 -0
- hikyuu/include/hikyuu/data_driver/DataDriverFactory.h +58 -0
- hikyuu/include/hikyuu/data_driver/DriverConnectPool.h +146 -0
- hikyuu/include/hikyuu/data_driver/HistoryFinanceReader.h +36 -0
- hikyuu/include/hikyuu/data_driver/KDataDriver.h +199 -0
- hikyuu/include/hikyuu/data_driver/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/base_info/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/base_info/mysql/MySQLBaseInfoDriver.h +54 -0
- hikyuu/include/hikyuu/data_driver/base_info/mysql/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/base_info/sqlite/SQLiteBaseInfoDriver.h +50 -0
- hikyuu/include/hikyuu/data_driver/base_info/sqlite/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/HistoryFinanceFieldTable.h +19 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/HistoryFinanceTable.h +23 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/HolidayTable.h +29 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/MarketInfoTable.h +127 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/StockTable.h +64 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/StockTypeInfoTable.h +108 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/StockWeightTable.h +52 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/ZhBond10Table.h +20 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/block_info/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/block_info/mysql/MySQLBlockInfoDriver.h +36 -0
- hikyuu/include/hikyuu/data_driver/block_info/mysql/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/block_info/qianlong/QLBlockInfoDriver.h +31 -0
- hikyuu/include/hikyuu/data_driver/block_info/qianlong/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/block_info/sqlite/SQLiteBlockInfoDriver.h +36 -0
- hikyuu/include/hikyuu/data_driver/block_info/sqlite/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/kdata/DoNothingKDataDriver.h +33 -0
- hikyuu/include/hikyuu/data_driver/kdata/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/kdata/cvs/KDataTempCsvDriver.h +106 -0
- hikyuu/include/hikyuu/data_driver/kdata/cvs/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/kdata/hdf5/H5KDataDriver.h +89 -0
- hikyuu/include/hikyuu/data_driver/kdata/hdf5/H5Record.h +50 -0
- hikyuu/include/hikyuu/data_driver/kdata/hdf5/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/kdata/mysql/KRecordTable.h +164 -0
- hikyuu/include/hikyuu/data_driver/kdata/mysql/MySQLKDataDriver.h +78 -0
- hikyuu/include/hikyuu/data_driver/kdata/mysql/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/kdata/sqlite/SQLiteKDataDriver.h +62 -0
- hikyuu/include/hikyuu/data_driver/kdata/sqlite/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/kdata/tdx/TdxKDataDriver.h +63 -0
- hikyuu/include/hikyuu/data_driver/kdata/tdx/__init__.py +1 -0
- hikyuu/include/hikyuu/debug.h +32 -0
- hikyuu/include/hikyuu/doc.h +170 -0
- hikyuu/include/hikyuu/global/GlobalSpotAgent.h +41 -0
- hikyuu/include/hikyuu/global/SpotRecord.h +36 -0
- hikyuu/include/hikyuu/global/__init__.py +1 -0
- hikyuu/include/hikyuu/global/agent/SpotAgent.h +148 -0
- hikyuu/include/hikyuu/global/agent/__init__.py +1 -0
- hikyuu/include/hikyuu/global/agent/spot_generated.h +343 -0
- hikyuu/include/hikyuu/global/schedule/__init__.py +1 -0
- hikyuu/include/hikyuu/global/schedule/inner_tasks.h +16 -0
- hikyuu/include/hikyuu/global/schedule/scheduler.h +24 -0
- hikyuu/include/hikyuu/global/sysinfo.h +67 -0
- hikyuu/include/hikyuu/hikyuu.h +55 -0
- hikyuu/include/hikyuu/indicator/IndParam.h +39 -0
- hikyuu/include/hikyuu/indicator/Indicator.h +487 -0
- hikyuu/include/hikyuu/indicator/Indicator2InImp.h +75 -0
- hikyuu/include/hikyuu/indicator/IndicatorImp.h +490 -0
- hikyuu/include/hikyuu/indicator/__init__.py +1 -0
- hikyuu/include/hikyuu/indicator/build_in.h +133 -0
- hikyuu/include/hikyuu/indicator/crt/ABS.h +34 -0
- hikyuu/include/hikyuu/indicator/crt/ACOS.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/AD.h +28 -0
- hikyuu/include/hikyuu/indicator/crt/ADVANCE.h +34 -0
- hikyuu/include/hikyuu/indicator/crt/ALIGN.h +42 -0
- hikyuu/include/hikyuu/indicator/crt/AMA.h +114 -0
- hikyuu/include/hikyuu/indicator/crt/ASIN.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/ATAN.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/ATR.h +33 -0
- hikyuu/include/hikyuu/indicator/crt/AVEDEV.h +45 -0
- hikyuu/include/hikyuu/indicator/crt/BACKSET.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/BARSCOUNT.h +37 -0
- hikyuu/include/hikyuu/indicator/crt/BARSLAST.h +41 -0
- hikyuu/include/hikyuu/indicator/crt/BARSLASTCOUNT.h +33 -0
- hikyuu/include/hikyuu/indicator/crt/BARSSINCE.h +53 -0
- hikyuu/include/hikyuu/indicator/crt/BETWEEN.h +85 -0
- hikyuu/include/hikyuu/indicator/crt/BLOCKSETNUM.h +23 -0
- hikyuu/include/hikyuu/indicator/crt/CEILING.h +38 -0
- hikyuu/include/hikyuu/indicator/crt/CONTEXT.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/CORR.h +26 -0
- hikyuu/include/hikyuu/indicator/crt/COS.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/COST.h +37 -0
- hikyuu/include/hikyuu/indicator/crt/COUNT.h +54 -0
- hikyuu/include/hikyuu/indicator/crt/CROSS.h +48 -0
- hikyuu/include/hikyuu/indicator/crt/CVAL.h +35 -0
- hikyuu/include/hikyuu/indicator/crt/CYCLE.h +27 -0
- hikyuu/include/hikyuu/indicator/crt/DECLINE.h +34 -0
- hikyuu/include/hikyuu/indicator/crt/DEVSQ.h +40 -0
- hikyuu/include/hikyuu/indicator/crt/DIFF.h +31 -0
- hikyuu/include/hikyuu/indicator/crt/DISCARD.h +27 -0
- hikyuu/include/hikyuu/indicator/crt/DMA.h +35 -0
- hikyuu/include/hikyuu/indicator/crt/DOWNNDAY.h +43 -0
- hikyuu/include/hikyuu/indicator/crt/DROPNA.h +31 -0
- hikyuu/include/hikyuu/indicator/crt/EMA.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/EVERY.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/EXIST.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/EXP.h +34 -0
- hikyuu/include/hikyuu/indicator/crt/FILTER.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/FINANCE.h +20 -0
- hikyuu/include/hikyuu/indicator/crt/FLOOR.h +38 -0
- hikyuu/include/hikyuu/indicator/crt/HHV.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/HHVBARS.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/HSL.h +27 -0
- hikyuu/include/hikyuu/indicator/crt/IC.h +49 -0
- hikyuu/include/hikyuu/indicator/crt/ICIR.h +55 -0
- hikyuu/include/hikyuu/indicator/crt/INBLOCK.h +31 -0
- hikyuu/include/hikyuu/indicator/crt/INDEX.h +60 -0
- hikyuu/include/hikyuu/indicator/crt/INSUM.h +33 -0
- hikyuu/include/hikyuu/indicator/crt/INTPART.h +38 -0
- hikyuu/include/hikyuu/indicator/crt/IR.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/ISINF.h +28 -0
- hikyuu/include/hikyuu/indicator/crt/ISINFA.h +28 -0
- hikyuu/include/hikyuu/indicator/crt/ISLASTBAR.h +30 -0
- hikyuu/include/hikyuu/indicator/crt/ISNA.h +29 -0
- hikyuu/include/hikyuu/indicator/crt/JUMPDOWN.h +24 -0
- hikyuu/include/hikyuu/indicator/crt/JUMPUP.h +24 -0
- hikyuu/include/hikyuu/indicator/crt/KALMAN.h +30 -0
- hikyuu/include/hikyuu/indicator/crt/KDATA.h +72 -0
- hikyuu/include/hikyuu/indicator/crt/LAST.h +100 -0
- hikyuu/include/hikyuu/indicator/crt/LASTVALUE.h +29 -0
- hikyuu/include/hikyuu/indicator/crt/LIUTONGPAN.h +24 -0
- hikyuu/include/hikyuu/indicator/crt/LLV.h +46 -0
- hikyuu/include/hikyuu/indicator/crt/LLVBARS.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/LN.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/LOG.h +35 -0
- hikyuu/include/hikyuu/indicator/crt/LONGCROSS.h +68 -0
- hikyuu/include/hikyuu/indicator/crt/MA.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/MACD.h +62 -0
- hikyuu/include/hikyuu/indicator/crt/MAX.h +45 -0
- hikyuu/include/hikyuu/indicator/crt/MDD.h +29 -0
- hikyuu/include/hikyuu/indicator/crt/MIN.h +45 -0
- hikyuu/include/hikyuu/indicator/crt/MOD.h +49 -0
- hikyuu/include/hikyuu/indicator/crt/MRR.h +29 -0
- hikyuu/include/hikyuu/indicator/crt/NDAY.h +43 -0
- hikyuu/include/hikyuu/indicator/crt/NOT.h +35 -0
- hikyuu/include/hikyuu/indicator/crt/POS.h +21 -0
- hikyuu/include/hikyuu/indicator/crt/POW.h +48 -0
- hikyuu/include/hikyuu/indicator/crt/PRICELIST.h +47 -0
- hikyuu/include/hikyuu/indicator/crt/RECOVER.h +45 -0
- hikyuu/include/hikyuu/indicator/crt/REF.h +48 -0
- hikyuu/include/hikyuu/indicator/crt/REFX.h +25 -0
- hikyuu/include/hikyuu/indicator/crt/REPLACE.h +29 -0
- hikyuu/include/hikyuu/indicator/crt/RESULT.h +20 -0
- hikyuu/include/hikyuu/indicator/crt/REVERSE.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/ROC.h +39 -0
- hikyuu/include/hikyuu/indicator/crt/ROCP.h +39 -0
- hikyuu/include/hikyuu/indicator/crt/ROCR.h +39 -0
- hikyuu/include/hikyuu/indicator/crt/ROCR100.h +39 -0
- hikyuu/include/hikyuu/indicator/crt/ROUND.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/ROUNDDOWN.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/ROUNDUP.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/RSI.h +27 -0
- hikyuu/include/hikyuu/indicator/crt/SAFTYLOSS.h +79 -0
- hikyuu/include/hikyuu/indicator/crt/SGN.h +34 -0
- hikyuu/include/hikyuu/indicator/crt/SIN.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/SLICE.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/SLOPE.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/SMA.h +72 -0
- hikyuu/include/hikyuu/indicator/crt/SPEARMAN.h +25 -0
- hikyuu/include/hikyuu/indicator/crt/SQRT.h +41 -0
- hikyuu/include/hikyuu/indicator/crt/STDEV.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/STDP.h +38 -0
- hikyuu/include/hikyuu/indicator/crt/SUM.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/SUMBARS.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/TAN.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/TIME.h +69 -0
- hikyuu/include/hikyuu/indicator/crt/TIMELINE.h +23 -0
- hikyuu/include/hikyuu/indicator/crt/TIMELINEVOL.h +21 -0
- hikyuu/include/hikyuu/indicator/crt/TR.h +32 -0
- hikyuu/include/hikyuu/indicator/crt/TURNOVER.h +21 -0
- hikyuu/include/hikyuu/indicator/crt/UPNDAY.h +43 -0
- hikyuu/include/hikyuu/indicator/crt/VAR.h +40 -0
- hikyuu/include/hikyuu/indicator/crt/VARP.h +40 -0
- hikyuu/include/hikyuu/indicator/crt/VIGOR.h +34 -0
- hikyuu/include/hikyuu/indicator/crt/WINNER.h +38 -0
- hikyuu/include/hikyuu/indicator/crt/WMA.h +46 -0
- hikyuu/include/hikyuu/indicator/crt/ZHBOND10.h +27 -0
- hikyuu/include/hikyuu/indicator/crt/ZONGGUBEN.h +17 -0
- hikyuu/include/hikyuu/indicator/crt/ZSCORE.h +30 -0
- hikyuu/include/hikyuu/indicator/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/indicator/imp/IAbs.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IAcos.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IAd.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/IAdvance.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IAlign.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IAma.h +38 -0
- hikyuu/include/hikyuu/indicator/imp/IAsin.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IAtan.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IAtr.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/IBackset.h +33 -0
- hikyuu/include/hikyuu/indicator/imp/IBarsCount.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IBarsLast.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IBarsLastCount.h +27 -0
- hikyuu/include/hikyuu/indicator/imp/IBarsSince.h +34 -0
- hikyuu/include/hikyuu/indicator/imp/IBlockSetNum.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/ICeil.h +31 -0
- hikyuu/include/hikyuu/indicator/imp/IContext.h +49 -0
- hikyuu/include/hikyuu/indicator/imp/ICorr.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/ICos.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/ICost.h +31 -0
- hikyuu/include/hikyuu/indicator/imp/ICount.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/ICval.h +35 -0
- hikyuu/include/hikyuu/indicator/imp/ICycle.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/IDecline.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IDevsq.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IDiff.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IDiscard.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IDma.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/IDropna.h +37 -0
- hikyuu/include/hikyuu/indicator/imp/IEma.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IEvery.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/IExist.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/IExp.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IFilter.h +34 -0
- hikyuu/include/hikyuu/indicator/imp/IFinance.h +25 -0
- hikyuu/include/hikyuu/indicator/imp/IFloor.h +31 -0
- hikyuu/include/hikyuu/indicator/imp/IHhvbars.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IHighLine.h +34 -0
- hikyuu/include/hikyuu/indicator/imp/IHsl.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/IIc.h +46 -0
- hikyuu/include/hikyuu/indicator/imp/IInBlock.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/IInSum.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IIndex.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IIntpart.h +31 -0
- hikyuu/include/hikyuu/indicator/imp/IIsInf.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IIsInfa.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IIsLastBar.h +27 -0
- hikyuu/include/hikyuu/indicator/imp/IIsNa.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IJumpDown.h +24 -0
- hikyuu/include/hikyuu/indicator/imp/IJumpUp.h +24 -0
- hikyuu/include/hikyuu/indicator/imp/IKData.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IKalman.h +27 -0
- hikyuu/include/hikyuu/indicator/imp/ILastValue.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/ILiuTongPan.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/ILn.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/ILog.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/ILowLine.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/ILowLineBars.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IMa.h +27 -0
- hikyuu/include/hikyuu/indicator/imp/IMacd.h +41 -0
- hikyuu/include/hikyuu/indicator/imp/IMdd.h +23 -0
- hikyuu/include/hikyuu/indicator/imp/IMrr.h +23 -0
- hikyuu/include/hikyuu/indicator/imp/INot.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IPow.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/IPriceList.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/IRecover.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IRef.h +34 -0
- hikyuu/include/hikyuu/indicator/imp/IRefX.h +23 -0
- hikyuu/include/hikyuu/indicator/imp/IReplace.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IResult.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IReverse.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IRoc.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IRocp.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IRocr.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IRocr100.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IRound.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/IRoundDown.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/IRoundUp.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/ISaftyLoss.h +44 -0
- hikyuu/include/hikyuu/indicator/imp/ISign.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/ISin.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/ISlice.h +25 -0
- hikyuu/include/hikyuu/indicator/imp/ISlope.h +25 -0
- hikyuu/include/hikyuu/indicator/imp/ISma.h +34 -0
- hikyuu/include/hikyuu/indicator/imp/ISpearman.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/ISqrt.h +31 -0
- hikyuu/include/hikyuu/indicator/imp/IStdev.h +31 -0
- hikyuu/include/hikyuu/indicator/imp/IStdp.h +33 -0
- hikyuu/include/hikyuu/indicator/imp/ISum.h +27 -0
- hikyuu/include/hikyuu/indicator/imp/ISumBars.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/ITan.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/ITime.h +33 -0
- hikyuu/include/hikyuu/indicator/imp/ITimeLine.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/ITr.h +35 -0
- hikyuu/include/hikyuu/indicator/imp/IVar.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/IVarp.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/IVigor.h +35 -0
- hikyuu/include/hikyuu/indicator/imp/IWinner.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IWma.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/IZScore.h +25 -0
- hikyuu/include/hikyuu/indicator/imp/IZhBond10.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/IZongGuBen.h +25 -0
- hikyuu/include/hikyuu/indicator/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/indicator_talib/__init__.py +1 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaAdosc.h +26 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaApo.h +24 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaBbands.h +24 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaMa.h +24 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaMacd.h +24 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaMacdext.h +24 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaMama.h +24 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaMavp.h +27 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaPpo.h +24 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaSar.h +26 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaSarext.h +31 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaStddev.h +24 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaStoch.h +27 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaStochf.h +26 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaStochrsi.h +24 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaT3.h +24 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaUltosc.h +26 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaVar.h +24 -0
- hikyuu/include/hikyuu/indicator_talib/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/indicator_talib/imp/ta_defines.h +237 -0
- hikyuu/include/hikyuu/indicator_talib/imp/ta_imp.h +1328 -0
- hikyuu/include/hikyuu/indicator_talib/ta_crt.h +322 -0
- hikyuu/include/hikyuu/lang.h +27 -0
- hikyuu/include/hikyuu/plugin/KDataToHdf5Importer.h +41 -0
- hikyuu/include/hikyuu/plugin/__init__.py +1 -0
- hikyuu/include/hikyuu/plugin/backtest.h +40 -0
- hikyuu/include/hikyuu/plugin/dataserver.h +43 -0
- hikyuu/include/hikyuu/plugin/device.h +33 -0
- hikyuu/include/hikyuu/plugin/extind.h +195 -0
- hikyuu/include/hikyuu/plugin/hkuextra.h +77 -0
- hikyuu/include/hikyuu/plugin/interface/BackTestPluginInterface.h +27 -0
- hikyuu/include/hikyuu/plugin/interface/DataDriverPluginInterface.h +27 -0
- hikyuu/include/hikyuu/plugin/interface/DataServerPluginInterface.h +24 -0
- hikyuu/include/hikyuu/plugin/interface/DevicePluginInterface.h +26 -0
- hikyuu/include/hikyuu/plugin/interface/ExtendIndicatorsPluginInterface.h +26 -0
- hikyuu/include/hikyuu/plugin/interface/HkuExtraPluginInterface.h +54 -0
- hikyuu/include/hikyuu/plugin/interface/ImportKDataToHdf5PluginInterface.h +45 -0
- hikyuu/include/hikyuu/plugin/interface/TMReportPluginInterface.h +81 -0
- hikyuu/include/hikyuu/plugin/interface/__init__.py +1 -0
- hikyuu/include/hikyuu/plugin/interface/plugins.h +30 -0
- hikyuu/include/hikyuu/python/__init__.py +1 -0
- hikyuu/include/hikyuu/python/convert_any.h +299 -0
- hikyuu/include/hikyuu/python/pickle_support.h +90 -0
- hikyuu/include/hikyuu/python/pybind_utils.h +128 -0
- hikyuu/include/hikyuu/serialization/Block_serialization.h +55 -0
- hikyuu/include/hikyuu/serialization/Datetime_serialization.h +40 -0
- hikyuu/include/hikyuu/serialization/KData_serialization.h +45 -0
- hikyuu/include/hikyuu/serialization/KQuery_serialization.h +79 -0
- hikyuu/include/hikyuu/serialization/KRecord_serialization.h +50 -0
- hikyuu/include/hikyuu/serialization/MarketInfo_serialization.h +68 -0
- hikyuu/include/hikyuu/serialization/PriceList_serialization.h +66 -0
- hikyuu/include/hikyuu/serialization/StockTypeInfo_serialization.h +62 -0
- hikyuu/include/hikyuu/serialization/StockWeight_serialization.h +65 -0
- hikyuu/include/hikyuu/serialization/Stock_serialization.h +47 -0
- hikyuu/include/hikyuu/serialization/TimeDelta_serialization.h +44 -0
- hikyuu/include/hikyuu/serialization/TimeLineRecord_serialization.h +42 -0
- hikyuu/include/hikyuu/serialization/TransRecord_serialization.h +44 -0
- hikyuu/include/hikyuu/serialization/__init__.py +1 -0
- hikyuu/include/hikyuu/serialization/all.h +26 -0
- hikyuu/include/hikyuu/strategy/BrokerTradeManager.h +436 -0
- hikyuu/include/hikyuu/strategy/RunPortfolioInStrategy.h +37 -0
- hikyuu/include/hikyuu/strategy/RunSystemInStrategy.h +38 -0
- hikyuu/include/hikyuu/strategy/Strategy.h +271 -0
- hikyuu/include/hikyuu/strategy/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_manage/BorrowRecord.h +91 -0
- hikyuu/include/hikyuu/trade_manage/CostRecord.h +67 -0
- hikyuu/include/hikyuu/trade_manage/FundsRecord.h +110 -0
- hikyuu/include/hikyuu/trade_manage/LoanRecord.h +64 -0
- hikyuu/include/hikyuu/trade_manage/OrderBrokerBase.h +214 -0
- hikyuu/include/hikyuu/trade_manage/Performance.h +87 -0
- hikyuu/include/hikyuu/trade_manage/PositionExtInfo.h +92 -0
- hikyuu/include/hikyuu/trade_manage/PositionRecord.h +120 -0
- hikyuu/include/hikyuu/trade_manage/TradeCostBase.h +179 -0
- hikyuu/include/hikyuu/trade_manage/TradeManager.h +494 -0
- hikyuu/include/hikyuu/trade_manage/TradeManagerBase.h +850 -0
- hikyuu/include/hikyuu/trade_manage/TradeRecord.h +163 -0
- hikyuu/include/hikyuu/trade_manage/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_manage/build_in.h +19 -0
- hikyuu/include/hikyuu/trade_manage/crt/TC_FixedA.h +45 -0
- hikyuu/include/hikyuu/trade_manage/crt/TC_FixedA2015.h +43 -0
- hikyuu/include/hikyuu/trade_manage/crt/TC_FixedA2017.h +44 -0
- hikyuu/include/hikyuu/trade_manage/crt/TC_TestStub.h +21 -0
- hikyuu/include/hikyuu/trade_manage/crt/TC_Zero.h +25 -0
- hikyuu/include/hikyuu/trade_manage/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_manage/crt/crtTM.h +33 -0
- hikyuu/include/hikyuu/trade_manage/imp/FixedA2015TradeCost.h +53 -0
- hikyuu/include/hikyuu/trade_manage/imp/FixedA2017TradeCost.h +56 -0
- hikyuu/include/hikyuu/trade_manage/imp/FixedATradeCost.h +88 -0
- hikyuu/include/hikyuu/trade_manage/imp/TradeCostStub.h +48 -0
- hikyuu/include/hikyuu/trade_manage/imp/ZeroTradeCost.h +50 -0
- hikyuu/include/hikyuu/trade_manage/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/all.h +24 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/AllocateFundsBase.h +234 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/build_in.h +17 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/crt/AF_EqualWeight.h +25 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/crt/AF_FixedWeight.h +26 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/crt/AF_FixedWeightList.h +22 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/crt/AF_MultiFactor.h +21 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/imp/EqualWeightAllocateFunds.h +27 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/imp/FixedWeightAllocateFunds.h +28 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/imp/FixedWeightListAllocateFunds.h +25 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/imp/MultiFactorAllocaterFunds.h +26 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/condition/ConditionBase.h +249 -0
- hikyuu/include/hikyuu/trade_sys/condition/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/condition/build_in.h +17 -0
- hikyuu/include/hikyuu/trade_sys/condition/crt/CN_Bool.h +22 -0
- hikyuu/include/hikyuu/trade_sys/condition/crt/CN_Logic.h +35 -0
- hikyuu/include/hikyuu/trade_sys/condition/crt/CN_Manual.h +20 -0
- hikyuu/include/hikyuu/trade_sys/condition/crt/CN_OPLine.h +26 -0
- hikyuu/include/hikyuu/trade_sys/condition/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/BoolCondition.h +40 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/ManualCondition.h +23 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/OPLineCondition.h +44 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/logic/AddCondition.h +42 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/logic/AndCondition.h +42 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/logic/DivCondition.h +42 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/logic/MultiCondition.h +42 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/logic/OrCondition.h +42 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/logic/SubCondition.h +42 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/logic/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/environment/EnvironmentBase.h +197 -0
- hikyuu/include/hikyuu/trade_sys/environment/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/environment/build_in.h +17 -0
- hikyuu/include/hikyuu/trade_sys/environment/crt/EV_Bool.h +23 -0
- hikyuu/include/hikyuu/trade_sys/environment/crt/EV_Logic.h +35 -0
- hikyuu/include/hikyuu/trade_sys/environment/crt/EV_Manual.h +20 -0
- hikyuu/include/hikyuu/trade_sys/environment/crt/EV_TwoLine.h +28 -0
- hikyuu/include/hikyuu/trade_sys/environment/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/environment/imp/BoolEnvironment.h +41 -0
- hikyuu/include/hikyuu/trade_sys/environment/imp/ManualEnvironment.h +23 -0
- hikyuu/include/hikyuu/trade_sys/environment/imp/TwoLineEnvironment.h +47 -0
- hikyuu/include/hikyuu/trade_sys/environment/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/environment/imp/logic/AddEnvironment.h +42 -0
- hikyuu/include/hikyuu/trade_sys/environment/imp/logic/AndEnvironment.h +42 -0
- hikyuu/include/hikyuu/trade_sys/environment/imp/logic/DivEnvironment.h +42 -0
- hikyuu/include/hikyuu/trade_sys/environment/imp/logic/MultiEnvironment.h +42 -0
- hikyuu/include/hikyuu/trade_sys/environment/imp/logic/OrEnvironment.h +42 -0
- hikyuu/include/hikyuu/trade_sys/environment/imp/logic/SubEnvironment.h +42 -0
- hikyuu/include/hikyuu/trade_sys/environment/imp/logic/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/MoneyManagerBase.h +248 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/build_in.h +22 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedCapital.h +26 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedCapitalFunds.h +26 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedCount.h +28 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedCountTps.h +27 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedPercent.h +27 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedRisk.h +26 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedUnits.h +26 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_Nothing.h +24 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_WilliamsFixedRisk.h +27 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/FixedCapitalFundsMM.h +28 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/FixedCapitalMoneyManager.h +28 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/FixedCountMoneyManager.h +38 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/FixedCountTpsMM.h +44 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/FixedPercentMoneyManager.h +34 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/FixedRiskMoneyManager.h +28 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/FixedUnitsMoneyManager.h +28 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/NotMoneyManager.h +30 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/WilliamsFixedRiskMoneyManager.h +28 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/MultiFactorBase.h +281 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/ScoreRecord.h +51 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/build_in.h +13 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_EqualWeight.h +32 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_ICIRWeight.h +33 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_ICWeight.h +33 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_Weight.h +33 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/imp/EqualWeightMultiFactor.h +26 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/imp/ICIRMultiFactor.h +28 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/imp/ICMultiFactor.h +28 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/imp/WeightMultiFactor.h +41 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/Portfolio.h +258 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/build_in.h +15 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/crt/PF_Simple.h +47 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/crt/PF_WithoutAF.h +50 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/imp/SimplePortfolio.h +53 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/imp/WithoutAFPortfolio.h +57 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/ProfitGoalBase.h +194 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/build_in.h +16 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/crt/PG_FixedHoldDays.h +26 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/crt/PG_FixedPercent.h +25 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/crt/PG_NoGoal.h +24 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/imp/FixedHoldDays.h +29 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/imp/FixedPercentProfitGoal.h +28 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/imp/NoGoalProfitGoal.h +27 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/selector/SelectorBase.h +251 -0
- hikyuu/include/hikyuu/trade_sys/selector/SystemWeight.h +70 -0
- hikyuu/include/hikyuu/trade_sys/selector/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/selector/build_in.h +18 -0
- hikyuu/include/hikyuu/trade_sys/selector/crt/SE_Fixed.h +38 -0
- hikyuu/include/hikyuu/trade_sys/selector/crt/SE_Logic.h +43 -0
- hikyuu/include/hikyuu/trade_sys/selector/crt/SE_MultiFactor.h +40 -0
- hikyuu/include/hikyuu/trade_sys/selector/crt/SE_Optimal.h +34 -0
- hikyuu/include/hikyuu/trade_sys/selector/crt/SE_Signal.h +30 -0
- hikyuu/include/hikyuu/trade_sys/selector/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/FixedSelector.h +28 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/MultiFactorSelector.h +59 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/SignalSelector.h +30 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorAddSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorAddValueSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorDivSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorDivValueSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorInvertDivValueSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorInvertSubValueSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorMulSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorMulValueSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorSelector.h +108 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorSubSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorSubValueSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorValueSelector.h +94 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/MaxFundsOptimalSelector.h +27 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/OptimalEvaluateSelector.h +28 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/OptimalSelectorBase.h +87 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/PerformanceOptimalSelector.h +42 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/signal/SignalBase.h +294 -0
- hikyuu/include/hikyuu/trade_sys/signal/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/signal/build_in.h +24 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_AllwaysBuy.h +20 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Band.h +37 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Bool.h +29 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Cross.h +28 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_CrossGold.h +29 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Cycle.h +20 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Flex.h +29 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Logic.h +127 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Manual.h +20 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_OneSide.h +38 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Single.h +56 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/AllwaysBuySignal.h +25 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/BandSignal.h +46 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/BandSignal2.h +47 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/BoolSignal.h +46 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/CrossGoldSignal.h +46 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/CrossSignal.h +46 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/CycleSignal.h +25 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/ManualSignal.h +23 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/OneSideSignal.h +46 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/SingleSignal.h +45 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/SingleSignal2.h +45 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/AddSignal.h +19 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/AddValueSignal.h +19 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/AndSignal.h +19 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/DivSignal.h +19 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/DivValueSignal.h +22 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/MulSignal.h +19 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/MulValueSignal.h +19 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/OperatorSignal.h +70 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/OperatorValueSignal.h +68 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/OrSignal.h +19 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/SubSignal.h +19 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/SubValueSignal.h +22 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/slippage/SlippageBase.h +175 -0
- hikyuu/include/hikyuu/trade_sys/slippage/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/slippage/build_in.h +15 -0
- hikyuu/include/hikyuu/trade_sys/slippage/crt/SP_FixedPercent.h +26 -0
- hikyuu/include/hikyuu/trade_sys/slippage/crt/SP_FixedValue.h +26 -0
- hikyuu/include/hikyuu/trade_sys/slippage/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/slippage/imp/FixedPercentSlippage.h +28 -0
- hikyuu/include/hikyuu/trade_sys/slippage/imp/FixedValueSlippage.h +28 -0
- hikyuu/include/hikyuu/trade_sys/slippage/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/StoplossBase.h +204 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/build_in.h +16 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/crt/ST_FixedPercent.h +25 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/crt/ST_Indicator.h +21 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/crt/ST_Saftyloss.h +37 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/imp/FixedPercentStoploss.h +30 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/imp/IndicatorStoploss.h +49 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/system/System.h +653 -0
- hikyuu/include/hikyuu/trade_sys/system/SystemPart.h +54 -0
- hikyuu/include/hikyuu/trade_sys/system/TradeRequest.h +97 -0
- hikyuu/include/hikyuu/trade_sys/system/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/system/build_in.h +15 -0
- hikyuu/include/hikyuu/trade_sys/system/crt/SYS_Simple.h +50 -0
- hikyuu/include/hikyuu/trade_sys/system/crt/SYS_WalkForward.h +21 -0
- hikyuu/include/hikyuu/trade_sys/system/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/system/imp/DelegateSystem.h +50 -0
- hikyuu/include/hikyuu/trade_sys/system/imp/WalkForwardSystem.h +69 -0
- hikyuu/include/hikyuu/trade_sys/system/imp/WalkForwardTradeManager.h +470 -0
- hikyuu/include/hikyuu/trade_sys/system/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/ConnectPool.h +163 -0
- hikyuu/include/hikyuu/utilities/DllLoader.h +226 -0
- hikyuu/include/hikyuu/utilities/FilterNode.h +267 -0
- hikyuu/include/hikyuu/utilities/LRUCache11.h +230 -0
- hikyuu/include/hikyuu/utilities/Log.h +438 -0
- hikyuu/include/hikyuu/utilities/Null.h +176 -0
- hikyuu/include/hikyuu/utilities/Parameter.h +511 -0
- hikyuu/include/hikyuu/utilities/ResourcePool.h +636 -0
- hikyuu/include/hikyuu/utilities/SpendTimer.h +305 -0
- hikyuu/include/hikyuu/utilities/TimerManager.h +552 -0
- hikyuu/include/hikyuu/utilities/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/any_to_string.h +142 -0
- hikyuu/include/hikyuu/utilities/arithmetic.h +411 -0
- hikyuu/include/hikyuu/utilities/base64.h +52 -0
- hikyuu/include/hikyuu/utilities/config.h +39 -0
- hikyuu/include/hikyuu/utilities/cppdef.h +25 -0
- hikyuu/include/hikyuu/utilities/datetime/Datetime.h +460 -0
- hikyuu/include/hikyuu/utilities/datetime/TimeDelta.h +357 -0
- hikyuu/include/hikyuu/utilities/datetime/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/db_connect/AutoTransAction.h +124 -0
- hikyuu/include/hikyuu/utilities/db_connect/DBCondition.h +252 -0
- hikyuu/include/hikyuu/utilities/db_connect/DBConnect.h +30 -0
- hikyuu/include/hikyuu/utilities/db_connect/DBConnectBase.h +658 -0
- hikyuu/include/hikyuu/utilities/db_connect/DBUpgrade.h +28 -0
- hikyuu/include/hikyuu/utilities/db_connect/SQLException.h +62 -0
- hikyuu/include/hikyuu/utilities/db_connect/SQLResultSet.h +248 -0
- hikyuu/include/hikyuu/utilities/db_connect/SQLStatementBase.h +305 -0
- hikyuu/include/hikyuu/utilities/db_connect/TableMacro.h +2579 -0
- hikyuu/include/hikyuu/utilities/db_connect/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/db_connect/mysql/MySQLConnect.h +60 -0
- hikyuu/include/hikyuu/utilities/db_connect/mysql/MySQLStatement.h +88 -0
- hikyuu/include/hikyuu/utilities/db_connect/mysql/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/db_connect/sqlite/SQLiteConnect.h +89 -0
- hikyuu/include/hikyuu/utilities/db_connect/sqlite/SQLiteStatement.h +71 -0
- hikyuu/include/hikyuu/utilities/db_connect/sqlite/SQLiteUtil.h +80 -0
- hikyuu/include/hikyuu/utilities/db_connect/sqlite/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/exception.h +52 -0
- hikyuu/include/hikyuu/utilities/http_client/HttpClient.h +229 -0
- hikyuu/include/hikyuu/utilities/http_client/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/http_client/nng_wrap.h +517 -0
- hikyuu/include/hikyuu/utilities/http_client/url.h +25 -0
- hikyuu/include/hikyuu/utilities/ini_parser/IniParser.h +104 -0
- hikyuu/include/hikyuu/utilities/ini_parser/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/md5.h +41 -0
- hikyuu/include/hikyuu/utilities/moFileReader.h +836 -0
- hikyuu/include/hikyuu/utilities/node/NodeClient.h +175 -0
- hikyuu/include/hikyuu/utilities/node/NodeError.h +66 -0
- hikyuu/include/hikyuu/utilities/node/NodeMessage.h +80 -0
- hikyuu/include/hikyuu/utilities/node/NodeServer.h +246 -0
- hikyuu/include/hikyuu/utilities/node/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/os.h +115 -0
- hikyuu/include/hikyuu/utilities/osdef.h +159 -0
- hikyuu/include/hikyuu/utilities/plugin/PluginBase.h +47 -0
- hikyuu/include/hikyuu/utilities/plugin/PluginClient.h +55 -0
- hikyuu/include/hikyuu/utilities/plugin/PluginLoader.h +118 -0
- hikyuu/include/hikyuu/utilities/plugin/PluginManager.h +72 -0
- hikyuu/include/hikyuu/utilities/plugin/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/runtimeinfo.h +35 -0
- hikyuu/include/hikyuu/utilities/snowflake.h +110 -0
- hikyuu/include/hikyuu/utilities/string_view.h +70 -0
- hikyuu/include/hikyuu/utilities/thread/FuncWrapper.h +85 -0
- hikyuu/include/hikyuu/utilities/thread/GlobalMQStealThreadPool.h +315 -0
- hikyuu/include/hikyuu/utilities/thread/GlobalMQThreadPool.h +271 -0
- hikyuu/include/hikyuu/utilities/thread/GlobalStealThreadPool.h +310 -0
- hikyuu/include/hikyuu/utilities/thread/GlobalThreadPool.h +224 -0
- hikyuu/include/hikyuu/utilities/thread/InterruptFlag.h +46 -0
- hikyuu/include/hikyuu/utilities/thread/MQStealQueue.h +112 -0
- hikyuu/include/hikyuu/utilities/thread/MQThreadPool.h +238 -0
- hikyuu/include/hikyuu/utilities/thread/ThreadPool.h +203 -0
- hikyuu/include/hikyuu/utilities/thread/ThreadSafeQueue.h +105 -0
- hikyuu/include/hikyuu/utilities/thread/WorkStealQueue.h +105 -0
- hikyuu/include/hikyuu/utilities/thread/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/thread/algorithm.h +116 -0
- hikyuu/include/hikyuu/utilities/thread/thread.h +14 -0
- hikyuu/include/hikyuu/version.h +24 -0
- hikyuu/include/hikyuu/views/__init__.py +1 -0
- hikyuu/include/hikyuu/views/arrow_common.h +38 -0
- hikyuu/include/hikyuu/views/arrow_views.h +117 -0
- hikyuu/indicator/__init__.py +28 -0
- hikyuu/indicator/indicator.py +119 -0
- hikyuu/indicator/pyind.py +47 -0
- hikyuu/interactive.py +68 -0
- hikyuu/plugin/__init__.py +1 -0
- hikyuu/plugin/libbacktest.so +0 -0
- hikyuu/plugin/libclickhousedriver.so +0 -0
- hikyuu/plugin/libdataserver.so +0 -0
- hikyuu/plugin/libdevice.so +0 -0
- hikyuu/plugin/libextind.so +0 -0
- hikyuu/plugin/libhkuextra.so +0 -0
- hikyuu/plugin/libimport2hdf5.so +0 -0
- hikyuu/plugin/libtmreport.so +0 -0
- hikyuu/setup.py +104 -0
- hikyuu/shell/__init__.py +0 -0
- hikyuu/shell/cmdserver.py +126 -0
- hikyuu/shell/hkucmd.py +110 -0
- hikyuu/shell/hkushell.py +20 -0
- hikyuu/strategy/__init__.py +2 -0
- hikyuu/strategy/strategy_demo1.py +53 -0
- hikyuu/strategy/strategy_demo2.py +47 -0
- hikyuu/strategy/strategy_demo3.py +24 -0
- hikyuu/test/AllocateFunds.py +25 -0
- hikyuu/test/Condition.py +95 -0
- hikyuu/test/Datetime.py +61 -0
- hikyuu/test/Environment.py +88 -0
- hikyuu/test/Indicator.py +233 -0
- hikyuu/test/KData.py +64 -0
- hikyuu/test/MarketInfo.py +26 -0
- hikyuu/test/MoneyManager.py +88 -0
- hikyuu/test/Parameter.py +62 -0
- hikyuu/test/ProfitGoal.py +83 -0
- hikyuu/test/Signal.py +160 -0
- hikyuu/test/Slippage.py +88 -0
- hikyuu/test/Stock.py +127 -0
- hikyuu/test/StockTypeInfo.py +47 -0
- hikyuu/test/Stoploss.py +86 -0
- hikyuu/test/TradeCost.py +71 -0
- hikyuu/test/__init__.py +0 -0
- hikyuu/test/test.py +63 -0
- hikyuu/test/test_init.py +95 -0
- hikyuu/test/test_real_tdx_import.py +336 -0
- hikyuu/test/test_tdx_import.py +315 -0
- hikyuu/test/test_tdx_real_data_import.py +281 -0
- hikyuu/tools/__init__.py +1 -0
- hikyuu/tools/copy_file.py +16 -0
- hikyuu/tools/delete_index.py +50 -0
- hikyuu/tools/fenge.py +139 -0
- hikyuu/tools/h5_data_clear.py +163 -0
- hikyuu/tools/mysql_clear_last_day_data.py +61 -0
- hikyuu/tools/update_block_info.py +168 -0
- hikyuu/trade_manage/__init__.py +30 -0
- hikyuu/trade_manage/__init__.pyi +656 -0
- hikyuu/trade_manage/broker.py +95 -0
- hikyuu/trade_manage/broker.pyi +54 -0
- hikyuu/trade_manage/broker_easytrader.py +63 -0
- hikyuu/trade_manage/broker_easytrader.pyi +21 -0
- hikyuu/trade_manage/broker_mail.py +101 -0
- hikyuu/trade_manage/broker_mail.pyi +55 -0
- hikyuu/trade_manage/trade.py +56 -0
- hikyuu/trade_manage/trade.pyi +650 -0
- hikyuu/trade_sys/__init__.py +42 -0
- hikyuu/trade_sys/trade_sys.py +252 -0
- hikyuu/util/__init__.py +51 -0
- hikyuu/util/__init__.pyi +56 -0
- hikyuu/util/check.py +161 -0
- hikyuu/util/check.pyi +63 -0
- hikyuu/util/mylog.py +291 -0
- hikyuu/util/mylog.pyi +72 -0
- hikyuu/util/notebook.py +47 -0
- hikyuu/util/notebook.pyi +23 -0
- hikyuu/util/singleton.py +29 -0
- hikyuu/util/singleton.pyi +18 -0
- hikyuu/util/slice.py +43 -0
- hikyuu/util/timeout.py +83 -0
- hikyuu-2.6.8.dist-info/METADATA +172 -0
- hikyuu-2.6.8.dist-info/RECORD +1066 -0
- hikyuu-2.6.8.dist-info/WHEEL +5 -0
- hikyuu-2.6.8.dist-info/entry_points.txt +4 -0
- hikyuu-2.6.8.dist-info/licenses/LICENSE +201 -0
- hikyuu-2.6.8.dist-info/top_level.txt +123 -0
|
@@ -0,0 +1,836 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* moFileReader - A simple .mo-File-Reader
|
|
3
|
+
* Copyright (C) 2009 Domenico Gentner (scorcher24@gmail.com)
|
|
4
|
+
* Copyright (C) 2018-2021 Edgar (Edgar@AnotherFoxGuy.com)
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*
|
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
|
8
|
+
* modification, are permitted provided that the following conditions
|
|
9
|
+
* are met:
|
|
10
|
+
*
|
|
11
|
+
* 1. Redistributions of source code must retain the above copyright
|
|
12
|
+
* notice, this list of conditions and the following disclaimer.
|
|
13
|
+
*
|
|
14
|
+
* 2. Redistributions in binary form must reproduce the above copyright
|
|
15
|
+
* notice, this list of conditions and the following disclaimer in the
|
|
16
|
+
* documentation and/or other materials provided with the distribution.
|
|
17
|
+
*
|
|
18
|
+
* 3. The names of its contributors may not be used to endorse or promote
|
|
19
|
+
* products derived from this software without specific prior written
|
|
20
|
+
* permission.
|
|
21
|
+
*
|
|
22
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
23
|
+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
24
|
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
25
|
+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
26
|
+
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
27
|
+
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
28
|
+
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
29
|
+
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
30
|
+
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
31
|
+
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
32
|
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
33
|
+
*/
|
|
34
|
+
#ifndef __MOFILEREADER_SINGLE_INCLUDE_H_INCLUDED__
|
|
35
|
+
#define __MOFILEREADER_SINGLE_INCLUDE_H_INCLUDED__
|
|
36
|
+
|
|
37
|
+
#ifdef __GNUC__
|
|
38
|
+
#pragma GCC diagnostic push
|
|
39
|
+
#pragma GCC diagnostic ignored "-Wsign-compare"
|
|
40
|
+
#endif
|
|
41
|
+
|
|
42
|
+
#if defined(_MSC_VER)
|
|
43
|
+
#pragma warning(disable : 4267)
|
|
44
|
+
#endif /* _MSC_VER */
|
|
45
|
+
|
|
46
|
+
#include <cstring> // this is for memset when compiling with gcc.
|
|
47
|
+
#include <deque>
|
|
48
|
+
#include <fstream>
|
|
49
|
+
#include <map>
|
|
50
|
+
#include <sstream>
|
|
51
|
+
#include <string>
|
|
52
|
+
|
|
53
|
+
//-------------------------------------------------------------
|
|
54
|
+
// Path-Seperators are different on other OS.
|
|
55
|
+
//-------------------------------------------------------------
|
|
56
|
+
#ifndef MO_PATHSEP
|
|
57
|
+
#ifdef WIN32
|
|
58
|
+
#define MO_PATHSEP std::string("\\")
|
|
59
|
+
#else
|
|
60
|
+
#define MO_PATHSEP std::string("/")
|
|
61
|
+
#endif
|
|
62
|
+
#endif
|
|
63
|
+
|
|
64
|
+
//-------------------------------------------------------------
|
|
65
|
+
// Defines the beginning of the namespace moFileLib.
|
|
66
|
+
//-------------------------------------------------------------
|
|
67
|
+
#ifndef MO_BEGIN_NAMESPACE
|
|
68
|
+
#define MO_BEGIN_NAMESPACE namespace moFileLib {
|
|
69
|
+
#endif
|
|
70
|
+
//-------------------------------------------------------------
|
|
71
|
+
// Ends the current namespace.
|
|
72
|
+
//-------------------------------------------------------------
|
|
73
|
+
#ifndef MO_END_NAMESPACE
|
|
74
|
+
#define MO_END_NAMESPACE }
|
|
75
|
+
#endif
|
|
76
|
+
|
|
77
|
+
/** \mainpage moFileReaderSDK
|
|
78
|
+
*
|
|
79
|
+
*
|
|
80
|
+
* <h2>Include in project</h2>
|
|
81
|
+
*
|
|
82
|
+
* Usage of this library is quite easy, simply add moFileReader.hpp to your project. Thats all you
|
|
83
|
+
* have to do. You can safely exclude mo.cpp, since this file keeps the entry-points of the .exe
|
|
84
|
+
* only.
|
|
85
|
+
*
|
|
86
|
+
* <h2>Usage</h2>
|
|
87
|
+
*
|
|
88
|
+
* This is moFileReader, a simple gettext-replacement. The usage of this library is, hopefully,
|
|
89
|
+
* fairly simple: \code
|
|
90
|
+
*
|
|
91
|
+
* // Instanciate the class
|
|
92
|
+
* moFileLib::moFileReader reader;
|
|
93
|
+
*
|
|
94
|
+
* // Load a .mo-File.
|
|
95
|
+
* if ( reader.ReadFile("myTranslationFile.mo") != moFileLib::moFileReader::EC_SUCCESS )
|
|
96
|
+
* {
|
|
97
|
+
* // Error Handling
|
|
98
|
+
* }
|
|
99
|
+
*
|
|
100
|
+
* // Now, you can lookup the strings you stored in the .mo-File:
|
|
101
|
+
* std::cout << reader.Lookup("MyTranslationString") << std::endl;
|
|
102
|
+
*
|
|
103
|
+
* \endcode
|
|
104
|
+
* Thats all! This small code has no dependencies, except the C/C++-runtime of your compiler,
|
|
105
|
+
* so it should work on all machines where a C++-runtime is provided.
|
|
106
|
+
*
|
|
107
|
+
* \note We do not yet support .mo-Files with reversed magic-numbers, since I don't have
|
|
108
|
+
* a file to test it and I hate to release stuff I wasn't able to test.
|
|
109
|
+
*
|
|
110
|
+
* <h2>Changelog</h2>
|
|
111
|
+
*
|
|
112
|
+
* - Version 1.2.0
|
|
113
|
+
* - Proper implementation of contexts strings
|
|
114
|
+
* Now it uses a separate 2D map for storing strings with context
|
|
115
|
+
* - Fixed MagicNumber check not working on Linux
|
|
116
|
+
* - Removed duplicate code
|
|
117
|
+
* - Added option to disable convenience Class
|
|
118
|
+
*
|
|
119
|
+
* - Version 1.1.0
|
|
120
|
+
* - Converted library to a header-only library
|
|
121
|
+
*
|
|
122
|
+
* - Version 1.0.0
|
|
123
|
+
* - Added new function: LookupWithContext
|
|
124
|
+
* - Added unit-tests
|
|
125
|
+
* - Added support for packaging with Conan
|
|
126
|
+
* - Moved project to https://github.com/AnotherFoxGuy/MofileReader
|
|
127
|
+
*
|
|
128
|
+
* - Version 0.1.2
|
|
129
|
+
* - Generic improvements to the documentation.
|
|
130
|
+
* - Generic improvements to the code
|
|
131
|
+
* - Fixed a bug in mo.cpp which caused the application not to print the help
|
|
132
|
+
* message if only --export or --lookup where missing.
|
|
133
|
+
* - Added -h, --help and -? to moReader[.exe]. It will print the help-screen.
|
|
134
|
+
* - Added --version and -v to moReader[.exe]. It will print some informations about the
|
|
135
|
+
* program.
|
|
136
|
+
* - Added --license to moReader[.exe]. This will print its license.
|
|
137
|
+
* - --export gives now a feedback about success or failure.
|
|
138
|
+
* - The HTML-Dump-Method outputs now the whole table from the empty msgid in a nice html-table,
|
|
139
|
+
* not only a few hardcoded.
|
|
140
|
+
* - I had an issue-report that the Error-Constants can collide with foreign code under certain
|
|
141
|
+
* conditions, so I added a patch which renamed the error-constants to more compatible names.
|
|
142
|
+
*
|
|
143
|
+
* - Version 0.1.1
|
|
144
|
+
* - Added the ability to export mo's as HTML.
|
|
145
|
+
* - Fixed a bug causing a crash when passing an invalid value to moFileReader::Lookup().
|
|
146
|
+
* - Added a new file, moFileConfig.h, holding the macros for the project.
|
|
147
|
+
* - Added the ability to be configured by cmake.
|
|
148
|
+
* - Added some more inline-functions, which really enhance the singleton.
|
|
149
|
+
*
|
|
150
|
+
* - Version 0.1.0
|
|
151
|
+
* - Initial Version and release to http://googlecode.com
|
|
152
|
+
*
|
|
153
|
+
*
|
|
154
|
+
* <h2>Credits</h2>
|
|
155
|
+
*
|
|
156
|
+
* Gettext is part of the GNU-Tools and (C) by the <a href="http://fsf.org">Free Software
|
|
157
|
+
* Foundation</a>.\n Visual C++ Express is a registered Trademark of Microsoft, One Microsoft Way,
|
|
158
|
+
* Redmond, USA.\n All other Trademarks are property of their respective owners. \n \n Thanks for
|
|
159
|
+
* using this piece of OpenSource-Software.\n Submit patches and/or bugs on
|
|
160
|
+
* https://github.com/AnotherFoxGuy/MofileReader. Send your flames, dumb comments etc to /dev/null,
|
|
161
|
+
* thank you.
|
|
162
|
+
*/
|
|
163
|
+
|
|
164
|
+
/** \namespace moFileLib
|
|
165
|
+
* \brief This is the only namespace of this small sourcecode.
|
|
166
|
+
*/
|
|
167
|
+
MO_BEGIN_NAMESPACE
|
|
168
|
+
|
|
169
|
+
const std::string g_css = R"(
|
|
170
|
+
body {
|
|
171
|
+
background-color: black;
|
|
172
|
+
color: silver;
|
|
173
|
+
}
|
|
174
|
+
table {
|
|
175
|
+
width: 80%;
|
|
176
|
+
}
|
|
177
|
+
th {
|
|
178
|
+
background-color: orange;
|
|
179
|
+
color: black;
|
|
180
|
+
}
|
|
181
|
+
hr {
|
|
182
|
+
color: red;
|
|
183
|
+
width: 80%;
|
|
184
|
+
size: 5px;
|
|
185
|
+
}
|
|
186
|
+
a:link{
|
|
187
|
+
color: gold;
|
|
188
|
+
}
|
|
189
|
+
a:visited{
|
|
190
|
+
color: grey;
|
|
191
|
+
}
|
|
192
|
+
a:hover{
|
|
193
|
+
color:blue;
|
|
194
|
+
}
|
|
195
|
+
.copyleft{
|
|
196
|
+
font-size: 12px;
|
|
197
|
+
text-align: center;
|
|
198
|
+
})";
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* \brief Keeps the Description of translated and original strings.
|
|
202
|
+
*
|
|
203
|
+
*
|
|
204
|
+
* To load a String from the file, we need its offset and its length.
|
|
205
|
+
* This struct helps us grouping this information.
|
|
206
|
+
*/
|
|
207
|
+
struct moTranslationPairInformation {
|
|
208
|
+
/// \brief Constructor
|
|
209
|
+
moTranslationPairInformation() : m_orLength(0), m_orOffset(0), m_trLength(0), m_trOffset(0) {}
|
|
210
|
+
|
|
211
|
+
/// \brief Length of the Original String
|
|
212
|
+
int m_orLength;
|
|
213
|
+
|
|
214
|
+
/// \brief Offset of the Original String (absolute)
|
|
215
|
+
int m_orOffset;
|
|
216
|
+
|
|
217
|
+
/// \brief Length of the Translated String
|
|
218
|
+
int m_trLength;
|
|
219
|
+
|
|
220
|
+
/// \brief Offset of the Translated String (absolute)
|
|
221
|
+
int m_trOffset;
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* \brief Describes the "Header" of a .mo-File.
|
|
226
|
+
*
|
|
227
|
+
*
|
|
228
|
+
* The File info keeps the header of a .mo-file and
|
|
229
|
+
* a list of the string-descriptions.
|
|
230
|
+
* The typedef is for the type of the string-list.
|
|
231
|
+
* The constructor ensures, that all members get a nice
|
|
232
|
+
* initial value.
|
|
233
|
+
*/
|
|
234
|
+
struct moFileInfo {
|
|
235
|
+
/// \brief Type for the list of all Translation-Pair-Descriptions.
|
|
236
|
+
typedef std::deque<moTranslationPairInformation> moTranslationPairList;
|
|
237
|
+
|
|
238
|
+
/// \brief Constructor
|
|
239
|
+
moFileInfo()
|
|
240
|
+
: m_magicNumber(0),
|
|
241
|
+
m_fileVersion(0),
|
|
242
|
+
m_numStrings(0),
|
|
243
|
+
m_offsetOriginal(0),
|
|
244
|
+
m_offsetTranslation(0),
|
|
245
|
+
m_sizeHashtable(0),
|
|
246
|
+
m_offsetHashtable(0),
|
|
247
|
+
m_reversed(false) {}
|
|
248
|
+
|
|
249
|
+
/// \brief The Magic Number, compare it to g_MagicNumber.
|
|
250
|
+
int m_magicNumber;
|
|
251
|
+
|
|
252
|
+
/// \brief The File Version, 0 atm according to the manpage.
|
|
253
|
+
int m_fileVersion;
|
|
254
|
+
|
|
255
|
+
/// \brief Number of Strings in the .mo-file.
|
|
256
|
+
int m_numStrings;
|
|
257
|
+
|
|
258
|
+
/// \brief Offset of the Table of the Original Strings
|
|
259
|
+
int m_offsetOriginal;
|
|
260
|
+
|
|
261
|
+
/// \brief Offset of the Table of the Translated Strings
|
|
262
|
+
int m_offsetTranslation;
|
|
263
|
+
|
|
264
|
+
/// \brief Size of 1 Entry in the Hashtable.
|
|
265
|
+
int m_sizeHashtable;
|
|
266
|
+
|
|
267
|
+
/// \brief The Offset of the Hashtable.
|
|
268
|
+
int m_offsetHashtable;
|
|
269
|
+
|
|
270
|
+
/** \brief Tells you if the bytes are reversed
|
|
271
|
+
* \note When this is true, the bytes are reversed and the Magic number is like g_MagicReversed
|
|
272
|
+
*/
|
|
273
|
+
bool m_reversed;
|
|
274
|
+
|
|
275
|
+
/// \brief A list containing offset and length of the strings in the file.
|
|
276
|
+
moTranslationPairList m_translationPairInformation;
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* \brief This class is a gettext-replacement.
|
|
281
|
+
*
|
|
282
|
+
*
|
|
283
|
+
* The usage is quite simple:\n
|
|
284
|
+
* Tell the class which .mo-file it shall load via
|
|
285
|
+
* moFileReader::ReadFile(). The method will attempt to load
|
|
286
|
+
* the file, all translations will be stored in memory.
|
|
287
|
+
* Afterwards you can lookup the strings with moFileReader::Lookup() just
|
|
288
|
+
* like you would do with gettext.
|
|
289
|
+
* Additionally, you can call moFileReader::ReadFile() for as much files as you
|
|
290
|
+
* like. But please be aware, that if there are duplicated keys (original strings),
|
|
291
|
+
* that they will replace each other in the lookup-table. There is no check done, if a
|
|
292
|
+
* key already exists.
|
|
293
|
+
*
|
|
294
|
+
* \note If you add "Lookup" to the keywords of the gettext-parser (like poEdit),
|
|
295
|
+
* it will recognize the Strings loaded with an instance of this class.
|
|
296
|
+
* \note I strongly recommend poEdit from Vaclav Slavik for editing .po-Files,
|
|
297
|
+
* get it at http://poedit.net for various systems :).
|
|
298
|
+
*/
|
|
299
|
+
class moFileReader {
|
|
300
|
+
protected:
|
|
301
|
+
/// \brief Type for the map which holds the translation-pairs later.
|
|
302
|
+
typedef std::map<std::string, std::string> moLookupList;
|
|
303
|
+
|
|
304
|
+
/// \brief Type for the 2D map which holds the translation-pairs later.
|
|
305
|
+
typedef std::map<std::string, moLookupList> moContextLookupList;
|
|
306
|
+
|
|
307
|
+
public:
|
|
308
|
+
/// \brief The Magic Number describes the endianess of bytes on the system.
|
|
309
|
+
static const unsigned int MagicNumber = 0x950412DE;
|
|
310
|
+
|
|
311
|
+
/// \brief If the Magic Number is Reversed, we need to swap the bytes.
|
|
312
|
+
static const unsigned int MagicReversed = 0xDE120495;
|
|
313
|
+
|
|
314
|
+
/// \brief The character that is used to separate context strings
|
|
315
|
+
static const char ContextSeparator = '\x04';
|
|
316
|
+
|
|
317
|
+
/// \brief The possible errorcodes for methods of this class
|
|
318
|
+
enum eErrorCode {
|
|
319
|
+
/// \brief Indicated success
|
|
320
|
+
EC_SUCCESS = 0,
|
|
321
|
+
|
|
322
|
+
/// \brief Indicates an error
|
|
323
|
+
EC_ERROR,
|
|
324
|
+
|
|
325
|
+
/// \brief The given File was not found.
|
|
326
|
+
EC_FILENOTFOUND,
|
|
327
|
+
|
|
328
|
+
/// \brief The file is invalid.
|
|
329
|
+
EC_FILEINVALID,
|
|
330
|
+
|
|
331
|
+
/// \brief Empty Lookup-Table (returned by ExportAsHTML())
|
|
332
|
+
EC_TABLEEMPTY,
|
|
333
|
+
|
|
334
|
+
/// \brief The magic number did not match
|
|
335
|
+
EC_MAGICNUMBER_NOMATCH,
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* \brief The magic number is reversed.
|
|
339
|
+
* \note This is an error until the class supports it.
|
|
340
|
+
*/
|
|
341
|
+
EC_MAGICNUMBER_REVERSED,
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
/** \brief Reads a .mo-file
|
|
345
|
+
* \param[in] data The path to the file to load.
|
|
346
|
+
* \return SUCCESS on success or one of the other error-codes in eErrorCode on error.
|
|
347
|
+
*
|
|
348
|
+
* This is the core-feature. This method loads the .mo-file and stores
|
|
349
|
+
* all translation-pairs in a map. You can access this map via the method
|
|
350
|
+
* moFileReader::Lookup().
|
|
351
|
+
*/
|
|
352
|
+
moFileReader::eErrorCode ParseData(const std::string &data) {
|
|
353
|
+
// Opening the file.
|
|
354
|
+
std::stringstream stream(data);
|
|
355
|
+
|
|
356
|
+
return ReadStream(stream);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/** \brief Reads a .mo-file
|
|
360
|
+
* \param[in] filename The path to the file to load.
|
|
361
|
+
* \return SUCCESS on success or one of the other error-codes in eErrorCode on error.
|
|
362
|
+
*
|
|
363
|
+
* This is the core-feature. This method loads the .mo-file and stores
|
|
364
|
+
* all translation-pairs in a map. You can access this map via the method
|
|
365
|
+
* moFileReader::Lookup().
|
|
366
|
+
*/
|
|
367
|
+
eErrorCode ReadFile(const char *filename) {
|
|
368
|
+
// Opening the file.
|
|
369
|
+
std::ifstream stream(filename, std::ios_base::binary | std::ios_base::in);
|
|
370
|
+
if (!stream.is_open()) {
|
|
371
|
+
m_error = std::string("Cannot open File ") + std::string(filename);
|
|
372
|
+
return moFileReader::EC_FILENOTFOUND;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
eErrorCode res = ReadStream(stream);
|
|
376
|
+
stream.close();
|
|
377
|
+
|
|
378
|
+
return res;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/** \brief Reads data from a stream
|
|
382
|
+
* \param[in] stream
|
|
383
|
+
* \return SUCCESS on success or one of the other error-codes in eErrorCode on error.
|
|
384
|
+
*
|
|
385
|
+
*/
|
|
386
|
+
template <typename T>
|
|
387
|
+
eErrorCode ReadStream(T &stream) {
|
|
388
|
+
// Creating a file-description.
|
|
389
|
+
moFileInfo moInfo;
|
|
390
|
+
|
|
391
|
+
// Reference to the List inside moInfo.
|
|
392
|
+
moFileInfo::moTranslationPairList &TransPairInfo = moInfo.m_translationPairInformation;
|
|
393
|
+
|
|
394
|
+
// Read in all the 4 bytes of fire-magic, offsets and stuff...
|
|
395
|
+
stream.read((char *)&moInfo.m_magicNumber, 4);
|
|
396
|
+
stream.read((char *)&moInfo.m_fileVersion, 4);
|
|
397
|
+
stream.read((char *)&moInfo.m_numStrings, 4);
|
|
398
|
+
stream.read((char *)&moInfo.m_offsetOriginal, 4);
|
|
399
|
+
stream.read((char *)&moInfo.m_offsetTranslation, 4);
|
|
400
|
+
stream.read((char *)&moInfo.m_sizeHashtable, 4);
|
|
401
|
+
stream.read((char *)&moInfo.m_offsetHashtable, 4);
|
|
402
|
+
|
|
403
|
+
if (stream.bad()) {
|
|
404
|
+
m_error =
|
|
405
|
+
"Stream bad during reading. The .mo-file seems to be invalid or has bad "
|
|
406
|
+
"descriptions!";
|
|
407
|
+
return moFileReader::EC_FILEINVALID;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
// Checking the Magic Number
|
|
411
|
+
if (MagicNumber != moInfo.m_magicNumber) {
|
|
412
|
+
if (MagicReversed != moInfo.m_magicNumber) {
|
|
413
|
+
m_error = "The Magic Number does not match in all cases!";
|
|
414
|
+
return moFileReader::EC_MAGICNUMBER_NOMATCH;
|
|
415
|
+
} else {
|
|
416
|
+
moInfo.m_reversed = true;
|
|
417
|
+
m_error = "Magic Number is reversed. We do not support this yet!";
|
|
418
|
+
return moFileReader::EC_MAGICNUMBER_REVERSED;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
// Now we search all Length & Offsets of the original strings
|
|
423
|
+
for (int i = 0; i < moInfo.m_numStrings; i++) {
|
|
424
|
+
moTranslationPairInformation _str;
|
|
425
|
+
stream.read((char *)&_str.m_orLength, 4);
|
|
426
|
+
stream.read((char *)&_str.m_orOffset, 4);
|
|
427
|
+
if (stream.bad()) {
|
|
428
|
+
m_error =
|
|
429
|
+
"Stream bad during reading. The .mo-file seems to be invalid or has bad "
|
|
430
|
+
"descriptions!";
|
|
431
|
+
return moFileReader::EC_FILEINVALID;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
TransPairInfo.push_back(_str);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
// Get all Lengths & Offsets of the translated strings
|
|
438
|
+
// Be aware: The Descriptors already exist in our list, so we just mod. refs from the deque.
|
|
439
|
+
for (int i = 0; i < moInfo.m_numStrings; i++) {
|
|
440
|
+
moTranslationPairInformation &_str = TransPairInfo[i];
|
|
441
|
+
stream.read((char *)&_str.m_trLength, 4);
|
|
442
|
+
stream.read((char *)&_str.m_trOffset, 4);
|
|
443
|
+
if (stream.bad()) {
|
|
444
|
+
m_error =
|
|
445
|
+
"Stream bad during reading. The .mo-file seems to be invalid or has bad "
|
|
446
|
+
"descriptions!";
|
|
447
|
+
return moFileReader::EC_FILEINVALID;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
// Normally you would read the hash-table here, but we don't use it. :)
|
|
452
|
+
|
|
453
|
+
// Now to the interesting part, we read the strings-pairs now
|
|
454
|
+
for (int i = 0; i < moInfo.m_numStrings; i++) {
|
|
455
|
+
// We need a length of +1 to catch the trailing \0.
|
|
456
|
+
int orLength = TransPairInfo[i].m_orLength + 1;
|
|
457
|
+
int trLength = TransPairInfo[i].m_trLength + 1;
|
|
458
|
+
|
|
459
|
+
int orOffset = TransPairInfo[i].m_orOffset;
|
|
460
|
+
int trOffset = TransPairInfo[i].m_trOffset;
|
|
461
|
+
|
|
462
|
+
// Original
|
|
463
|
+
char *original = new char[orLength];
|
|
464
|
+
memset(original, 0, sizeof(char) * orLength);
|
|
465
|
+
|
|
466
|
+
stream.seekg(orOffset);
|
|
467
|
+
stream.read(original, orLength);
|
|
468
|
+
|
|
469
|
+
if (stream.bad()) {
|
|
470
|
+
m_error =
|
|
471
|
+
"Stream bad during reading. The .mo-file seems to be invalid or has bad "
|
|
472
|
+
"descriptions!";
|
|
473
|
+
return moFileReader::EC_FILEINVALID;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
// Translation
|
|
477
|
+
char *translation = new char[trLength];
|
|
478
|
+
memset(translation, 0, sizeof(char) * trLength);
|
|
479
|
+
|
|
480
|
+
stream.seekg(trOffset);
|
|
481
|
+
stream.read(translation, trLength);
|
|
482
|
+
|
|
483
|
+
if (stream.bad()) {
|
|
484
|
+
m_error =
|
|
485
|
+
"Stream bad during reading. The .mo-file seems to be invalid or has bad "
|
|
486
|
+
"descriptions!";
|
|
487
|
+
return moFileReader::EC_FILEINVALID;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
std::string original_str = original;
|
|
491
|
+
std::string translation_str = translation;
|
|
492
|
+
auto ctxSeparator = original_str.find(ContextSeparator);
|
|
493
|
+
|
|
494
|
+
// Store it in the map.
|
|
495
|
+
if (ctxSeparator == std::string::npos) {
|
|
496
|
+
m_lookup[original_str] = translation_str;
|
|
497
|
+
numStrings++;
|
|
498
|
+
} else {
|
|
499
|
+
// try-catch for handling out_of_range exceptions
|
|
500
|
+
try {
|
|
501
|
+
m_lookup_context[original_str.substr(0, ctxSeparator)][original_str.substr(
|
|
502
|
+
ctxSeparator + 1, original_str.length())] = translation_str;
|
|
503
|
+
numStrings++;
|
|
504
|
+
} catch (...) {
|
|
505
|
+
m_error =
|
|
506
|
+
"Stream bad during reading. The .mo-file seems to be invalid or has bad "
|
|
507
|
+
"descriptions!";
|
|
508
|
+
return moFileReader::EC_ERROR;
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
// Cleanup...
|
|
513
|
+
delete[] original;
|
|
514
|
+
delete[] translation;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
// Done :)
|
|
518
|
+
return moFileReader::EC_SUCCESS;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
/** \brief Returns the searched translation or returns the input.
|
|
522
|
+
* \param[in] id The id of the translation to search for.
|
|
523
|
+
* \return The value you passed in via _id or the translated string.
|
|
524
|
+
*/
|
|
525
|
+
std::string Lookup(const char *id) const {
|
|
526
|
+
if (m_lookup.empty())
|
|
527
|
+
return id;
|
|
528
|
+
auto iterator = m_lookup.find(id);
|
|
529
|
+
|
|
530
|
+
return iterator == m_lookup.end() ? id : iterator->second;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
/** \brief Returns the searched translation or returns the input, restricted to the context
|
|
534
|
+
* given by context. See https://www.gnu.org/software/gettext/manual/html_node/Contexts.html for
|
|
535
|
+
* more info. \param[in] context Restrict to the context given. \param[in] id The id of the
|
|
536
|
+
* translation to search for. \return The value you passed in via _id or the translated string.
|
|
537
|
+
*/
|
|
538
|
+
std::string LookupWithContext(const char *context, const char *id) const {
|
|
539
|
+
if (m_lookup_context.empty())
|
|
540
|
+
return id;
|
|
541
|
+
auto iterator = m_lookup_context.find(context);
|
|
542
|
+
|
|
543
|
+
if (iterator == m_lookup_context.end())
|
|
544
|
+
return id;
|
|
545
|
+
auto iterator2 = iterator->second.find(id);
|
|
546
|
+
|
|
547
|
+
return iterator2 == iterator->second.end() ? id : iterator2->second;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
/// \brief Returns the Error Description.
|
|
551
|
+
const std::string &GetErrorDescription() const {
|
|
552
|
+
return m_error;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
/// \brief Empties the Lookup-Table.
|
|
556
|
+
void ClearTable() {
|
|
557
|
+
m_lookup.clear();
|
|
558
|
+
m_lookup_context.clear();
|
|
559
|
+
numStrings = 0;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
/** \brief Returns the Number of Entries in our Lookup-Table.
|
|
563
|
+
* \note The mo-File-table always contains an empty msgid, which contains informations
|
|
564
|
+
* about the tranlsation-project. So the real number of strings is always minus 1.
|
|
565
|
+
*/
|
|
566
|
+
unsigned int GetNumStrings() const {
|
|
567
|
+
return numStrings;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
/** \brief Exports the whole content of the .mo-File as .html
|
|
571
|
+
* \param[in] infile The .mo-File to export.
|
|
572
|
+
* \param[in] filename Where to store the .html-file. If empty, the path and filename of the
|
|
573
|
+
* _infile with .html appended. \param[in,out] css The css-script for the visual style of the
|
|
574
|
+
* file, in case you don't like mine ;).
|
|
575
|
+
* \see g_css for the possible and used css-values.
|
|
576
|
+
*/
|
|
577
|
+
static eErrorCode ExportAsHTML(const std::string &infile, const std::string &filename = "",
|
|
578
|
+
const std::string &css = g_css) {
|
|
579
|
+
// Read the file
|
|
580
|
+
moFileReader reader;
|
|
581
|
+
moFileReader::eErrorCode r = reader.ReadFile(infile.c_str());
|
|
582
|
+
if (r != moFileReader::EC_SUCCESS) {
|
|
583
|
+
return r;
|
|
584
|
+
}
|
|
585
|
+
if (reader.m_lookup.empty()) {
|
|
586
|
+
return moFileReader::EC_TABLEEMPTY;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
// Beautify Output
|
|
590
|
+
std::string fname;
|
|
591
|
+
size_t pos = infile.find_last_of(MO_PATHSEP);
|
|
592
|
+
if (pos != std::string::npos) {
|
|
593
|
+
fname = infile.substr(pos + 1, infile.length());
|
|
594
|
+
} else {
|
|
595
|
+
fname = infile;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
// if there is no filename given, we set it to the .mo + html, e.g. test.mo.html
|
|
599
|
+
std::string htmlfile(filename);
|
|
600
|
+
if (htmlfile.empty()) {
|
|
601
|
+
htmlfile = infile + std::string(".html");
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
// Ok, now prepare output.
|
|
605
|
+
std::ofstream stream(htmlfile.c_str());
|
|
606
|
+
if (stream.is_open()) {
|
|
607
|
+
stream
|
|
608
|
+
<< R"(<!DOCTYPE HTML PUBLIC "- //W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">)"
|
|
609
|
+
<< std::endl;
|
|
610
|
+
stream << "<html><head><style type=\"text/css\">\n" << std::endl;
|
|
611
|
+
stream << css << std::endl;
|
|
612
|
+
stream << "</style>" << std::endl;
|
|
613
|
+
stream << R"(<meta http-equiv="content-type" content="text/html; charset=utf-8">)"
|
|
614
|
+
<< std::endl;
|
|
615
|
+
stream << "<title>Dump of " << fname << "</title></head>" << std::endl;
|
|
616
|
+
stream << "<body>" << std::endl;
|
|
617
|
+
stream << "<center>" << std::endl;
|
|
618
|
+
stream << "<h1>" << fname << "</h1>" << std::endl;
|
|
619
|
+
stream << R"(<table border="1"><th colspan="2">Project Info</th>)" << std::endl;
|
|
620
|
+
|
|
621
|
+
std::stringstream parsee;
|
|
622
|
+
parsee << reader.Lookup("");
|
|
623
|
+
|
|
624
|
+
while (!parsee.eof()) {
|
|
625
|
+
char buffer[1024];
|
|
626
|
+
parsee.getline(buffer, 1024);
|
|
627
|
+
std::string name;
|
|
628
|
+
std::string value;
|
|
629
|
+
|
|
630
|
+
reader.GetPoEditorString(buffer, name, value);
|
|
631
|
+
if (!(name.empty() || value.empty())) {
|
|
632
|
+
stream << "<tr><td>" << name << "</td><td>" << value << "</td></tr>"
|
|
633
|
+
<< std::endl;
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
stream << "</table>" << std::endl;
|
|
637
|
+
stream << "<hr noshade/>" << std::endl;
|
|
638
|
+
|
|
639
|
+
// Now output the content
|
|
640
|
+
stream << R"(<table border="1"><th colspan="2">Content</th>)" << std::endl;
|
|
641
|
+
for (const auto &it : reader.m_lookup) {
|
|
642
|
+
if (!it.first.empty()) // Skip the empty msgid, its the table we handled above.
|
|
643
|
+
{
|
|
644
|
+
stream << "<tr><td>" << it.first << "</td><td>" << it.second << "</td></tr>"
|
|
645
|
+
<< std::endl;
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
stream << "</table><br/>" << std::endl;
|
|
649
|
+
|
|
650
|
+
// Separate tables for each context
|
|
651
|
+
for (const auto &it : reader.m_lookup_context) {
|
|
652
|
+
stream << R"(<table border="1"><th colspan="2">)" << it.first << "</th>"
|
|
653
|
+
<< std::endl;
|
|
654
|
+
for (const auto &its : it.second) {
|
|
655
|
+
stream << "<tr><td>" << its.first << "</td><td>" << its.second << "</td></tr>"
|
|
656
|
+
<< std::endl;
|
|
657
|
+
}
|
|
658
|
+
stream << "</table><br/>" << std::endl;
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
stream << "</center>" << std::endl;
|
|
662
|
+
stream << "<div class=\"copyleft\">File generated by <a "
|
|
663
|
+
"href=\"https://github.com/AnotherFoxGuy/MofileReader\" "
|
|
664
|
+
"target=\"_blank\">moFileReaderSDK</a></div>"
|
|
665
|
+
<< std::endl;
|
|
666
|
+
stream << "</body></html>" << std::endl;
|
|
667
|
+
stream.close();
|
|
668
|
+
} else {
|
|
669
|
+
return moFileReader::EC_FILENOTFOUND;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
return moFileReader::EC_SUCCESS;
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
protected:
|
|
676
|
+
/// \brief Keeps the last error as String.
|
|
677
|
+
std::string m_error;
|
|
678
|
+
|
|
679
|
+
/** \brief Swap the endianness of a 4 byte WORD.
|
|
680
|
+
* \param[in] in The value to swap.
|
|
681
|
+
* \return The swapped value.
|
|
682
|
+
*/
|
|
683
|
+
unsigned long SwapBytes(unsigned long in) {
|
|
684
|
+
unsigned long b0 = (in >> 0) & 0xff;
|
|
685
|
+
unsigned long b1 = (in >> 8) & 0xff;
|
|
686
|
+
unsigned long b2 = (in >> 16) & 0xff;
|
|
687
|
+
unsigned long b3 = (in >> 24) & 0xff;
|
|
688
|
+
|
|
689
|
+
return (b0 << 24) | (b1 << 16) | (b2 << 8) | b3;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
private:
|
|
693
|
+
// Holds the lookup-table
|
|
694
|
+
moLookupList m_lookup;
|
|
695
|
+
moContextLookupList m_lookup_context;
|
|
696
|
+
|
|
697
|
+
int numStrings = 0;
|
|
698
|
+
|
|
699
|
+
// Replaces < with ( to satisfy html-rules.
|
|
700
|
+
static void MakeHtmlConform(std::string &_inout) {
|
|
701
|
+
std::string temp = _inout;
|
|
702
|
+
for (unsigned int i = 0; i < temp.length(); i++) {
|
|
703
|
+
if (temp[i] == '>') {
|
|
704
|
+
_inout.replace(i, 1, ")");
|
|
705
|
+
}
|
|
706
|
+
if (temp[i] == '<') {
|
|
707
|
+
_inout.replace(i, 1, "(");
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
// Extracts a value-pair from the po-edit-information
|
|
713
|
+
bool GetPoEditorString(const char *_buffer, std::string &_name, std::string &_value) {
|
|
714
|
+
std::string line(_buffer);
|
|
715
|
+
size_t first = line.find_first_of(':');
|
|
716
|
+
|
|
717
|
+
if (first != std::string::npos) {
|
|
718
|
+
_name = line.substr(0, first);
|
|
719
|
+
_value = line.substr(first + 1, line.length());
|
|
720
|
+
|
|
721
|
+
// Replace <> with () for Html-Conformity.
|
|
722
|
+
MakeHtmlConform(_value);
|
|
723
|
+
MakeHtmlConform(_name);
|
|
724
|
+
|
|
725
|
+
// Remove spaces from front and end.
|
|
726
|
+
Trim(_value);
|
|
727
|
+
Trim(_name);
|
|
728
|
+
|
|
729
|
+
return true;
|
|
730
|
+
}
|
|
731
|
+
return false;
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
// Removes spaces from front and end.
|
|
735
|
+
static void Trim(std::string &_in) {
|
|
736
|
+
if (_in.empty()) {
|
|
737
|
+
return;
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
_in.erase(0, _in.find_first_not_of(" "));
|
|
741
|
+
_in.erase(_in.find_last_not_of(" ") + 1);
|
|
742
|
+
|
|
743
|
+
/*while (_in[0] == ' ')
|
|
744
|
+
{
|
|
745
|
+
_in = _in.substr(1, _in.length());
|
|
746
|
+
}
|
|
747
|
+
while (_in[_in.length()] == ' ')
|
|
748
|
+
{
|
|
749
|
+
_in = _in.substr(0, _in.length() - 1);
|
|
750
|
+
}*/
|
|
751
|
+
}
|
|
752
|
+
};
|
|
753
|
+
|
|
754
|
+
#ifndef MO_NO_CONVENIENCE_CLASS
|
|
755
|
+
/** \brief Convenience Class
|
|
756
|
+
*
|
|
757
|
+
*
|
|
758
|
+
* This class derives from moFileReader and builds a singleton to access its methods
|
|
759
|
+
* in a global manner.
|
|
760
|
+
* \note This class is a Singleton. Please access it via moFileReaderSingleton::GetInstance()
|
|
761
|
+
* or use the provided wrappers:\n
|
|
762
|
+
* - moReadMoFile()
|
|
763
|
+
* - _()
|
|
764
|
+
* - moFileClearTable()
|
|
765
|
+
* - moFileGetErrorDescription()
|
|
766
|
+
* - moFileGetNumStrings();
|
|
767
|
+
*/
|
|
768
|
+
class moFileReaderSingleton : public moFileReader {
|
|
769
|
+
private:
|
|
770
|
+
// Private Contructor and Copy-Constructor to avoid
|
|
771
|
+
// that this class is instanced.
|
|
772
|
+
moFileReaderSingleton() {}
|
|
773
|
+
|
|
774
|
+
moFileReaderSingleton(const moFileReaderSingleton &);
|
|
775
|
+
|
|
776
|
+
moFileReaderSingleton &operator=(const moFileReaderSingleton &) {
|
|
777
|
+
return *this;
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
public:
|
|
781
|
+
/** \brief Singleton-Accessor.
|
|
782
|
+
* \return A static instance of moFileReaderSingleton.
|
|
783
|
+
*/
|
|
784
|
+
static moFileReaderSingleton &GetInstance() {
|
|
785
|
+
static moFileReaderSingleton theoneandonly;
|
|
786
|
+
return theoneandonly;
|
|
787
|
+
}
|
|
788
|
+
};
|
|
789
|
+
|
|
790
|
+
/** \brief Reads the .mo-File.
|
|
791
|
+
* \param[in] _filename The path to the file to use.
|
|
792
|
+
* \see moFileReader::ReadFile() for details.
|
|
793
|
+
*/
|
|
794
|
+
inline moFileReader::eErrorCode moReadMoFile(const char *_filename) {
|
|
795
|
+
moFileReader::eErrorCode r = moFileReaderSingleton::GetInstance().ReadFile(_filename);
|
|
796
|
+
return r;
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
/** \brief Looks for the spec. string to translate.
|
|
800
|
+
* \param[in] id The string-id to search.
|
|
801
|
+
* \return The translation if found, otherwise it returns id.
|
|
802
|
+
*/
|
|
803
|
+
inline std::string _(const char *id) {
|
|
804
|
+
std::string r = moFileReaderSingleton::GetInstance().Lookup(id);
|
|
805
|
+
return r;
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
/// \brief Resets the Lookup-Table.
|
|
809
|
+
inline void moFileClearTable() {
|
|
810
|
+
moFileReaderSingleton::GetInstance().ClearTable();
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
/// \brief Returns the last known error as string or an empty class.
|
|
814
|
+
inline std::string moFileGetErrorDescription() {
|
|
815
|
+
std::string r = moFileReaderSingleton::GetInstance().GetErrorDescription();
|
|
816
|
+
return r;
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
/// \brief Returns the number of entries loaded from the .mo-File.
|
|
820
|
+
inline int moFileGetNumStrings() {
|
|
821
|
+
int r = moFileReaderSingleton::GetInstance().GetNumStrings();
|
|
822
|
+
return r;
|
|
823
|
+
}
|
|
824
|
+
#endif
|
|
825
|
+
|
|
826
|
+
MO_END_NAMESPACE
|
|
827
|
+
|
|
828
|
+
#if defined(_MSC_VER)
|
|
829
|
+
#pragma warning(default : 4251)
|
|
830
|
+
#endif /* _MSC_VER */
|
|
831
|
+
|
|
832
|
+
#ifdef __GNUC__
|
|
833
|
+
#pragma GCC diagnostic pop
|
|
834
|
+
#endif
|
|
835
|
+
|
|
836
|
+
#endif /* __MOFILEREADER_SINGLE_INCLUDE_H_INCLUDED__ */
|