From 7a851a41a5f01df4a64b62e7bd716be238b8d1a3 Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Sun, 17 Jul 2016 21:10:59 -0400 Subject: [PATCH] 'v3.7.3.1' --- 100_core/src/gplx/core/brys/Bry_bfr_mkr.java | 12 +- .../src/gplx/core/brys/Bry_bfr_mkr_mgr.java | 6 +- 100_core/src/gplx/core/brys/Bry_rdr.java | 9 +- .../src/gplx/core/btries/Btrie_bwd_mgr.java | 31 ++ .../src/gplx/core/btries/Btrie_fast_mgr.java | 7 +- 100_core/src/gplx/core/btries/Btrie_mgr.java | 1 + .../src/gplx/core/btries/Btrie_slim_mgr.java | 10 +- .../src/gplx/core/btries/Btrie_u8_mgr.java | 31 ++ .../threads/utils/Gfo_blocking_queue.java | 35 ++ .../threads/utils/Gfo_countdown_latch.java | 32 ++ 140_dbs/src/gplx/dbs/Db_conn.java | 1 + 140_dbs/src/gplx/dbs/Db_conn_bldr.java | 31 +- .../metas/parsers/Dbmeta_fld_wkr__base.java | 30 +- .../dbs/metas/parsers/Dbmeta_parser__fld.java | 7 +- .../src/gplx/dbs/utls/Db_in_wkr__base.java | 2 +- .../src/gplx/core/ios/Io_stream_zip_mgr.java | 21 +- .../src/gplx/core/net/Gfo_url_parser.java | 5 +- .../gplx/core/net/Http_request_parser.java | 6 +- 400_xowa/src/gplx/langs/gfs/Gfs_lxr.java | 24 +- 400_xowa/src/gplx/langs/gfs/Gfs_parser.java | 8 +- .../src/gplx/langs/gfs/Gfs_parser_ctx.java | 1 + 400_xowa/src/gplx/langs/htmls/Gfh_atr_.java | 6 + 400_xowa/src/gplx/langs/htmls/Gfh_tag_.java | 45 ++- 400_xowa/src/gplx/langs/htmls/Gfh_utl.java | 5 +- .../gplx/langs/htmls/docs/Gfh_doc_parser.java | 9 +- .../src/gplx/langs/htmls/docs/Gfh_tag.java | 5 + .../langs/htmls/encoders/Gfo_url_encoder.java | 24 +- .../htmls/encoders/Gfo_url_encoder_.java | 13 +- .../htmls/encoders/Gfo_url_encoder_itm.java | 13 +- 400_xowa/src/gplx/langs/phps/Php_parser.java | 7 +- 400_xowa/src/gplx/xowa/Xoa_app.java | 1 - 400_xowa/src/gplx/xowa/Xoa_app_.java | 2 +- 400_xowa/src/gplx/xowa/Xoa_ttl.java | 6 +- 400_xowa/src/gplx/xowa/Xoae_app.java | 4 +- 400_xowa/src/gplx/xowa/Xoae_page.java | 13 +- 400_xowa/src/gplx/xowa/Xop_fxt.java | 17 +- 400_xowa/src/gplx/xowa/Xow_wiki.java | 3 +- 400_xowa/src/gplx/xowa/Xowe_wiki.java | 5 +- .../bldrs/files/Xoax_builds_files_addon.java | 4 +- .../files/cmds/Xobldr__lnki_temp__create.java | 4 +- .../bldrs/mass_parses/dbs/Xomp_db_core.java | 59 ++++ .../bldrs/mass_parses/dbs/Xomp_mgr_db.java | 29 ++ .../bldrs/mass_parses/dbs/Xomp_page_tbl.java | 39 +++ .../bldrs/mass_parses/dbs/Xomp_wkr_db.java | 33 ++ .../mass_parses/inits/Xomp_init_mgr.java | 34 +- .../mass_parses/makes/Xomp_html_db_rdr.java | 41 +++ .../mass_parses/makes/Xomp_html_db_wtr.java | 66 ++++ .../mass_parses/makes/Xomp_make_cmd.java | 31 ++ .../mass_parses/makes/Xomp_make_wkr.java | 71 ++++ .../mass_parses/makes/Xomp_page_pool.java | 84 ----- .../Xob_hdump_tbl_retriever__xomp.java | 9 +- .../mass_parses/parses/Xomp_load_wkr.java | 126 +++++++ .../{makes => parses}/Xomp_page_itm.java | 11 +- .../mass_parses/parses/Xomp_page_pool.java | 62 ++++ .../Xomp_page_pool_loader.java | 12 +- .../{makes => parses}/Xomp_parse_cmd.java | 2 +- .../{makes => parses}/Xomp_parse_mgr.java | 43 ++- .../{makes => parses}/Xomp_parse_mgr_cfg.java | 10 +- .../{makes => parses}/Xomp_parse_wkr.java | 47 ++- .../mass_parses/parses/Xomp_prog_mgr.java | 43 +++ .../Xomp_text_db_loader.java | 13 +- .../parses/Xomp_tmpl_cache_bldr.java | 81 +++++ .../htmls/tocs/Xoh_toc_htmlr.java | 29 +- .../htmls/tocs/Xoh_toc_htmlr__basic__tst.java | 8 +- .../{ => addons}/htmls/tocs/Xoh_toc_itm.java | 4 +- .../htmls/tocs/Xoh_toc_mgr.java} | 33 +- .../htmls/tocs/Xoh_toc_wkr__lvl.java | 2 +- .../tocs/Xoh_toc_wkr__lvl__basic__tst.java | 2 +- .../htmls/tocs/Xoh_toc_wkr__txt.java | 18 +- .../tocs/Xoh_toc_wkr__txt__basic__tst.java | 7 +- .../tocs/Xoh_toc_wkr__txt__dupe__tst.java | 2 +- .../tocs/Xoh_toc_wkr__txt__xnde__tst.java | 6 +- .../htmls/tocs/Xowe_hdr_bldr__tst.java} | 80 +---- .../addons/htmls/tocs/Xowe_hdr_bldr_fxt.java | 69 ++++ .../searchs/parsers/Srch_text_parser.java | 9 +- .../searchers/crts/Srch_crt_scanner.java | 8 +- .../searchs/specials/Srch_special_cmd.java | 2 +- 400_xowa/src/gplx/xowa/apps/Xoa_app_mode.java | 9 +- .../apps/site_cfgs/Xoa_site_cfg_mgr_tst.java | 2 +- 400_xowa/src/gplx/xowa/bldrs/Xobd_parser.java | 5 +- .../gplx/xowa/bldrs/cmds/ctgs/Uca_trie.java | 7 +- .../gplx/xowa/bldrs/css/Xob_css_parser.java | 5 +- .../setups/maints/Wmf_latest_parser.java | 9 +- .../gplx/xowa/bldrs/xmls/Xob_xml_parser_.java | 2 +- .../gplx/xowa/drds/pages/Xod_page_mgr.java | 4 +- .../src/gplx/xowa/files/Xof_file_wkr_.java | 12 +- .../gplx/xowa/files/caches/Xou_cache_mgr.java | 2 + .../files/caches/Xou_file_itm_finder.java | 3 +- .../src/gplx/xowa/htmls/Xoh_html_mgr.java | 8 +- 400_xowa/src/gplx/xowa/htmls/Xoh_page.java | 29 +- .../src/gplx/xowa/htmls/Xoh_page_bfr.java | 49 +++ .../src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java | 10 +- .../src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java | 34 +- .../src/gplx/xowa/htmls/Xohp_ctg_grp_mgr.java | 6 +- .../src/gplx/xowa/htmls/Xow_html_mgr.java | 21 +- .../xowa/htmls/core/Xow_hdump_mgr__load.java | 6 +- .../xowa/htmls/core/Xow_hdump_mgr__save.java | 2 +- .../xowa/htmls/core/bldrs/Xob_hdump_bldr.java | 10 +- .../xowa/htmls/core/dbs/Xowd_html_tbl.java | 3 +- .../htmls/core/htmls/Xoh_display_ttl_wtr.java | 47 +++ .../xowa/htmls/core/htmls/Xoh_html_wtr.java | 309 ++++++++---------- .../core/htmls/Xoh_html_wtr_escaper.java | 5 +- .../{Xoh_tidy_mgr.java => Xoa_tidy_mgr.java} | 61 +--- .../core/htmls/tidy/Xoh_tidy_mgr_tst.java | 4 +- .../htmls/core/htmls/tidy/Xoh_tidy_wkr.java | 1 + .../htmls/core/htmls/tidy/Xoh_tidy_wkr_.java | 3 +- .../htmls/core/htmls/tidy/Xow_tidy_mgr.java | 80 +++++ .../xowa/htmls/core/hzips/Xoh_bfr_mgr.java | 46 --- .../xowa/htmls/core/hzips/Xoh_hzip_mgr.java | 20 +- .../htmls/core/makes/tests/Xoh_make_fxt.java | 2 +- .../xowa/htmls/core/wkrs/Xoh_hdoc_ctx.java | 2 +- .../xowa/htmls/core/wkrs/Xoh_hzip_bfr.java | 5 +- .../xowa/htmls/core/wkrs/Xoh_hzip_fxt.java | 2 +- .../htmls/core/wkrs/hdrs/Xoh_hdr_html.java | 58 +++- .../core/wkrs/hdrs/Xoh_hdr_hzip_tst.java | 6 +- .../htmls/core/wkrs/hdrs/Xoh_hdr_wtr.java | 2 +- .../htmls/core/wkrs/imgs/Bfr_arg__pgbnr.java | 37 +++ .../wkrs/imgs/Xoh_img_bare_hzip__tst.java | 4 +- .../htmls/core/wkrs/imgs/Xoh_img_data.java | 11 +- .../htmls/core/wkrs/imgs/Xoh_img_hzip.java | 74 +++-- .../imgs/Xoh_img_hzip__dump__pgbnr__tst.java | 35 ++ .../wkrs/imgs/Xoh_img_make__dump__tst.java | 2 +- .../htmls/core/wkrs/imgs/Xoh_img_wtr.java | 29 +- .../core/wkrs/imgs/atrs/Xoh_img_cls_data.java | 7 +- .../wkrs/imgs/atrs/Xoh_img_xoimg_data.java | 8 +- .../htmls/core/wkrs/lnkes/Xoh_lnke_html.java | 6 +- .../htmls/core/wkrs/lnkes/Xoh_lnke_wtr.java | 4 +- .../lnkis/htmls/Xoh_file_html_fmtr__base.java | 4 +- .../htmls/Xoh_file_html_fmtr__hdump.java | 1 - .../wkrs/lnkis/htmls/Xoh_file_wtr__basic.java | 11 +- .../wkrs/lnkis/htmls/Xoh_lnki_text_fmtr.java | 6 +- .../core/wkrs/lnkis/htmls/Xoh_lnki_wtr.java | 4 +- .../htmls/core/wkrs/tocs/Xoh_toc_data.java | 4 +- .../htmls/core/wkrs/tocs/Xoh_toc_wtr.java | 17 +- .../gplx/xowa/htmls/heads/Xoh_head_mgr.java | 2 +- .../xowa/htmls/hrefs/Xoh_href_parser.java | 7 +- .../gplx/xowa/htmls/hrefs/Xoh_href_wtr.java | 2 +- .../src/gplx/xowa/htmls/js/Xoh_js_cbk.java | 2 +- .../xowa/htmls/js/Xoh_js_cleaner_tst.java | 2 +- .../modules/popups/Xow_popup_html_mkr.java | 4 +- .../modules/popups/Xow_popup_parser.java | 26 +- .../xowa/htmls/sidebar/Xowh_sidebar_mgr.java | 2 +- .../src/gplx/xowa/htmls/tocs/Xow_hdr_mgr.java | 131 -------- .../src/gplx/xowa/htmls/tocs/Xow_toc_mgr.java | 228 ------------- .../src/gplx/xowa/langs/Xol_lang_itm.java | 1 + .../gplx/xowa/langs/cases/Xol_case_mgr.java | 110 +++---- .../gplx/xowa/langs/cases/Xol_case_mgr_.java | 8 +- .../gplx/xowa/langs/funcs/Xol_func_itm.java | 23 +- .../gplx/xowa/langs/funcs/Xol_func_regy.java | 8 +- .../xowa/langs/grammars/Xol_grammar_ru.java | 5 +- .../src/gplx/xowa/langs/msgs/Xol_msg_mgr.java | 2 +- .../gplx/xowa/langs/msgs/Xol_msg_mgr_.java | 4 +- .../src/gplx/xowa/langs/msgs/Xow_msg_mgr.java | 2 +- .../xowa/langs/numbers/Xol_num_fmtr_base.java | 6 +- .../langs/vnts/converts/Xol_convert_wkr.java | 8 +- 400_xowa/src/gplx/xowa/parsers/Xop_ctx.java | 87 ++--- .../src/gplx/xowa/parsers/Xop_parser.java | 49 +-- .../src/gplx/xowa/parsers/Xop_parser_.java | 19 +- .../gplx/xowa/parsers/Xop_parser__tst.java | 2 +- .../gplx/xowa/parsers/Xop_parser_tid_.java | 21 ++ .../src/gplx/xowa/parsers/Xow_parser_mgr.java | 21 +- .../gplx/xowa/parsers/amps/Xop_amp_mgr.java | 53 --- .../xowa/parsers/apos/Xop_apos_wkr_tst.java | 10 +- .../gplx/xowa/parsers/hdrs/Xop_hdr_tkn.java | 28 +- .../xowa/parsers/hdrs/Xop_hdr_tkn_chkr.java | 34 -- .../gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java | 18 +- .../parsers/hdrs/Xop_hdr_wkr__basic_tst.java | 2 +- .../parsers/lists/Xop_list_wkr_basic_tst.java | 42 +-- .../parsers/lnkis/Xop_lnki_arg_parser.java | 33 +- .../parsers/lnkis/Xop_lnki_wkr__ctg_tst.java | 2 +- .../gplx/xowa/parsers/miscs/Xop_comm_lxr.java | 14 +- .../gplx/xowa/parsers/miscs/Xop_pipe_lxr.java | 8 +- .../xowa/parsers/miscs/Xop_under_lxr.java | 25 +- .../xowa/parsers/miscs/Xop_under_lxr_tst.java | 11 +- .../gplx/xowa/parsers/paras/Xop_nl_lxr.java | 7 +- .../gplx/xowa/parsers/paras/Xop_para_wkr.java | 7 +- .../parsers/paras/Xop_para_wkr_basic_tst.java | 43 +-- .../gplx/xowa/parsers/tblws/Xop_tblw_wkr.java | 4 +- .../tblws/Xop_tblw_wkr__basic_tst.java | 9 - .../xowa/parsers/tmpls/Xot_defn_tmpl.java | 2 +- .../gplx/xowa/parsers/tmpls/Xot_invk_tkn.java | 17 +- .../gplx/xowa/parsers/tmpls/Xot_invk_wkr.java | 20 +- .../gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java | 2 +- .../gplx/xowa/parsers/uniqs/Xop_uniq_mgr.java | 6 +- .../vnts/Vnt_convert_lang__syntax__tst.java | 39 +-- .../parsers/vnts/Vnt_convert_lang_fxt.java | 56 ++++ .../xowa/parsers/vnts/Vnt_rule_parser.java | 9 +- .../parsers/xndes/Xop_xatr_whitelist_mgr.java | 149 ++++----- .../xowa/parsers/xndes/Xop_xnde_tag_regy.java | 8 +- .../gplx/xowa/parsers/xndes/Xop_xnde_wkr.java | 18 +- .../gplx/xowa/specials/Xow_special_mgr.java | 6 +- .../specials/allPages/Xows_page_allpages.java | 4 +- .../xowa/specials/movePage/Move_page.java | 2 +- .../xowa/users/history/Xou_history_mgr.java | 13 +- .../src/gplx/xowa/users/prefs/Prefs_mgr.java | 2 +- 400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java | 3 +- .../gplx/xowa/wikis/caches/Xow_cache_mgr.java | 24 +- .../xowa/wikis/caches/Xow_page_cache.java | 47 ++- .../xowa/wikis/caches/Xow_page_cache_itm.java | 15 +- .../gplx/xowa/wikis/ctgs/Xoctg_fmtr_all.java | 8 +- .../xowa/wikis/ctgs/Xoctg_fmtr_itm_base.java | 2 +- .../xowa/wikis/ctgs/Xoctg_fmtr_itm_page.java | 2 - .../xowa/wikis/ctgs/Xoctg_fmtr_itm_subc.java | 5 +- .../gplx/xowa/wikis/ctgs/Xoctg_html_mgr.java | 5 +- .../xowa/wikis/ctgs/Xoctg_pagelist_itms.java | 6 +- .../gplx/xowa/wikis/ctgs/Xoctg_view_grp.java | 2 +- .../wikis/data/tbls/Xowd_cat_link_tbl.java | 4 +- .../xowa/wikis/data/tbls/Xowd_page_tbl.java | 15 +- .../wikis/data/tbls/Xowd_page_tbl__id.java | 12 +- .../wikis/data/tbls/Xowd_text_bry_owner.java | 22 ++ .../gplx/xowa/wikis/dbs/Xodb_load_mgr.java | 2 +- .../xowa/wikis/dbs/Xodb_load_mgr_sql.java | 12 +- .../xowa/wikis/dbs/Xodb_load_mgr_sql_tst.java | 2 +- .../xowa/wikis/dbs/Xodb_load_mgr_txt.java | 2 +- .../gplx/xowa/wikis/domains/Xow_abrv_wm_.java | 14 +- .../gplx/xowa/wikis/pages/Xow_page_mgr.java | 31 +- .../xowa/wikis/pages/dbs/Xopg_db_data.java | 4 +- .../xowa/wikis/pages/dbs/Xopg_db_html.java | 7 +- .../xowa/wikis/pages/dbs/Xopg_db_page.java | 11 +- .../wikis/pages/dbs/Xopg_db_protection.java | 13 +- .../xowa/wikis/pages/dbs/Xopg_db_text.java | 3 + .../wikis/pages/hdumps/Xopg_hdump_data.java | 4 +- .../wikis/pages/htmls/Xopg_html_data.java | 6 +- .../xowa/wikis/pages/wtxts/Xopg_toc_mgr.java | 57 ++++ .../pages/wtxts/Xopg_wtxt_data.java} | 17 +- .../htmls/Xoa_sitelink_div_wtr_fxt.java | 2 +- 400_xowa/src/gplx/xowa/xtns/Xox_xnde.java | 2 +- .../categoryList/Xtn_categorylist_nde.java | 2 +- .../gplx/xowa/xtns/cites/Ref_html_wtr.java | 49 +-- .../src/gplx/xowa/xtns/cites/Ref_nde.java | 2 +- .../gplx/xowa/xtns/cites/References_nde.java | 6 +- .../xowa/xtns/cites/Xoh_ref_list_fmtr.java | 59 ++++ .../xowa/xtns/dynamicPageList/Dpl_itm.java | 4 +- .../xowa/xtns/dynamicPageList/Dpl_xnde.java | 2 +- .../xowa/xtns/gallery/Gallery_mgr_wtr.java | 4 +- .../xowa/xtns/gallery/Gallery_mgr_wtr_.java | 2 +- .../xowa/xtns/gallery/Gallery_parser.java | 5 +- .../gplx/xowa/xtns/gallery/Gallery_xnde.java | 2 +- .../xowa/xtns/geoCrumbs/Geoc_isin_func.java | 2 +- .../src/gplx/xowa/xtns/graphs/Graph_xnde.java | 4 +- .../gplx/xowa/xtns/hieros/Hiero_parser.java | 7 +- .../src/gplx/xowa/xtns/hieros/Hiero_xnde.java | 2 +- .../src/gplx/xowa/xtns/imaps/Imap_parser.java | 7 +- .../src/gplx/xowa/xtns/imaps/Imap_xnde.java | 4 +- .../xtns/imaps/itms/Imap_link_owner_.java | 4 +- .../xowa/xtns/indicators/Indicator_xnde.java | 4 +- .../xowa/xtns/inputBox/Xtn_inputbox_nde.java | 2 +- .../gplx/xowa/xtns/listings/Listing_xnde.java | 8 +- .../xowa/xtns/listings/Listing_xtn_mgr.java | 2 +- .../src/gplx/xowa/xtns/lst/Lst_pfunc_wkr.java | 2 +- .../gplx/xowa/xtns/lst/Lst_section_nde.java | 2 +- .../src/gplx/xowa/xtns/math/Math_nde.java | 2 +- .../xowa/xtns/math/Xof_math_html_wtr.java | 2 +- .../xowa/xtns/math/texvcs/Texvc_parser.java | 7 +- .../xowa/xtns/pagebanners/Pgbnr_func.java | 18 +- .../xowa/xtns/pagebanners/Pgbnr_func_tst.java | 27 +- .../gplx/xowa/xtns/pagebanners/Pgbnr_itm.java | 46 ++- .../xowa/xtns/pagebanners/Pgbnr_xtn_mgr.java | 3 +- .../xtns/pfuncs/exprs/Pfunc_expr_shunter.java | 6 +- .../xowa/xtns/pfuncs/ifs/Pfunc_iferror.java | 7 +- .../xowa/xtns/pfuncs/ifs/Pfunc_ifexist.java | 3 +- .../xtns/pfuncs/ifs/Pfunc_ifexist_tst.java | 11 +- .../xtns/pfuncs/pages/Pfunc_displaytitle.java | 6 +- .../xowa/xtns/pfuncs/times/Pxd_parser.java | 5 +- .../xtns/pfuncs/ttls/Pfunc_anchorencode.java | 2 +- .../xowa/xtns/pfuncs/ttls/Pfunc_filepath.java | 8 +- .../xowa/xtns/pfuncs/ttls/Pfunc_rel2abs.java | 7 +- .../src/gplx/xowa/xtns/poems/Poem_nde.java | 6 +- .../xtns/proofreadPage/Pp_index_parser.java | 4 +- .../xtns/proofreadPage/Pp_pagelist_nde.java | 2 +- .../proofreadPage/Pp_pagequality_nde.java | 2 +- .../xowa/xtns/proofreadPage/Pp_pages_nde.java | 10 +- .../src/gplx/xowa/xtns/quiz/Quiz_xnde.java | 2 +- 400_xowa/src/gplx/xowa/xtns/rss/Rss_xnde.java | 2 +- .../src/gplx/xowa/xtns/scores/Score_xnde.java | 2 +- .../xtns/scribunto/libs/Scrib_lib_mw.java | 20 +- .../scribunto/libs/Scrib_lib_title_tst.java | 2 + .../xtns/syntax_highlights/Synh_xtn_nde.java | 2 +- .../templateData/Xtn_templateData_nde.java | 2 +- .../xtns/translates/Xop_languages_xnde.java | 6 +- .../xtns/translates/Xop_translate_xnde.java | 6 +- .../xowa/xtns/translates/Xop_tvar_lxr.java | 4 +- .../wdatas/hwtrs/Wdata_fmtr__toc_div.java | 3 +- .../pfuncs/Wdata_pf_property__parse__tst.java | 2 +- .../xtns/wikias/Random_selection_xnde.java | 4 +- .../gplx/xowa/xtns/wikias/Tabber_xnde.java | 4 +- .../gplx/xowa/xtns/wikias/Tabview_xnde.java | 4 +- .../xowa/xtns/xowa_cmds/Xop_xowa_cmd.java | 6 +- .../xtns/xowa_cmds/Xox_xowa_html_cmd.java | 2 +- .../xtns/xowa_cmds/Xox_xowa_html_cmd_tst.java | 6 +- 290 files changed, 3048 insertions(+), 2124 deletions(-) create mode 100644 100_core/src/gplx/core/threads/utils/Gfo_blocking_queue.java create mode 100644 100_core/src/gplx/core/threads/utils/Gfo_countdown_latch.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/dbs/Xomp_db_core.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/dbs/Xomp_mgr_db.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/dbs/Xomp_page_tbl.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/dbs/Xomp_wkr_db.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_html_db_rdr.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_html_db_wtr.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_make_cmd.java create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_make_wkr.java delete mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/makes/Xomp_page_pool.java rename 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/{makes => parses}/Xob_hdump_tbl_retriever__xomp.java (77%) create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_load_wkr.java rename 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/{makes => parses}/Xomp_page_itm.java (76%) create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_page_pool.java rename 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/{makes => parses}/Xomp_page_pool_loader.java (85%) rename 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/{makes => parses}/Xomp_parse_cmd.java (88%) rename 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/{makes => parses}/Xomp_parse_mgr.java (50%) rename 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/{makes => parses}/Xomp_parse_mgr_cfg.java (77%) rename 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/{makes => parses}/Xomp_parse_wkr.java (72%) create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_prog_mgr.java rename 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/{makes => parses}/Xomp_text_db_loader.java (84%) create mode 100644 400_xowa/src/gplx/xowa/addons/bldrs/mass_parses/parses/Xomp_tmpl_cache_bldr.java rename 400_xowa/src/gplx/xowa/{ => addons}/htmls/tocs/Xoh_toc_htmlr.java (79%) rename 400_xowa/src/gplx/xowa/{ => addons}/htmls/tocs/Xoh_toc_htmlr__basic__tst.java (92%) rename 400_xowa/src/gplx/xowa/{ => addons}/htmls/tocs/Xoh_toc_itm.java (86%) rename 400_xowa/src/gplx/xowa/{htmls/tocs/Xoh_toc_wtr.java => addons/htmls/tocs/Xoh_toc_mgr.java} (63%) rename 400_xowa/src/gplx/xowa/{ => addons}/htmls/tocs/Xoh_toc_wkr__lvl.java (93%) rename 400_xowa/src/gplx/xowa/{ => addons}/htmls/tocs/Xoh_toc_wkr__lvl__basic__tst.java (93%) rename 400_xowa/src/gplx/xowa/{ => addons}/htmls/tocs/Xoh_toc_wkr__txt.java (87%) rename 400_xowa/src/gplx/xowa/{ => addons}/htmls/tocs/Xoh_toc_wkr__txt__basic__tst.java (88%) rename 400_xowa/src/gplx/xowa/{ => addons}/htmls/tocs/Xoh_toc_wkr__txt__dupe__tst.java (90%) rename 400_xowa/src/gplx/xowa/{ => addons}/htmls/tocs/Xoh_toc_wkr__txt__xnde__tst.java (85%) rename 400_xowa/src/gplx/xowa/{htmls/tocs/Xow_toc_mgr_tst.java => addons/htmls/tocs/Xowe_hdr_bldr__tst.java} (83%) create mode 100644 400_xowa/src/gplx/xowa/addons/htmls/tocs/Xowe_hdr_bldr_fxt.java create mode 100644 400_xowa/src/gplx/xowa/htmls/Xoh_page_bfr.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/htmls/Xoh_display_ttl_wtr.java rename 400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/{Xoh_tidy_mgr.java => Xoa_tidy_mgr.java} (53%) create mode 100644 400_xowa/src/gplx/xowa/htmls/core/htmls/tidy/Xow_tidy_mgr.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/core/hzips/Xoh_bfr_mgr.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Bfr_arg__pgbnr.java create mode 100644 400_xowa/src/gplx/xowa/htmls/core/wkrs/imgs/Xoh_img_hzip__dump__pgbnr__tst.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/tocs/Xow_hdr_mgr.java delete mode 100644 400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr.java create mode 100644 400_xowa/src/gplx/xowa/parsers/Xop_parser_tid_.java delete mode 100644 400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_tkn_chkr.java create mode 100644 400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang_fxt.java create mode 100644 400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_text_bry_owner.java create mode 100644 400_xowa/src/gplx/xowa/wikis/pages/wtxts/Xopg_toc_mgr.java rename 400_xowa/src/gplx/xowa/{parsers2/Xop_parser_mgr.java => wikis/pages/wtxts/Xopg_wtxt_data.java} (67%) create mode 100644 400_xowa/src/gplx/xowa/xtns/cites/Xoh_ref_list_fmtr.java diff --git a/100_core/src/gplx/core/brys/Bry_bfr_mkr.java b/100_core/src/gplx/core/brys/Bry_bfr_mkr.java index da5fe6d23..0239140a6 100644 --- a/100_core/src/gplx/core/brys/Bry_bfr_mkr.java +++ b/100_core/src/gplx/core/brys/Bry_bfr_mkr.java @@ -16,13 +16,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.brys; import gplx.*; import gplx.core.*; -public class Bry_bfr_mkr { - private final Bry_bfr_mkr_mgr mkr_b128 = new Bry_bfr_mkr_mgr(Tid_b128, 128); - public Bry_bfr Get_b128() {return mkr_b128.Get();} - public Bry_bfr Get_b512() {return mkr_b512.Get();} private final Bry_bfr_mkr_mgr mkr_b512 = new Bry_bfr_mkr_mgr(Tid_b512, 512); - public Bry_bfr Get_k004() {return mkr_k004.Get();} private final Bry_bfr_mkr_mgr mkr_k004 = new Bry_bfr_mkr_mgr(Tid_k004, 4 * Io_mgr.Len_kb); - public Bry_bfr Get_m001() {return mkr_m001.Get();} private final Bry_bfr_mkr_mgr mkr_m001 = new Bry_bfr_mkr_mgr(Tid_m001, 1 * Io_mgr.Len_mb); - public void Rls(Bry_bfr v) {v.Mkr_rls();} +public class Bry_bfr_mkr { + public Bry_bfr Get_b128() {return mkr_b128.Get();} private final Bry_bfr_mkr_mgr mkr_b128 = new Bry_bfr_mkr_mgr(Tid_b128, 128); + public Bry_bfr Get_b512() {return mkr_b512.Get();} private final Bry_bfr_mkr_mgr mkr_b512 = new Bry_bfr_mkr_mgr(Tid_b512, 512); + public Bry_bfr Get_k004() {return mkr_k004.Get();} private final Bry_bfr_mkr_mgr mkr_k004 = new Bry_bfr_mkr_mgr(Tid_k004, 4 * Io_mgr.Len_kb); + public Bry_bfr Get_m001() {return mkr_m001.Get();} private final Bry_bfr_mkr_mgr mkr_m001 = new Bry_bfr_mkr_mgr(Tid_m001, 1 * Io_mgr.Len_mb); public void Clear() { for (byte i = Tid_b128; i <= Tid_m001; i++) mkr(i).Clear(); diff --git a/100_core/src/gplx/core/brys/Bry_bfr_mkr_mgr.java b/100_core/src/gplx/core/brys/Bry_bfr_mkr_mgr.java index 49a09977d..556b3b25c 100644 --- a/100_core/src/gplx/core/brys/Bry_bfr_mkr_mgr.java +++ b/100_core/src/gplx/core/brys/Bry_bfr_mkr_mgr.java @@ -18,15 +18,15 @@ along with this program. If not, see . package gplx.core.brys; import gplx.*; import gplx.core.*; public class Bry_bfr_mkr_mgr { private final Object thread_lock = new Object(); + private final byte mgr_id; private final int reset; private Bry_bfr[] used = Bry_bfr_.Ary_empty; private int used_len = 0, used_max = 0; - private int[] free; private int free_len; private int reset; + private int[] free; private int free_len; public Bry_bfr_mkr_mgr(byte mgr_id, int reset) {// NOTE: random IndexOutOfBounds errors in Get around free[--free_len] with free_len being -1; put member variable initialization within thread_lock to try to avoid; DATE:2014-09-21 this.mgr_id = mgr_id; this.reset = reset; this.free = Int_.Ary_empty; this.free_len = 0; } - public byte Mgr_id() {return mgr_id;} private byte mgr_id; public Bry_bfr Get() { synchronized (thread_lock) { Bry_bfr rv = null; int rv_idx = -1; @@ -62,7 +62,7 @@ public class Bry_bfr_mkr_mgr { for (int i = 0; i < used_max; i++) { Bry_bfr itm = used[i]; if (itm != null) { - if (!itm.Mkr_idx_is_null()) throw Err_.new_wo_type("failed to clear bfr", "idx", Int_.To_str(i)); + if (!itm.Mkr_idx_is_null()) throw Err_.new_wo_type("failed to clear bfr", "mgr_id", mgr_id, "idx", Int_.To_str(i)); itm.Clear(); } used[i] = null; diff --git a/100_core/src/gplx/core/brys/Bry_rdr.java b/100_core/src/gplx/core/brys/Bry_rdr.java index 72a768d64..1a9a7b23c 100644 --- a/100_core/src/gplx/core/brys/Bry_rdr.java +++ b/100_core/src/gplx/core/brys/Bry_rdr.java @@ -19,6 +19,7 @@ package gplx.core.brys; import gplx.*; import gplx.core.*; import gplx.core.errs.*; import gplx.core.btries.*; public class Bry_rdr { private final gplx.core.primitives.Int_obj_ref pos_ref = gplx.core.primitives.Int_obj_ref.New_neg1(); + private final Btrie_rv trv = new Btrie_rv(); public byte[] Src() {return src;} protected byte[] src; public int Src_end() {return src_end;} protected int src_end; public int Pos() {return pos;} protected int pos; @@ -150,8 +151,8 @@ public class Bry_rdr { byte rv = Chk_or(trie, Byte_.Max_value_127); if (rv == Byte_.Max_value_127) err_wkr.Fail("failed trie check", "mid", String_.new_u8(Bry_.Mid_by_len_safe(src, pos, 16))); } - public Object Chk_trie_as_obj(Btrie_slim_mgr trie) { - Object rv = trie.Match_bgn(src, pos, src_end); if (rv == null) err_wkr.Fail("failed trie check", "mid", String_.new_u8(Bry_.Mid_by_len_safe(src, pos, 16))); + public Object Chk_trie_as_obj(Btrie_rv trv, Btrie_slim_mgr trie) { + Object rv = trie.Match_at(trv, src, pos, src_end); if (rv == null) err_wkr.Fail("failed trie check", "mid", String_.new_u8(Bry_.Mid_by_len_safe(src, pos, 16))); return rv; } public byte Chk_or(Btrie_slim_mgr trie, byte or) {return Chk_or(trie, pos, src_end, or);} @@ -161,9 +162,9 @@ public class Bry_rdr { return rv; } public byte Chk_or(Btrie_slim_mgr trie, int itm_bgn, int itm_end, byte or) { - Object rv_obj = trie.Match_bgn(src, itm_bgn, itm_end); + Object rv_obj = trie.Match_at(trv, src, itm_bgn, itm_end); if (rv_obj == null) return or; - pos = trie.Match_pos(); + pos = trv.Pos(); return ((gplx.core.primitives.Byte_obj_val)rv_obj).Val(); } @gplx.Virtual public Bry_rdr Skip_ws() { diff --git a/100_core/src/gplx/core/btries/Btrie_bwd_mgr.java b/100_core/src/gplx/core/btries/Btrie_bwd_mgr.java index 8fa6f491f..2abe2d271 100644 --- a/100_core/src/gplx/core/btries/Btrie_bwd_mgr.java +++ b/100_core/src/gplx/core/btries/Btrie_bwd_mgr.java @@ -23,6 +23,37 @@ public class Btrie_bwd_mgr { Object rv = Match(src[bgn_pos], src, bgn_pos, end_pos); return rv == null ? null : match_pos - bgn_pos == end_pos - bgn_pos ? rv : null; } + + public Object Match_at(Btrie_rv rv, byte[] src, int bgn_pos, int end_pos) {return Match_at_w_b0(rv, src[bgn_pos], src, bgn_pos, end_pos);} + public Object Match_at_w_b0(Btrie_rv rv, byte b, byte[] src, int bgn_pos, int end_pos) { + // NOTE: bgn, end follows same semantics as fwd where bgn >= & end < except reversed: bgn <= & end >; EX: "abcde" should pass 5, -1 + Object rv_obj = null; + int rv_pos = bgn_pos; + int cur_pos = bgn_pos; + Btrie_slim_itm cur = root; + while (true) { + Btrie_slim_itm nxt = cur.Ary_find(b); + if (nxt == null) { // nxt does not have b; return rv_obj; + rv.Init(rv_pos, rv_obj); + return rv_obj; + } + --cur_pos; + if (nxt.Ary_is_empty()) { // nxt is leaf; return nxt.Val() (which should be non-null) + rv_obj = nxt.Val(); + rv.Init(cur_pos, rv_obj); + return rv_obj; + } + Object nxt_val = nxt.Val(); + if (nxt_val != null) {rv_pos = cur_pos; rv_obj = nxt_val;} // nxt is node; cache rv_obj (in case of false match) + if (cur_pos == end_pos) { // increment cur_pos and exit if end_pos + rv.Init(rv_pos, rv_obj); + return rv_obj; + } + b = src[cur_pos]; + cur = nxt; + } + } + public Object Match_bgn(byte[] src, int bgn_pos, int end_pos) {return Match(src[bgn_pos], src, bgn_pos, end_pos);} public Object Match(byte b, byte[] src, int bgn_pos, int end_pos) { // NOTE: bgn, end follows same semantics as fwd where bgn >= & end < except reversed: bgn <= & end >; EX: "abcde" should pass 5, -1 diff --git a/100_core/src/gplx/core/btries/Btrie_fast_mgr.java b/100_core/src/gplx/core/btries/Btrie_fast_mgr.java index 649916bea..9dd0da5da 100644 --- a/100_core/src/gplx/core/btries/Btrie_fast_mgr.java +++ b/100_core/src/gplx/core/btries/Btrie_fast_mgr.java @@ -22,12 +22,7 @@ public class Btrie_fast_mgr { public boolean CaseAny() {return root.CaseAny();} public Btrie_fast_mgr CaseAny_(boolean v) {root.CaseAny_(v); return this;} public int Match_pos() {return match_pos;} private int match_pos; -// Btrie_rv Match_at_w_b0_and_rls(byte[] src, int bgn, int end) {return Match_at_w_b0_and_rls(src[bgn], src, bgn, end);} -// Btrie_rv Match_at_w_b0_and_rls(byte b, byte[] src, int bgn_pos, int src_end) { -// Btrie_rv rv = ((Btrie_rv)Btrie_rv.Pool__mgr.Get_safe()); -// Match_at_w_b0(rv, b, src, bgn_pos, src_end); -// return rv; -// } + public Object Match_at(Btrie_rv rv, byte[] src, int bgn_pos, int end_pos) {return Match_at_w_b0(rv, src[bgn_pos], src, bgn_pos, end_pos);} public Object Match_at_w_b0(Btrie_rv rv, byte b, byte[] src, int bgn_pos, int src_end) { Object rv_obj = null; int rv_pos = bgn_pos; diff --git a/100_core/src/gplx/core/btries/Btrie_mgr.java b/100_core/src/gplx/core/btries/Btrie_mgr.java index 2fe6c6bf0..f05d435ed 100644 --- a/100_core/src/gplx/core/btries/Btrie_mgr.java +++ b/100_core/src/gplx/core/btries/Btrie_mgr.java @@ -18,6 +18,7 @@ along with this program. If not, see . package gplx.core.btries; import gplx.*; import gplx.core.*; public interface Btrie_mgr { int Match_pos(); + Object Match_at(Btrie_rv rv, byte[] src, int bgn_pos, int end_pos); Object Match_bgn(byte[] src, int bgn_pos, int end_pos); Btrie_mgr Add_obj(String key, Object val); Btrie_mgr Add_obj(byte[] key, Object val); diff --git a/100_core/src/gplx/core/btries/Btrie_slim_mgr.java b/100_core/src/gplx/core/btries/Btrie_slim_mgr.java index 86e9ed450..a6be5ecc0 100644 --- a/100_core/src/gplx/core/btries/Btrie_slim_mgr.java +++ b/100_core/src/gplx/core/btries/Btrie_slim_mgr.java @@ -31,7 +31,7 @@ public class Btrie_slim_mgr implements Btrie_mgr { while (true) { Btrie_slim_itm nxt = cur.Ary_find(b); if (nxt == null) { - rv.Init(cur_pos, rv_obj); // nxt does not hav b; return rv_obj; + rv.Init(rv_pos, rv_obj); // nxt does not have b; return rv_obj; return rv_obj; } ++cur_pos; @@ -79,6 +79,14 @@ public class Btrie_slim_mgr implements Btrie_mgr { Object rv_obj = Match_bgn(src, bgn, end); return rv_obj == null ? or : ((Byte_obj_val)rv_obj).Val(); } + public byte Match_byte_or(Btrie_rv trv, byte b, byte[] src, int bgn, int end, byte or) { + Object rv_obj = Match_at_w_b0(trv, b, src, bgn, end); + return rv_obj == null ? or : ((Byte_obj_val)rv_obj).Val(); + } + public byte Match_byte_or(Btrie_rv trv, byte[] src, int bgn, int end, byte or) { + Object rv_obj = Match_at(trv, src, bgn, end); + return rv_obj == null ? or : ((Byte_obj_val)rv_obj).Val(); + } public Btrie_slim_mgr Add_bry_tid(byte[] bry, byte tid) {return (Btrie_slim_mgr)Add_obj(bry, Byte_obj_val.new_(tid));} public Btrie_slim_mgr Add_bry_int(byte[] key, int val) {return (Btrie_slim_mgr)Add_obj(key, Int_obj_val.new_(val));} public Btrie_slim_mgr Add_str_byte(String key, byte val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), Byte_obj_val.new_(val));} diff --git a/100_core/src/gplx/core/btries/Btrie_u8_mgr.java b/100_core/src/gplx/core/btries/Btrie_u8_mgr.java index 3934876fd..7a7d6243c 100644 --- a/100_core/src/gplx/core/btries/Btrie_u8_mgr.java +++ b/100_core/src/gplx/core/btries/Btrie_u8_mgr.java @@ -24,6 +24,37 @@ public class Btrie_u8_mgr implements Btrie_mgr { this.root = new Btrie_u8_itm(Bry_.Empty, null); } public int Count() {return count;} private int count; + public Object Match_at(Btrie_rv rv, byte[] src, int bgn_pos, int end_pos) {return Match_at_w_b0(rv, src[bgn_pos], src, bgn_pos, end_pos);} + public Object Match_at_w_b0(Btrie_rv rv, byte b, byte[] src, int bgn_pos, int end_pos) { + Object rv_obj = null; + int rv_pos = bgn_pos; + int cur_pos = bgn_pos; + Btrie_u8_itm cur = root; + while (true) { + int c_len = Utf8_.Len_of_char_by_1st_byte(b); + int c_end = cur_pos + c_len; + Btrie_u8_itm nxt = cur.Nxts_find(src, cur_pos, c_end, true); + if (nxt == null) { + rv.Init(rv_pos, rv_obj); // nxts does not have key; return rv_obj; + return rv_obj; + } + cur_pos = c_end; + if (nxt.Nxts_is_empty()) { // nxt is leaf; return nxt.Val() (which should be non-null) + rv_obj = nxt.Val(); + rv.Init(cur_pos, rv_obj); + return rv_obj; + } + Object nxt_val = nxt.Val(); + if (nxt_val != null) {rv_pos = cur_pos; rv_obj = nxt_val;} // nxt is node; cache rv_obj (in case of false match) + if (cur_pos == end_pos) { // increment cur_pos and exit if end + rv.Init(rv_pos, rv_obj); + return rv_obj; + } + b = src[cur_pos]; + cur = nxt; + } + } + public int Match_pos() {return match_pos;} private int match_pos; public Object Match_bgn(byte[] src, int bgn_pos, int end_pos) {return Match_bgn_w_byte(src[bgn_pos], src, bgn_pos, end_pos);} public Object Match_bgn_w_byte(byte b, byte[] src, int bgn_pos, int end_pos) { diff --git a/100_core/src/gplx/core/threads/utils/Gfo_blocking_queue.java b/100_core/src/gplx/core/threads/utils/Gfo_blocking_queue.java new file mode 100644 index 000000000..08d33be03 --- /dev/null +++ b/100_core/src/gplx/core/threads/utils/Gfo_blocking_queue.java @@ -0,0 +1,35 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.core.threads.utils; import gplx.*; import gplx.core.*; import gplx.core.threads.*; +import java.util.concurrent.ArrayBlockingQueue; +public class Gfo_blocking_queue { + private final ArrayBlockingQueue queue; + public Gfo_blocking_queue(int capacity) { + this.capacity = capacity; + this.queue = new ArrayBlockingQueue(capacity); + } + public int Capacity() {return capacity;} private final int capacity; + public void Put(Object o) { + try {queue.put(o);} + catch (InterruptedException e) {throw Err_.new_exc(e, "threads", "put interrupted");} + } + public Object Take() { + try {return queue.take();} + catch (InterruptedException e) {throw Err_.new_exc(e, "threads", "take interrupted");} + } +} diff --git a/100_core/src/gplx/core/threads/utils/Gfo_countdown_latch.java b/100_core/src/gplx/core/threads/utils/Gfo_countdown_latch.java new file mode 100644 index 000000000..1845fa8ee --- /dev/null +++ b/100_core/src/gplx/core/threads/utils/Gfo_countdown_latch.java @@ -0,0 +1,32 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012 gnosygnu@gmail.com + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +package gplx.core.threads.utils; import gplx.*; import gplx.core.*; import gplx.core.threads.*; +import java.util.concurrent.CountDownLatch; +public class Gfo_countdown_latch { + private final CountDownLatch latch; + public Gfo_countdown_latch(int count) { + latch = new CountDownLatch(count); + } + public void Countdown() { + latch.countDown(); + } + public void Await() { + try {latch.await();} + catch (InterruptedException e) {throw Err_.new_exc(e, "threads", "await interrupted");} + } +} diff --git a/140_dbs/src/gplx/dbs/Db_conn.java b/140_dbs/src/gplx/dbs/Db_conn.java index 08effb008..5714b79c6 100644 --- a/140_dbs/src/gplx/dbs/Db_conn.java +++ b/140_dbs/src/gplx/dbs/Db_conn.java @@ -39,6 +39,7 @@ public class Db_conn { public void Env_vacuum() {Exec_sql_plog_ntx("vacuuming: url=" + this.Conn_info().Db_api(), "VACUUM;");} public void Meta_tbl_create(Dbmeta_tbl_itm meta) {engine.Meta_tbl_create(meta); engine.Meta_idx_create(Gfo_usr_dlg_.Noop, meta.Idxs().To_ary());} public void Meta_tbl_delete(String tbl) {engine.Meta_tbl_delete(tbl);} + public void Meta_tbl_remake(Db_tbl tbl) {engine.Meta_tbl_delete(tbl.Tbl_name()); tbl.Create_tbl();} public void Meta_tbl_remake(Dbmeta_tbl_itm meta) {engine.Meta_tbl_delete(meta.Name()); engine.Meta_tbl_create(meta);} public void Meta_idx_assert(String tbl, String suffix, String... flds) {if (engine.Meta_idx_exists(tbl + "__" + suffix)) return; this.Meta_idx_create(tbl, suffix, flds);} public void Meta_idx_assert(String tbl, String suffix, Dbmeta_idx_fld... flds) {if (engine.Meta_idx_exists(tbl + "__" + suffix)) return; this.Meta_idx_create(tbl, suffix, flds);} diff --git a/140_dbs/src/gplx/dbs/Db_conn_bldr.java b/140_dbs/src/gplx/dbs/Db_conn_bldr.java index 095344b5d..1afd9c611 100644 --- a/140_dbs/src/gplx/dbs/Db_conn_bldr.java +++ b/140_dbs/src/gplx/dbs/Db_conn_bldr.java @@ -17,26 +17,33 @@ along with this program. If not, see . */ package gplx.dbs; import gplx.*; public class Db_conn_bldr { + private final Object thread_lock = new Object(); // LOCK:synchronized else random failures in Schema_mgr due to diff conn pointing to same db; DATE:2016-07-12 private Db_conn_bldr_wkr wkr; public void Reg_default_sqlite() {wkr = Db_conn_bldr_wkr__sqlite.Instance; wkr.Clear_for_tests();} public void Reg_default_mem() {wkr = Db_conn_bldr_wkr__mem.Instance; wkr.Clear_for_tests();} - public boolean Exists(Io_url url) {return wkr.Exists(url);} - public Db_conn Get(Io_url url) {return wkr.Get(url);} - public Db_conn New(Io_url url) {return wkr.New(url);} + public boolean Exists(Io_url url) {synchronized (thread_lock) {return wkr.Exists(url);}} + public Db_conn Get(Io_url url) {synchronized (thread_lock) {return wkr.Get(url);}} + public Db_conn New(Io_url url) {synchronized (thread_lock) {return wkr.New(url);}} public Db_conn_bldr_data Get_or_new(Io_url url) { - boolean exists = wkr.Exists(url); - Db_conn conn = exists ? Get(url) : New(url); - return new Db_conn_bldr_data(conn, exists); + synchronized (thread_lock) { + boolean exists = wkr.Exists(url); + Db_conn conn = exists ? Get(url) : New(url); + return new Db_conn_bldr_data(conn, exists); + } } public Db_conn Get_or_noop(Io_url url) { - Db_conn rv = wkr.Get(url); - return rv == null ? Db_conn_.Noop : rv; + synchronized (thread_lock) { + Db_conn rv = wkr.Get(url); + return rv == null ? Db_conn_.Noop : rv; + } } public Db_conn Get_or_autocreate(boolean autocreate, Io_url url) { - boolean exists = wkr.Exists(url); - if (exists) return Get(url); - if (autocreate) return New(url); - else throw Err_.new_("dbs", "db does not exist", "url", url.Raw()); + synchronized (thread_lock) { + boolean exists = wkr.Exists(url); + if (exists) return Get(url); + if (autocreate) return New(url); + else throw Err_.new_("dbs", "db does not exist", "url", url.Raw()); + } } public static final Db_conn_bldr Instance = new Db_conn_bldr(); Db_conn_bldr() {} } diff --git a/140_dbs/src/gplx/dbs/metas/parsers/Dbmeta_fld_wkr__base.java b/140_dbs/src/gplx/dbs/metas/parsers/Dbmeta_fld_wkr__base.java index 69142dabf..6c262503c 100644 --- a/140_dbs/src/gplx/dbs/metas/parsers/Dbmeta_fld_wkr__base.java +++ b/140_dbs/src/gplx/dbs/metas/parsers/Dbmeta_fld_wkr__base.java @@ -19,7 +19,7 @@ package gplx.dbs.metas.parsers; import gplx.*; import gplx.dbs.*; import gplx.db import gplx.core.brys.*; import gplx.core.btries.*; abstract class Dbmeta_fld_wkr__base { private byte[] hook; - private final Btrie_slim_mgr words_trie = Btrie_slim_mgr.ci_a7(); + private final Btrie_slim_mgr words_trie = Btrie_slim_mgr.ci_a7(); private int words_len; @gplx.Virtual public int Tid() {return Tid_other;} public void Ctor(byte[] hook, byte[]... words_ary) { @@ -46,47 +46,47 @@ class Dbmeta_fld_wkr__end_comma extends Dbmeta_fld_wkr__base { public Dbmeta_fld_wkr__end_comma() {this.Ctor(Hook);} @Override public int Tid() {return Tid_end_comma;} @Override protected void When_match(Dbmeta_fld_itm fld) {} - private static final byte[] Hook = Bry_.new_a7(","); - public static final Dbmeta_fld_wkr__end_comma Instance = new Dbmeta_fld_wkr__end_comma(); + private static final byte[] Hook = Bry_.new_a7(","); + public static final Dbmeta_fld_wkr__end_comma Instance = new Dbmeta_fld_wkr__end_comma(); } class Dbmeta_fld_wkr__end_paren extends Dbmeta_fld_wkr__base { public Dbmeta_fld_wkr__end_paren() {this.Ctor(Hook);} @Override public int Tid() {return Tid_end_paren;} @Override protected void When_match(Dbmeta_fld_itm fld) {} - private static final byte[] Hook = Bry_.new_a7(")"); - public static final Dbmeta_fld_wkr__end_paren Instance = new Dbmeta_fld_wkr__end_paren(); + private static final byte[] Hook = Bry_.new_a7(")"); + public static final Dbmeta_fld_wkr__end_paren Instance = new Dbmeta_fld_wkr__end_paren(); } class Dbmeta_fld_wkr__nullable_null extends Dbmeta_fld_wkr__base { public Dbmeta_fld_wkr__nullable_null() {this.Ctor(Hook);} @Override protected void When_match(Dbmeta_fld_itm fld) { fld.Nullable_tid_(Dbmeta_fld_itm.Nullable_null); } - private static final byte[] Hook = Bry_.new_a7("null"); - public static final Dbmeta_fld_wkr__nullable_null Instance = new Dbmeta_fld_wkr__nullable_null(); + private static final byte[] Hook = Bry_.new_a7("null"); + public static final Dbmeta_fld_wkr__nullable_null Instance = new Dbmeta_fld_wkr__nullable_null(); } class Dbmeta_fld_wkr__nullable_not extends Dbmeta_fld_wkr__base { public Dbmeta_fld_wkr__nullable_not() {this.Ctor(Hook, Bry_null);} @Override protected void When_match(Dbmeta_fld_itm fld) { fld.Nullable_tid_(Dbmeta_fld_itm.Nullable_not_null); } - private static final byte[] Hook = Bry_.new_a7("not"), Bry_null = Bry_.new_a7("null"); - public static final Dbmeta_fld_wkr__nullable_not Instance = new Dbmeta_fld_wkr__nullable_not(); + private static final byte[] Hook = Bry_.new_a7("not"), Bry_null = Bry_.new_a7("null"); + public static final Dbmeta_fld_wkr__nullable_not Instance = new Dbmeta_fld_wkr__nullable_not(); } class Dbmeta_fld_wkr__primary_key extends Dbmeta_fld_wkr__base { public Dbmeta_fld_wkr__primary_key() {this.Ctor(Hook, Bry_key);} @Override protected void When_match(Dbmeta_fld_itm fld) { fld.Primary_y_(); } - private static final byte[] Hook = Bry_.new_a7("primary"), Bry_key = Bry_.new_a7("key"); - public static final Dbmeta_fld_wkr__primary_key Instance = new Dbmeta_fld_wkr__primary_key(); + private static final byte[] Hook = Bry_.new_a7("primary"), Bry_key = Bry_.new_a7("key"); + public static final Dbmeta_fld_wkr__primary_key Instance = new Dbmeta_fld_wkr__primary_key(); } class Dbmeta_fld_wkr__autonumber extends Dbmeta_fld_wkr__base { public Dbmeta_fld_wkr__autonumber() {this.Ctor(Hook);} @Override protected void When_match(Dbmeta_fld_itm fld) { fld.Autonum_y_(); } - private static final byte[] Hook = Bry_.new_a7("autoincrement"); - public static final Dbmeta_fld_wkr__autonumber Instance = new Dbmeta_fld_wkr__autonumber(); + private static final byte[] Hook = Bry_.new_a7("autoincrement"); + public static final Dbmeta_fld_wkr__autonumber Instance = new Dbmeta_fld_wkr__autonumber(); } class Dbmeta_fld_wkr__default extends Dbmeta_fld_wkr__base { public Dbmeta_fld_wkr__default() {this.Ctor(Hook);} @@ -143,6 +143,6 @@ class Dbmeta_fld_wkr__default extends Dbmeta_fld_wkr__base { return String_.new_a7(src, bgn, end); } @Override protected void When_match(Dbmeta_fld_itm fld) {} - private static final byte[] Hook = Bry_.new_a7("default"); - public static final Dbmeta_fld_wkr__default Instance = new Dbmeta_fld_wkr__default(); + private static final byte[] Hook = Bry_.new_a7("default"); + public static final Dbmeta_fld_wkr__default Instance = new Dbmeta_fld_wkr__default(); } diff --git a/140_dbs/src/gplx/dbs/metas/parsers/Dbmeta_parser__fld.java b/140_dbs/src/gplx/dbs/metas/parsers/Dbmeta_parser__fld.java index e16ffee5b..e24c8d13a 100644 --- a/140_dbs/src/gplx/dbs/metas/parsers/Dbmeta_parser__fld.java +++ b/140_dbs/src/gplx/dbs/metas/parsers/Dbmeta_parser__fld.java @@ -19,6 +19,7 @@ package gplx.dbs.metas.parsers; import gplx.*; import gplx.dbs.*; import gplx.db import gplx.core.brys.*; import gplx.core.btries.*; import gplx.dbs.engines.sqlite.*; public class Dbmeta_parser__fld { + private final Btrie_rv trv = new Btrie_rv(); public Dbmeta_fld_itm Parse_fld(Sql_bry_rdr rdr) { // starts after "(" or ","; EX: "(fld1 int", ", fld2 int"; ends at ")" byte[] name = rdr.Read_sql_identifier(); Dbmeta_fld_tid type = this.Parse_type(rdr); @@ -41,12 +42,12 @@ public class Dbmeta_parser__fld { } return fld; } - Dbmeta_fld_wkr__base type_wkr = (Dbmeta_fld_wkr__base)rdr.Chk_trie_as_obj(fld_trie); + Dbmeta_fld_wkr__base type_wkr = (Dbmeta_fld_wkr__base)rdr.Chk_trie_as_obj(trv, fld_trie); switch (type_wkr.Tid()) { case Dbmeta_fld_wkr__base.Tid_end_comma: case Dbmeta_fld_wkr__base.Tid_end_paren: return fld; default: - rdr.Move_to(fld_trie.Match_pos()); + rdr.Move_to(trv.Pos()); type_wkr.Match(rdr, fld); break; } @@ -54,7 +55,7 @@ public class Dbmeta_parser__fld { } @gplx.Internal protected Dbmeta_fld_tid Parse_type(Bry_rdr rdr) { rdr.Skip_ws(); - Dbmeta_parser__fld_itm type_itm = (Dbmeta_parser__fld_itm)rdr.Chk_trie_as_obj(type_trie); + Dbmeta_parser__fld_itm type_itm = (Dbmeta_parser__fld_itm)rdr.Chk_trie_as_obj(trv, type_trie); rdr.Move_by(type_itm.Word().length); int paren_itms_count = type_itm.Paren_itms_count(); int len_1 = Int_.Min_value, len_2 = Int_.Min_value; diff --git a/140_dbs/src/gplx/dbs/utls/Db_in_wkr__base.java b/140_dbs/src/gplx/dbs/utls/Db_in_wkr__base.java index 2505a73c0..3ba3d2e18 100644 --- a/140_dbs/src/gplx/dbs/utls/Db_in_wkr__base.java +++ b/140_dbs/src/gplx/dbs/utls/Db_in_wkr__base.java @@ -25,7 +25,7 @@ public abstract class Db_in_wkr__base { public void Select_in(Cancelable cancelable, Db_conn conn, int full_bgn, int full_end) { int part_len = Interval(); Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance; - boolean show_progress = this.Show_progress(); + boolean show_progress = this.Show_progress();; for (int part_bgn = full_bgn; part_bgn < full_end; part_bgn += part_len) { int part_end = part_bgn + part_len; if (part_end > full_end) part_end = full_end; diff --git a/400_xowa/src/gplx/core/ios/Io_stream_zip_mgr.java b/400_xowa/src/gplx/core/ios/Io_stream_zip_mgr.java index 605087b37..ed6e8493c 100644 --- a/400_xowa/src/gplx/core/ios/Io_stream_zip_mgr.java +++ b/400_xowa/src/gplx/core/ios/Io_stream_zip_mgr.java @@ -18,9 +18,7 @@ along with this program. If not, see . package gplx.core.ios; import gplx.*; import gplx.core.*; import gplx.core.ios.streams.*; public class Io_stream_zip_mgr { - private final Bry_bfr bfr = Bry_bfr_.Reset(256); private Io_stream_wtr wtr_gzip, wtr_zip, wtr_bzip2; - private Io_stream_rdr rdr_gzip, rdr_zip, rdr_bzip2; public byte[] Zip(byte type, byte[] val) { if (type == Io_stream_.Tid_raw) return val; Io_stream_wtr wtr = Wtr(type); @@ -29,14 +27,13 @@ public class Io_stream_zip_mgr { return wtr.To_ary_and_clear(); } public byte[] Unzip(byte type, byte[] val) { - synchronized (this) { // LOCK:static-obj;rdr_*;necessary; DATE:2016-07-06 - if (type == Io_stream_.Tid_raw) return val; - Io_stream_rdr rdr = Rdr(type); - rdr.Open_mem(val); - return Io_stream_rdr_.Load_all_as_bry(bfr, rdr); - } + if (type == Io_stream_.Tid_raw) return val; + Io_stream_rdr rdr = Rdr(type); + rdr.Open_mem(val); + return Io_stream_rdr_.Load_all_as_bry(Bry_bfr_.New(), rdr); } private Io_stream_wtr Wtr(byte type) { + Bry_bfr bfr = Bry_bfr_.New(); switch (type) { case Io_stream_.Tid_gzip : if (wtr_gzip == null) wtr_gzip = Io_stream_wtr_.new_by_mem(bfr, Io_stream_.Tid_gzip) ; return wtr_gzip.Open(); case Io_stream_.Tid_zip : if (wtr_zip == null) wtr_zip = Io_stream_wtr_.new_by_mem(bfr, Io_stream_.Tid_zip) ; return wtr_zip.Open(); @@ -45,11 +42,11 @@ public class Io_stream_zip_mgr { default : throw Err_.new_unhandled(type); } } - private Io_stream_rdr Rdr(byte type) { + private Io_stream_rdr Rdr(byte type) { // TS.MEM: DATE:2016-07-12 switch (type) { - case Io_stream_.Tid_gzip : if (rdr_gzip == null) rdr_gzip = Io_stream_rdr_.new_by_tid_(Io_stream_.Tid_gzip) ; return rdr_gzip; - case Io_stream_.Tid_zip : if (rdr_zip == null) rdr_zip = Io_stream_rdr_.new_by_tid_(Io_stream_.Tid_zip) ; return rdr_zip; - case Io_stream_.Tid_bzip2 : if (rdr_bzip2 == null) rdr_bzip2 = Io_stream_rdr_.new_by_tid_(Io_stream_.Tid_bzip2) ; return rdr_bzip2; + case Io_stream_.Tid_gzip : return Io_stream_rdr_.new_by_tid_(Io_stream_.Tid_gzip); + case Io_stream_.Tid_zip : return Io_stream_rdr_.new_by_tid_(Io_stream_.Tid_zip); + case Io_stream_.Tid_bzip2 : return Io_stream_rdr_.new_by_tid_(Io_stream_.Tid_bzip2); case Io_stream_.Tid_raw : default : throw Err_.new_unhandled(type); } diff --git a/400_xowa/src/gplx/core/net/Gfo_url_parser.java b/400_xowa/src/gplx/core/net/Gfo_url_parser.java index b8b01a941..9463c356b 100644 --- a/400_xowa/src/gplx/core/net/Gfo_url_parser.java +++ b/400_xowa/src/gplx/core/net/Gfo_url_parser.java @@ -22,6 +22,7 @@ public class Gfo_url_parser { private final Btrie_slim_mgr protocols = Btrie_slim_mgr.ci_a7(); // ASCII:url_protocol; EX:"http:", "ftp:", etc private final Bry_ary segs_ary = new Bry_ary(4), qargs = new Bry_ary(4); private final Bry_bfr tmp_bfr = Bry_bfr_.Reset(500); + private final Btrie_rv trv = new Btrie_rv(); public byte[] Relative_url_protocol_bry() {return Gfo_protocol_itm.Itm_https.Key_w_colon_bry();} // NOTE: https b/c any WMF wiki will now default to WMF; DATE:2015-07-26 public Gfo_url_parser() { Init_protocols(Gfo_protocol_itm.Ary()); @@ -76,8 +77,8 @@ public class Gfo_url_parser { path_bgn = qarg_key_bgn = qarg_val_bgn = anch_bgn = anch_nth_bgn = -1; segs_ary.Clear(); qargs.Clear(); int pos = src_bgn; - Object protocol_obj = protocols.Match_bgn(src, src_bgn, src_end); - pos = protocols.Match_pos(); + Object protocol_obj = protocols.Match_at(trv, src, src_bgn, src_end); + pos = trv.Pos(); pos = Bry_find_.Find_fwd_while(src, pos, src_end, Byte_ascii.Slash); if (protocol_obj == null) { this.protocol_tid = Gfo_protocol_itm.Tid_unknown; diff --git a/400_xowa/src/gplx/core/net/Http_request_parser.java b/400_xowa/src/gplx/core/net/Http_request_parser.java index 6853940f5..80c22abcb 100644 --- a/400_xowa/src/gplx/core/net/Http_request_parser.java +++ b/400_xowa/src/gplx/core/net/Http_request_parser.java @@ -22,7 +22,7 @@ public class Http_request_parser { private int type, content_length; private byte[] url, protocol, host, user_agent, accept, accept_language, accept_encoding, x_requested_with, cookie, referer, content_type, content_type_boundary, connection, pragma, cache_control, origin; private Http_post_data_hash post_data_hash; - private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(255); + private final Bry_bfr tmp_bfr = Bry_bfr_.New_w_size(255); private final Btrie_rv trv = new Btrie_rv(); private final Http_server_wtr server_wtr; private final boolean log; public Http_request_parser(Http_server_wtr server_wtr, boolean log) {this.server_wtr = server_wtr; this.log = log;} public void Clear() { @@ -59,12 +59,12 @@ public class Http_request_parser { } break; // assume form_data sends POST request } - Object o = trie.Match_bgn(line, 0, line_len); + Object o = trie.Match_at(trv, line, 0, line_len); if (o == null) { server_wtr.Write_str_w_nl(String_.Format("http.request.parser; unknown line; line={0} request={1}", line_str, To_str())); continue; } - int val_bgn = Bry_find_.Find_fwd_while_ws(line, trie.Match_pos(), line_len); // skip ws after key; EX: "Host: " + int val_bgn = Bry_find_.Find_fwd_while_ws(line, trv.Pos(), line_len); // skip ws after key; EX: "Host: " int tid = ((Int_obj_val)o).Val(); switch (tid) { case Tid_get: diff --git a/400_xowa/src/gplx/langs/gfs/Gfs_lxr.java b/400_xowa/src/gplx/langs/gfs/Gfs_lxr.java index ea0075ef7..5ce0c5ef3 100644 --- a/400_xowa/src/gplx/langs/gfs/Gfs_lxr.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_lxr.java @@ -27,7 +27,7 @@ class Gfs_lxr_whitespace implements Gfs_lxr { int rv = Gfs_lxr_.Rv_eos, cur_pos; for (cur_pos = end; cur_pos < src_len; cur_pos++) { byte b = src[cur_pos]; - Object o = ctx.Trie().Match_bgn_w_byte(b, src, cur_pos, src_len); + Object o = ctx.Trie().Match_at_w_b0(ctx.Trie_rv(), b, src, cur_pos, src_len); if (o == null) { rv = Gfs_lxr_.Rv_null; ctx.Process_null(cur_pos); @@ -45,7 +45,7 @@ class Gfs_lxr_whitespace implements Gfs_lxr { } return rv; } - public static final Gfs_lxr_whitespace Instance = new Gfs_lxr_whitespace(); Gfs_lxr_whitespace() {} + public static final Gfs_lxr_whitespace Instance = new Gfs_lxr_whitespace(); Gfs_lxr_whitespace() {} } class Gfs_lxr_comment_flat implements Gfs_lxr { public Gfs_lxr_comment_flat(byte[] bgn_bry, byte[] end_bry) { @@ -69,7 +69,7 @@ class Gfs_lxr_identifier implements Gfs_lxr { int pos, rv = Gfs_lxr_.Rv_eos; for (pos = end; pos < src_len; pos++) { byte b = src[pos]; - Object o = ctx.Trie().Match_bgn_w_byte(b, src, pos, src_len); + Object o = ctx.Trie().Match_at_w_b0(ctx.Trie_rv(), b, src, pos, src_len); if (o == null) { // invalid char; stop; rv = Gfs_lxr_.Rv_null; ctx.Process_null(pos); @@ -89,7 +89,7 @@ class Gfs_lxr_identifier implements Gfs_lxr { if (rv == Gfs_lxr_.Rv_eos) ctx.Process_eos(); // eos return rv; } - public static final Gfs_lxr_identifier Instance = new Gfs_lxr_identifier(); Gfs_lxr_identifier() {} + public static final Gfs_lxr_identifier Instance = new Gfs_lxr_identifier(); Gfs_lxr_identifier() {} } class Gfs_lxr_semic implements Gfs_lxr { public int Lxr_tid() {return Gfs_lxr_.Tid_semic;} @@ -103,7 +103,7 @@ class Gfs_lxr_semic implements Gfs_lxr { } return end; } - public static final Gfs_lxr_semic Instance = new Gfs_lxr_semic(); Gfs_lxr_semic() {} + public static final Gfs_lxr_semic Instance = new Gfs_lxr_semic(); Gfs_lxr_semic() {} } class Gfs_lxr_dot implements Gfs_lxr { public int Lxr_tid() {return Gfs_lxr_.Tid_dot;} @@ -115,7 +115,7 @@ class Gfs_lxr_dot implements Gfs_lxr { } return end; } - public static final Gfs_lxr_dot Instance = new Gfs_lxr_dot(); Gfs_lxr_dot() {} + public static final Gfs_lxr_dot Instance = new Gfs_lxr_dot(); Gfs_lxr_dot() {} } class Gfs_lxr_paren_bgn implements Gfs_lxr { public int Lxr_tid() {return Gfs_lxr_.Tid_paren_bgn;} @@ -126,7 +126,7 @@ class Gfs_lxr_paren_bgn implements Gfs_lxr { } return end; } - public static final Gfs_lxr_paren_bgn Instance = new Gfs_lxr_paren_bgn(); Gfs_lxr_paren_bgn() {} + public static final Gfs_lxr_paren_bgn Instance = new Gfs_lxr_paren_bgn(); Gfs_lxr_paren_bgn() {} } class Gfs_lxr_paren_end implements Gfs_lxr { public int Lxr_tid() {return Gfs_lxr_.Tid_paren_end;} @@ -139,7 +139,7 @@ class Gfs_lxr_paren_end implements Gfs_lxr { } return end; } - public static final Gfs_lxr_paren_end Instance = new Gfs_lxr_paren_end(); Gfs_lxr_paren_end() {} + public static final Gfs_lxr_paren_end Instance = new Gfs_lxr_paren_end(); Gfs_lxr_paren_end() {} } class Gfs_lxr_quote implements Gfs_lxr { public Gfs_lxr_quote(byte[] bgn_bry, byte[] end_bry) { @@ -184,7 +184,7 @@ class Gfs_lxr_curly_bgn implements Gfs_lxr { } return end; } - public static final Gfs_lxr_curly_bgn Instance = new Gfs_lxr_curly_bgn(); Gfs_lxr_curly_bgn() {} + public static final Gfs_lxr_curly_bgn Instance = new Gfs_lxr_curly_bgn(); Gfs_lxr_curly_bgn() {} } class Gfs_lxr_curly_end implements Gfs_lxr { public int Lxr_tid() {return Gfs_lxr_.Tid_curly_end;} @@ -192,7 +192,7 @@ class Gfs_lxr_curly_end implements Gfs_lxr { ctx.Stack_pop(bgn); return end; } - public static final Gfs_lxr_curly_end Instance = new Gfs_lxr_curly_end(); Gfs_lxr_curly_end() {} + public static final Gfs_lxr_curly_end Instance = new Gfs_lxr_curly_end(); Gfs_lxr_curly_end() {} } class Gfs_lxr_equal implements Gfs_lxr { public int Lxr_tid() {return Gfs_lxr_.Tid_eq;} @@ -200,7 +200,7 @@ class Gfs_lxr_equal implements Gfs_lxr { ctx.Make_nde(bgn, end).Op_tid_(Gfs_nde.Op_tid_assign); return end; } - public static final Gfs_lxr_equal Instance = new Gfs_lxr_equal(); Gfs_lxr_equal() {} + public static final Gfs_lxr_equal Instance = new Gfs_lxr_equal(); Gfs_lxr_equal() {} } class Gfs_lxr_comma implements Gfs_lxr { public int Lxr_tid() {return Gfs_lxr_.Tid_comma;} @@ -210,5 +210,5 @@ class Gfs_lxr_comma implements Gfs_lxr { } return end; } - public static final Gfs_lxr_comma Instance = new Gfs_lxr_comma(); Gfs_lxr_comma() {} + public static final Gfs_lxr_comma Instance = new Gfs_lxr_comma(); Gfs_lxr_comma() {} } diff --git a/400_xowa/src/gplx/langs/gfs/Gfs_parser.java b/400_xowa/src/gplx/langs/gfs/Gfs_parser.java index 5c96684c5..dc6ee8576 100644 --- a/400_xowa/src/gplx/langs/gfs/Gfs_parser.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_parser.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.langs.gfs; import gplx.*; import gplx.langs.*; import gplx.core.btries.*; public class Gfs_parser { - Btrie_fast_mgr trie = Gfs_parser_.trie_(); - Gfs_parser_ctx ctx = new Gfs_parser_ctx(); + private final Btrie_fast_mgr trie = Gfs_parser_.trie_(); + private final Gfs_parser_ctx ctx = new Gfs_parser_ctx(); public Gfs_nde Parse(byte[] src) { ctx.Root().Subs_clear(); int src_len = src.length; if (src_len == 0) return ctx.Root(); @@ -27,13 +27,13 @@ public class Gfs_parser { int pos = 0; while (pos < src_len) { byte b = src[pos]; - Object o = trie.Match_bgn_w_byte(b, src, pos, src_len); + Object o = trie.Match_at_w_b0(ctx.Trie_rv(), b, src, pos, src_len); if (o == null) ctx.Err_mgr().Fail_unknown_char(ctx, pos, b); else { Gfs_lxr lxr = (Gfs_lxr)o; while (lxr != null) { - int rslt = lxr.Process(ctx, pos, trie.Match_pos()); + int rslt = lxr.Process(ctx, pos, ctx.Trie_rv().Pos()); switch (lxr.Lxr_tid()) { case Gfs_lxr_.Tid_whitespace: break; case Gfs_lxr_.Tid_comment: break; diff --git a/400_xowa/src/gplx/langs/gfs/Gfs_parser_ctx.java b/400_xowa/src/gplx/langs/gfs/Gfs_parser_ctx.java index 16eb0eb7e..6d1abd98c 100644 --- a/400_xowa/src/gplx/langs/gfs/Gfs_parser_ctx.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_parser_ctx.java @@ -19,6 +19,7 @@ package gplx.langs.gfs; import gplx.*; import gplx.langs.*; import gplx.core.btries.*; class Gfs_parser_ctx { public Btrie_fast_mgr Trie() {return trie;} Btrie_fast_mgr trie; + public Btrie_rv Trie_rv() {return trie_rv;} private final Btrie_rv trie_rv = new Btrie_rv(); public Gfs_nde Root() {return root;} Gfs_nde root = new Gfs_nde(); public byte[] Src() {return src;} private byte[] src; public int Src_len() {return src_len;} private int src_len; diff --git a/400_xowa/src/gplx/langs/htmls/Gfh_atr_.java b/400_xowa/src/gplx/langs/htmls/Gfh_atr_.java index 5e841d84f..684039f26 100644 --- a/400_xowa/src/gplx/langs/htmls/Gfh_atr_.java +++ b/400_xowa/src/gplx/langs/htmls/Gfh_atr_.java @@ -50,6 +50,7 @@ public class Gfh_atr_ { , Bry__align = Bry_.new_a7("align") // HTML.v4 , Bry__bgcolor = Bry_.new_a7("bgcolor") // HTML.v4 , Bry__abbr = Bry_.new_a7("abbr") // HTML.ua + , Bry__srcset = Bry_.new_a7("srcset") ; public static byte[] Make(Bry_bfr bfr, byte[] key, byte[] val) { return bfr.Add_byte_space().Add(key).Add_byte_eq().Add_byte_quote().Add(val).Add_byte_quote().To_bry_and_clear(); @@ -66,4 +67,9 @@ public class Gfh_atr_ { bfr.Add_int_variable(val); bfr.Add_byte_quote(); } + public static void Add_double(Bry_bfr bfr, byte[] key, double val) { + bfr.Add_byte_space().Add(key).Add_byte_eq().Add_byte_quote(); + bfr.Add_double(val); + bfr.Add_byte_quote(); + } } diff --git a/400_xowa/src/gplx/langs/htmls/Gfh_tag_.java b/400_xowa/src/gplx/langs/htmls/Gfh_tag_.java index 73da777e1..2bf296e8c 100644 --- a/400_xowa/src/gplx/langs/htmls/Gfh_tag_.java +++ b/400_xowa/src/gplx/langs/htmls/Gfh_tag_.java @@ -65,6 +65,14 @@ public class Gfh_tag_ { // NOTE: not serialized; used by tag_rdr , Id__del = 41 , Id__strike = 42 , Id__tt = 43 + , Id__code = 44 + , Id__wbr = 45 + , Id__center = 46 // en.v:Vandalism_in_progress + , Id__dfn = 47 + , Id__kbd = 48 + , Id__samp = 49 + , Id__ins = 50 + , Id__em = 51 ; public static final byte[] Bry__a = Bry_.new_a7("a") @@ -122,6 +130,14 @@ public class Gfh_tag_ { // NOTE: not serialized; used by tag_rdr .Add_str_int("del" , Id__del) .Add_str_int("strike" , Id__strike) .Add_str_int("tt" , Id__tt) + .Add_str_int("code" , Id__code) + .Add_str_int("wbr" , Id__wbr) + .Add_str_int("center" , Id__center) + .Add_str_int("dfn" , Id__dfn) + .Add_str_int("kbd" , Id__kbd) + .Add_str_int("samp" , Id__samp) + .Add_str_int("ins" , Id__ins) + .Add_str_int("em" , Id__em) ; public static String To_str(int tid) { switch (tid) { @@ -172,6 +188,14 @@ public class Gfh_tag_ { // NOTE: not serialized; used by tag_rdr case Id__del: return "del"; case Id__strike: return "strike"; case Id__tt: return "tt"; + case Id__code: return "code"; + case Id__wbr: return "wbr"; + case Id__center: return "center"; + case Id__dfn: return "dfn"; + case Id__kbd: return "kbd"; + case Id__samp: return "samp"; + case Id__ins: return "ins"; + case Id__em: return "em"; default: throw Err_.new_unhandled(tid); } } @@ -184,8 +208,7 @@ public class Gfh_tag_ { // NOTE: not serialized; used by tag_rdr , I_lhs = Bry_.new_a7("") , I_rhs = Bry_.new_a7("") , P_lhs = Bry_.new_a7("

") , P_rhs = Bry_.new_a7("

") , Pre_lhs = Bry_.new_a7("
")			, Pre_rhs					= Bry_.new_a7("
") - , Div_lhs = Bry_.new_a7("
") , Div_rhs = Bry_.new_a7("
") - , Div_lhs_bgn = Bry_.new_a7("") , Div_rhs = Bry_.new_a7("") , Div_lhs_bgn = Bry_.new_a7("") , Head_lhs_bgn = Bry_.new_a7("") , Style_lhs_w_type = Bry_.new_a7("